您的位置  > 互联网

为什么你从架构图里能看到两个Pull的原因

(以下简称 Proud)的作者 Matt T. Proud 于 2012 年加入公司,他从互联网的监控系统中获得灵感,与另一位工程师 Volz 合作开发了开源 Proud。 后来其他开发者逐渐加入,该项目终于在2015年正式发布。

Puro基于Go语言开发,其架构图如下:

在:

1、如何采集监测数据?

要采集目标(主机或服务)的监控数据,首先必须在要采集的目标上安装采集组件。 这个集合组件被称为。 .io官网上有很多这样的,比如:

()

()

MySQL()

节点/()

()

格罗克

()

这些可以为我们收集目标监控数据,然后传输给。 这时会暴露一个http接口,使用Pull方法通过HTTP协议定期拉取相应的数据。

不过,也提供了Push模式进行数据传输。 通过添加Push中介,可以将数据推送到Push,通过Pull从Push中获取数据。

这就是为什么你可以在架构图中看到两个 Pull。 一是收集器直接拉取数据(pull); 另一种是收集器主动将数据推送到Push,然后主动从Push中拉取数据(pull)。 )。

采集数据的主要流程如下:

1.定期从静态配置的主机或服务发现(、DNS SRV等)中提取数据

2. 当新拉取的数据大于配置的内存缓存区域时,数据将持久化到磁盘或远程到云端。

3.通过API等可视化组件展示数据。

4.您可以配置规则,然后定期查询数据。 当条件触发时,警报将推送至配置的警报。

5. 当收到告警时,根据配置进行聚合、去重、去噪,最后发出警告。

2. 采集数据结构及指标类型 2.1 数据结构

了解的数据结构对于了解整个生态非常重要。 Pro 使用键值对作为其基本数据结构:

Key是指标的名称,Value是指标的值。 另外(元信息)也很重要,也可以称为(标签信息)。 该标签信息指定了当前值属于哪个云区域的哪台机器。 否则,数据可能会丢失。

2.2 指标类型

中有4种基本的监控指标:

1.(柜台):

计数器是我们最简单的指标类型。 例如,如果您想统计某个网站上的 HTTP 错误总数,请使用计数器。

计数器的值只能增加或重置为0,因此特别适合统计某一段时间内某一时刻出现的次数,即指标随时间的变化情况。

2.

可用于处理随时间增加或减少的指标,例如内存变化和温度变化。

这可能是最常见的指标类型,但它也有一定的缺点:如果系统每 5 秒发送一次指标,而通用服务每 15 秒获取一次数据,则在此期间可能会丢失一些指标。 如果根据这些数据进行汇总分析和计算,结果的准确性就会下降。

3.(直方图)

直方图是一种更复杂的度量类型。 它为我们的指标提供了额外的信息,例如观察值的总和及其数量,并且通常用于跟踪事件的规模。

例如,为了监控性能指标,我们希望在 20% 的服务器请求响应时间超过 300 毫秒时发送警报。 对于涉及比例的指标,可以考虑使用直方图。

4.(摘要)

摘要更高级一些,是直方图的扩展。 除了提供观测值的总和和计数之外,它们还提供滑动窗口上的分位数度量。 分位数是将概率密度划分为相等概率范围的方法。

比较直方图:

1. 直方图总结随时间变化的值,提供求和和计数函数,可以轻松查看给定指标的趋势。

2. 摘要给出了滑动窗口上的分位数(即随时间变化)。

3. 实例概念

随着分布式架构的不断发展和云解决方案的普及,如今的架构变得越来越复杂。

分布式服务器复制和分发已成为日常架构的重要组成部分。 我们以一个经典的Web架构为例,它由3个后端Web服务器组成。 在此示例中,我们要监控 Web 服务器返回的 HTTP 错误数。

使用语言,单个Web服务器单元称为实例(主机实例)。 任务是计算所有实例的 HTTP 错误数。

事实上,这甚至可以说是最简单的架构。 如果更复杂的话,实例不仅可以是主机实例,还可以是服务实例,所以需要添加标签来标记主机或服务。

更复杂一点的是,同一个IP可能存在于不同的云区域,属于不同的机器,所以需要一个云标签。 最终数据结构可能会变成:

{作业=“1”,=“128.0.0.1”,云=“0”,=“0”}

4. 数据可视化

如果您使用过基于 . 还拥有自己的内置 SQL 查询语言,用于查询和检索数据。 这种内置语言是。

正如我们之前所说, 数据由键值对表示。 查询和返回结果集也使用相同的语法。

将处理两种类型的向量:

瞬时向量:表示当前时刻某个指标的数据向量。

时间范围向量:表示某个指标在过去一定时间范围内的数据向量。

以8核CPU的使用情况为例:

一旦您知道如何提取数据,将其可视化就很容易了。

它是一个大型可视化系统,功能强大,足以创建您自己的自定义面板,支持多种数据源,当然也支持 。

通过配置数据源,将使用相应的SQL来拉取和绘制图表,可以直接看到的各种指标数据图表:

更方便的是,有很多仪表板模板供您使用。 只要对模板进行简单的配置,就可以得到如下效果:

5、应用前景

功能非常强大,可以应用到各行各业。

5.1

为了观察整个服务系统是否正常运行,运维需要监控系统。 在实例创建与销毁一样快的容器世界中,为各种容器灵活配置监控项并快速安装并启动监控非常重要。

5.2 金融业

金融服务巨头 Trust 在 2017 年 6 月选择了 ,不是为了应用程序监控,而是为了更好地了解其某些硬件的运行情况。 Trust 使用 监控其平台上的 750 多个微服务。

5.3汽车行业

它是一款用于定位、驾驶安全以及家庭成员之间共享信息的移动应用程序。 他们需要为用户提供稳定的定位服务,但原有的监控方案非常有限,无法监控所有部件的工作状态。

因此该公司使用 来监控其 MySQL 多主集群和一个可容纳约 4TB 数据的 12 节点环。 在初始测试中表现良好。

在对 进行有限部署后,该公司报告在监控方面取得了巨大改进,并设想在其数据中心基础设施的其他部分使用它。

总而言之,像这样的分布式监控系统在未来的世界中可能会变得越来越有用。 它可能会成为监控领域的寡头。 我希望我们能够熟悉这个工具并在未来的架构中使用它。 并在实践中使用它来解决系统和应用程序监控问题。

我们的文章到这里就结束了。 如果您喜欢今天的实用教程,请继续关注实用指南。

如果您有任何疑问,可以在公众号后台回复:进群,回答红字对应的验证信息,进入互助群提问。

原创并不容易。 希望大家能够点赞并观看下面的内容,以支持我继续创作。 谢谢你!