加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 策划 > 正文

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

发布时间:2019-10-17 09:54:29 所属栏目:策划 来源:崔皓
导读:副标题#e# 由于业务的多样性,平台和系统也变得异常的复杂。如何对其进行监控和维护是我们 IT 人需要面对的重要问题。就在这样一个纷繁复杂的环境下,监控系统粉墨登场了。 今天,我们会对 IT 监控系统进行介绍,包括其功能,分类,分层;同时也会介绍几款流

针对每个调用的动作,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 层往后,每下一层容量增大十倍。

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

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

监控系统的分层

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

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

监控系统分层示意图

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读