基于时序数据库做监控,这里有超流行的开源方案

在微服务架构下,我们对服务进行了拆分,所以用户的每次请求不再是由某一个服务独立完成了,而是变成了多个服务一起配合完成。这种情况下,一旦请求出现异常,我们必须得知道是在哪个服务环节出了故障,就需要对每一个服务,以及各个指标都进行全面的监控。

一、什么是「 监控系统 」?

在微服务架构中,监控系统按照原理和作用大致可以分为三类(并非严格分类,仅从日常使用角度来看):

  • 日志类(Log);
  • 调用链类(Tracing);
  • 度量类(Metrics)。

下面来分别对这三种常见的监控模式进行说明。1、日志类

日志类比较常见,我们的框架代码、系统环境,以及业务逻辑中一般都会产出一些日志,这些日志我们通常把它记录后统一收集起来,方便在需要的时候进行查询。

日志类记录的信息一般是一些事件、非结构化的一些文本内容。日志的输出和处理的解决方案比较多,大家熟知的有ELK Stack方案(Elasticseach + Logstash + Kibana),如图:

使用Beats(可选)在每台服务器上安装后,作为日志客户端收集器,然后通过Logstash进行统一的日志收集、解析、过滤等处理,再将数据发送给Elasticsearch中进行存储分析,最后使用Kibana来进行数据的展示。

当然还可以升级方案为:

这些方案都比较成熟,搭建起来也比较简单,除了用作监控系统以外,还可以作为日志查询系统使用,非常适用于做分析、以及问题调试使用。2、调用链类(Tracing)

调用链类监控主要是指记录一个请求的全部流程。一个请求从开始进入,在微服务中调用不同的服务节点后,再返回给客户端,在这个过程中通过调用链参数来追寻全链路行为。通过这个方式可以很方便的知道请求在哪个环节出了故障,系统的瓶颈在哪儿。

这一类的监控一般采用CAT工具 来完成,一般在大中型项目较多用到,因为搭建起来有一定的成本。后面会有单独文章来讲解这个调用链监控系统。

这也是简单的容错方式。就是指在服务之间调用时,设置一个主动超时时间,超过了这个时间阈值后,如果“被依赖的服务”还没有返回数据的话,“调用者”就主动放弃,防止因“被依赖的服务”的故障所影响。3、度量类(Metrics)

度量类主要采用时序数据库的解决方案。它是以事件发生时间以及当前数值的角度来记录的监控信息,是可以聚合运算的,用于查看一些指标数据和指标趋势。所以这类监控主要不是用来查问题的,主要是用来看趋势的。

Metrics一般有5种基本的度量类型:

  • Gauges(度量);
  • Counters(计数器);
  • Histograms(直方图);
  • Meters(TPS计算器);
  • Timers(计时器)。

基于时间序列数据库的监控系统是非常适合做监控告警使用的,所以现在也比较流行这个方案,如果我们要搭建一套新的监控系统,我也建议参考这类方案进行。

因此本文接下来也会重点以时间序列数据库的监控系统为主角来描述。

二、「 监控系统 」关注的对象和指标都是什么?

一般我们做「监控系统」都是需要做分层式监控的,也就是说将我们要监控的对象进行分层,一般主要分为:

  • 系统层:系统层主要是指CPU、磁盘、内存、网络等服务器层面的监控,这些一般也是运维同学比较关注的对象;
  • 应用层:应用层指的是服务角度的监控,比如接口、框架、某个服务的健康状态等,一般是服务开发或框架开发人员关注的对象;
  • 用户层:这一层主要是与用户、与业务相关的一些监控,属于功能层面的,大多数是项目经理或产品经理会比较关注的对象。

知道了监控的分层后,我们再来看一下监控的指标一般有哪些:

  • 延迟时间:主要是响应一个请求所消耗的延迟,比如某接口的HTTP请求平均响应时间为100ms;
  • 请求量:是指系统的容量吞吐能力,例如每秒处理多少次请求(QPS)作为指标;
  • 错误率:主要是用来监控错误发生的比例,比如将某接口一段时间内调用时失败的比例作为指标。

三、基于时序数据库的「 监控系统 」有哪些?

下面介绍几款目前业内比较流行的基于时间序列数据库的开源监控方案。1、Prometheus

Prometheus是一款2012年开源的监控框架,其本质是时间序列数据库,由Google前员工所开发。

Prometheus采用拉的模式(Pull)从应用中拉取数据,并还支持Alert模块可以实现监控预警。它的性能非常强劲,单机可以消费百万级时间序列。

架构如下:

从看图的左下角可以看到,Prometheus可以通过在应用里进行埋点后Pull到Prometheus Server里,如果应用不支持埋点,也可以采用exporter方式进行数据采集。

从图的左上角可以看到,对于一些定时任务模块,因为是周期性运行的,所以采用拉的方式无法获取数据,那么Prometheus也提供了一种推数据的方式,但是并不是推送到Prometheus Server中,而是中间搭建一个Pushgateway,定时任务模块将metrics信息推送到这个Pushgateway中,然后Prometheus Server再依然采用拉的方式从Pushgateway中获取数据。

需要拉取的数据既可以采用静态方式配置在Prometheus Server中,也可以采用服务发现的方式(即图的中上方Service discovery所示)。

PromQL:是Prometheus自带的查询语法,通过编写PromQL语句可以查询Prometheus里面的数据。

Alertmanager:是用于数据的预警模块,支持通过多种方式去发送预警。

WebUI:是用来展示数据和图形的,但是一般大多数是与Grafana结合,采用Grafana来展示。2、OpenTSDB

OpenTSDB是在2010年开源的一款分布式时序数据库,当然其主要用于监控方案中。

OpenTSDB采用的是HBase的分布式存储,它获取数据的模式与Prometheus不同,采用的是推模式(Push)。

在展示层,OpenTSDB自带有WebUI视图,也可以与Grafana很好的集成,提供丰富的展示界面。

但OpenTSDB并没有自带预警模块,需要自己去开发或者与第三方组件结合使用。

可以通过下图来了解一下OpenTSDB的架构:

3、InfluxDB

InfluxDB是在2013年开源的一款时序数据库,在这里我们主要还是用于做监控系统方案。它收集数据也是采用推模式(Push)。在展示层,InfluxDB也是自带WebUI,也可以与Grafana集成。

以上,就是我对微服务架构中「 监控系统」的一些思考。

Image placeholder
cqleohu
未设置
  12人点赞

没有讨论,发表一下自己的看法吧

推荐文章
百度时序数据库——存储的省钱之道

作者简介:任杰  百度高级研发工程师负责百度智能运维产品(Noah)的分布式时序数据存储设计研发工作,在大规模分布式存储、NoSQL数据库方面有大量实践经验。干货概览百度Noah平台的TSDB,是百度

分布式时序数据库QTSDB的设计与实现

现有的开源时序数据库influxdb只支持单机运行,在面临大量数据写入时,会出现查询慢,机器负载高,单机容量的限制。为了解决这一问题,360基础架构团队在单机influxdb的基础上,开发了集群版——

时序数据库的秘密 —— 快速检索

Elasticsearch是通过Lucene的倒排索引技术实现比关系型数据库更快的过滤。特别是它对多条件的过滤支持非常好,比如年龄在18和30之间,性别为女性这样的组合查询。倒排索引很多地方都有介绍,

最流行的十大开源云监控工具

Linux系统在企业中的应用程度已经非常广泛,人们听到过太多关于Docker和Kubernetes的消息,以至于忘记了监控和日志记录也是同样重要的任务。Docker持续发展,随之而来的是围绕它构建的服

最流行的 Go Web 框架: GitHub Star 数量排行(2019)

搜索到了这个资源,可以一目了然地看到GitHub上GoWeb框架受欢迎程度,分享给大家。项目名称 GitHubStar数 创建年份 gin 33177 2014 beego 22599 2012 ir

2019年流行的6大顶级DevOps工具

DevOps作为对开发和运维人员都极为重要的系统,有望在2019年甚至更长时间内保持稳定增长。事实上,据IDC预测,到2022年,全球DevOps软件市场将达到80亿美元,比2017年的39亿美元有所

Flink流式计算在节省资源方面的简单分析

关于Flink流式计算节省资源方面你必须知道的技巧小米在流式计算方面经历了Storm、SparkStreaming和Flink的发展历程;从2019年1月接触Flink到现在,已经过去了大半年的时间了

做机器学习项目数据不够?这里有5个不错的解决办法

许多开展人工智能项目的公司都具有出色的业务理念,但是当企业AI团队发现自己没有足够多的数据时,就会慢慢变得十分沮丧……不过,这个问题的解决方案还是有的。本文将简要介绍其中一些经笔者实践证明确实有效的办

我从来不觉得程序员是吃青春饭的!这里有169万份分析数据

阅读本文约需要5分钟程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到30岁,然后就需要转型。在很多面试中,问到应聘者未来的规划都能听到好些应聘都说程序员是个青春饭。因为,大多

2019年8月数据库流行度排行:双星闪耀 MySQL 成月度最大赢家

炎炎夏日,DB-Engines的8月榜单已经发布,本月积分MySQL获得了最显著的增长,较上月增加了24分,Oracle获得了18分的增长,Oracle公司的两个王牌产品,闪耀8月。以下是前10名的榜

2019年9月数据库流行度排行:MySQL 强劲增长完成深 V 反转

导读:DB-Engines的2019年9月数据库流行度排行榜已经发布,本月最耀眼的明星是MySQL,分值大幅增长25.39分,较年初已经上升了125分,增幅达10%,完成了一次深V反转。相较之下,Or

2019年7月数据库流行度排行:Oracle王者归来获大幅增长

2019已然走过一半,DB-Engines的数据库流行度排行榜7月出炉,这可以算是数据库流行度的半年报了。7月的明星产品是Oracle,其积分大幅增长了22分,较去年同期增长了43分,这说明Oracl

日志监控实践 – 监控Agent集成Lua引擎实现多维度日志采集

作者简介:董涵   百度资深研发工程师负责百度智能运维(Noah)服务管理和分布式监控架构研发工作,在分布式系统和大规模数据处理、可用性工程方向有广泛的实践经验。干货概览对于互联网行业来说,最有价值的

你真的了解 React 吗?这里有 50 个 React 面试问题

如果你是一位有理想的前端开发人员,并且正在准备面试,那么这篇文章就是为你准备的。本文收集了React面试中最常见的50大问题,这是一份理想的指南,让你为React相关的面试做好充分的准备工作。首先我

平安科技数据库总经理汪洋:开源数据库在平安的应用实践

本文转自| 平安科技数据库产品团队2019年5月9日,平安科技数据库产品及存储产品部总经理在第十届数据库技术大会DTCC上分享了《开源数据库在平安的应用实践》,本文根据演讲内容整理,围绕以下几个方面进

开源监控系统Prometheus的前世今生

Prometheus是SoundCloud公司开源的监控系统,同时也是继Kubernetes之后,第二个加入CNCF的项目。Prometheus是一个优秀的监控系统,沃趣围绕着Prometheus先后

在云、AI时代,传统应用性能监控方案过时了吗?

近年来,企业云对IT复杂性产生巨大影响,越来越多的企业需要能够解决云复杂性上升或加速数字化转型的有效方案,而人工智能正在成为解决这些问题的不二之选。在全球智能运维浪潮下,不少公司都选择重写代码,颠覆自

助力平安城市 新华三安防监控解决方案解读

大家应该都有看过警匪片,在影视片段中警察通过视频监控能够对城市的各个角落进行全局监控,并对犯罪分子进行实时追踪。为城市治安防控以及案件侦破提供了极大便利。而在现实生活中,视频监控系统也的确有着非常重要

RTSP-ONVIF协议安防视频监控流媒体服务解决方案EasyNVR在Windows重启时提示“进程意外终止”问题解析

什么是ONVIFOpenNetworkVideoInterfaceForum,开放型网络视频接口论坛,以公开、开放的原则共同制定开放性行业标准。是一个提供开放网络视频接口的论坛组织。ONVIF规范描述

“加班文化”到底是如何流行起来的

        说起互联网行业,大家最先想到的都是弹性工作制度,薪资诱人,夜宵福利,晚上报销打车费这些标签,但是作为一个扎根互联网行业的资深战士。我只想告诉大家,这些福利,都是在为互联网行业的陋习:“

我在 GitHub 上看到了一个丧心病狂的开源项目!

有人说,写作是少数可随时间推移而不过时的技能之一。但实际情况是,尽管许多人在写作这条道路都做出了尝试,可最终坚持下来的只有极少部分人。在这当中,导致他们放弃或停止写作的最大一个原因就是:拖!延!症!。

TF中文社区之下,国内云网络的开源之路

北国的冬,似乎比想象中要来得晚一些。立冬前夕,阳光还未褪去金秋的温婉,碧云黄叶,书香意气,充盈在山东大学(青岛校区)的校园里。迎着温暖的阳,和煦的风,中国开源云网络的种子在这里生根发芽——Tungst

一文告诉你全世界最顶级的开发者都在使用什么数据库

作为一名IT行业从业者,其实从去年已经隐隐约约感觉到数据库的有变化,只是没有想到变得这么快。今年的一些事情实实在在地给了某些数据库重击,如果以前去某数据库还是喊喊,然后该用还用,今年从传统领域刮起的去

MySQL 亿级数据数据库优化方案测试-银行交易流水记录的查询

作者:逸宸a链接:https://www.jianshu.com/p/cbdef47fb837对MySQL的性能和亿级数据的处理方法思考,以及分库分表到底该如何做,在什么场景比较合适?比如银行交易流水

基于Pandas+ECharts的金融大数据可视化实现方案

前言最近无意中看到一篇文章,介绍的是在IPythonNotebook里实现ECharts的可视化效果。我个人对ECharts一直是推崇有加,是baidu发布的开源项目中我比较喜欢的一个,绝对是良心之作