设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 运营中心 > 建站资源 > 策划 > 正文

聊一聊几款流行监控系统,你知道几个?(2)

发布时间:2019-10-16 13:37 所属栏目:20 来源:崔皓
导读:针对每个调用的动作,Sleuth 都做了标示如下: Server Received 是服务器接受,也就是服务端接受到请求的意思。 Client Sent 是客户端发送,也就是这个服务本身不提供响应,需要调用其他的服务提供该响应,所以这个

针对每个调用的动作,Sleuth 都做了标示如下:

  • Server Received 是服务器接受,也就是服务端接受到请求的意思。
  • Client Sent 是客户端发送,也就是这个服务本身不提供响应,需要调用其他的服务提供该响应,所以这个时候是作为客户端发起请求的。
  • Server Sent 是服务端发送,看上图SERVICE 3 收到请求后,由于他是最终的服务提供者,所以作为服务端,他需要把请求发送给调用者。
  • Client Received 是客户端接收,作为发起调用的客户端接受到服务端返回的请求。

实际上 Sleuth 就是通过上述方式把每次请求记录一个统一的 Trace ID,每个请求的详细步骤记作 Span ID。

每次发起请求或者接受请求的状态分别记录成 Server Received,Client Sent,Server Sent,Client Received 四种状态来完成这个服务调用链路的跟踪的。

聊一聊几款流行监控系统,你知道几个?

Sleuth 服务调用追踪图例

在调用服务的链路上每个被调用的服务节点都会通过 Parent ID 来记录发起调用服务的 Span ID,由于 Span ID 是唯一确认最小服务单元的,所以知道了 Parent 的 Span ID 也就知道了谁调用自己了。

度量类

实现了时序数据库(TimeSeriesData,TSD)的监控方案。实际上就是记录一串以时间为维度的数据,然后再通过聚合运算,查看指标数据和指标趋势。说白了,就是描述某个被测主体在一段时间内的测量值变化(度量)。

由于 IT 基础设施,运维监控和互联网监控的特性,这种方式被广泛应用。一般对时序数据进行建模分为三个部分,分别是:主体,时间点和测量值。

通过这个例子来看一下,时序数据库的数学模型,例如:需要监控服务器的 In/Out 平均流量:

  • 整个监控的数据库称为“Metric”,它包含了所有监控的数据。类似关系型数据库中的 Table。
  • 每条监控数据,称为“Point”,类似于关系型数据库中的 Row 的概念。
  • 每个“Point”都会定义一个时间戳“Timestamp”,将其作为索引,表明数据采集的时间。
  • “Tag”作为维度列,表示监控数据的属性。
  • “Field”作为指标列,作为测量值,也就是测量的结果。

聊一聊几款流行监控系统,你知道几个?

时序数据库数据模型图例

时序数据库的存储原理,关系型数据库存储采用的是 B tree,虽然降低了数据查询的磁盘寻道时间,但是无法解决大量数据写入时的磁盘效率。

由于监控系统的应用场景,经常会遇到大批量的数据写入,所以我们会选择 LSMtree(Log Structured Merge Tree)存储时序数据库。

LSMtree(Log Structured Merge Tree),从字面意义上理解,记录的数据按照日志结构(Log Structured)追加到系统中,然后通过合并树(Merge Tree)的方式将其合并。

来看一个 LevelDB 的例子,方便我们理解,LSM-tree 被分成三种文件:

  • 接收写入请求的 memtable 文件(内存中)
  • 不可修改的 immutable memtable 文件(内存中)
  • 磁盘上的 SStable文件(Sorted String Table),有序字符串表,这个有序的字符串就是数据的key。SStable 一共有七层(L0 到 L6)。下一层的总大小限制是上一层的 10 倍。

聊一聊几款流行监控系统,你知道几个?

LSMtree LevelDB 存储示意图

LSMtree 写入流程:

  • 将数据追加到日志 WAL(Write Ahead Log)中,写入日志的目的是为了防止内存数据丢失,可以及时恢复。
  • 把数据写到 memtable 中。
  • 当 memtable 满了(超过一定阀值),就将这个 memtable 转入 immutable memtable 中,用新的 memtable 接收新的数据请求。
  • immutablememtable 一旦写满了, 就写入磁盘。并且先存储 L0 层的 SSTable 磁盘文件,此时还不需要做文件的合并。

每层的所有文件总大小是有限制的(8MB,10MB,100MB… 1TB)。从 L1 层往后,每下一层容量增大十倍。

  • 某一层的数据文件总量超过阈值,就在这一层中选择一个文件和下一层的文件进行合并。

如此这般上层的数据都是较新的数据,查询可以从上层开始查找,依次往下,并且这些数据都是按照时间序列存放的。

监控系统的分层

谈完了监控系统的分类,再来聊聊监控系统的分层。用户请求到数据返回,经历系统中的层层关卡。

聊一聊几款流行监控系统,你知道几个?

监控系统分层示意图

一般我们将监控系统分为五层来考虑,当然也有人分成三层,大致的意思都差不多,仅供参考:

  • 客户端监控,用户行为信息,业务返回码,客户端性能,运营商,版本,操作系统等。
  • 业务层监控,核心业务的监控,例如:登录,注册,下单,支付等等。
  • 应用层监控,相关的技术参数,例如:URL 请求次数,Service 请求数量,SQL 执行的结果,Cache 的利用率,QPS 等等。
  • 系统层监控,物理主机,虚拟主机以及操作系统的参数。例如:CPU 利用率,内存利用率,磁盘空间情况。
  • 网络层监控,网络情况参数。例如:网关流量情况,丢包率,错包率,连接数等等。

流行的监控系统

前面讲了监控系统的功能,分类,分层,相信大家对 IT 监控系统都有一定的了解了。

接下来,我们来看看有哪些优秀实践。这里介绍两个比较流行的监控系统:

  • Zabbix
  • Prometheus

Zabbix

Zabbix 是一款企业级的分布式开源监控方案。它由 Alexei Vladishev 创建,由 Zabbix SIA 在持续开发和支持。

Zabbix 能够监控网络参数,服务器健康和软件完整性。它提供通知机制,允许用户配置告警,从而快速反馈问题。

基于存储的数据,Zabbix 提供报表和数据可视化,并且支持主动轮询和被动捕获。它的所有报告、统计信息和配置参数都可以通过 Web 页面访问。

Zabbix 的 API 功能,完善度很高,大部分操作都提供了 API 接口,方便和现有系统整合。

例如:通过历史数据查询 API,获取线上服务器使用情况,生成报表;设置条件,对问题服务器和问题业务进行筛选,加入告警。

利用 Zabbix graph 的 API,生成关键指标趋势图,方便运维人员实时了解系统情况。利用告警添加 API,让监控系统和部署系统联动。

比如新部署了一个新实例,那么自动添加所需要的监控策略;反之,下线一个实例,就删除关联的监控策略。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读