您的位置  > 互联网

以神之名命名的监控系统究竟怎么样呢?

在希腊神话中,普罗米修斯是最智慧的神之一,也是泰坦的后裔。 他的名字的意思是“远见”。 那么以这个名字命名的监控系统是什么呢? 今天虫虫就给大家介绍一下这个以上帝命名的监控系统。

普罗米修斯简介()

它是一个时间序列数据库。 然而,它不仅仅是一个时间序列数据库。

它涵盖了可捆绑的工具集及其功能的整个生态系统。

主要用于基础设施监控。 包括服务器、数据库、VPS,几乎所有东西都可以通过监控。 想要通过对配置中定义的某些端点进行 HTTP 调用来检索指标。

例如,如果我们以 :3000 的 Web 应用程序为例,您的应用程序将在特定 URL(例如:3000/)中以纯文本形式公开指标。 从该 URL 开始,将在给定的有效间隔内从此目标提取数据。

工作准则?

如前所述,它由各种不同的组件组成。 其监控指标可以从系统中提取,可以通过不同的方式完成:

应用程序针对给定监控项目的给定公共 URL 的兼容指标。 将其定义为目标并将其添加到监控系统中。

通过使用云厂商的内置程序,将定义整套监控项和监控工具。 例如Linux机器监控模板(节点导出器)、数据库模板(SQL导出器或导出器)、HTTP代理或加载程序模板(如导出器)都可以直接添加到监控中使用。

通过使用:应用程序或作业不直接公开指标。 某些应用程序要么没有合适的监控模板(例如批处理作业),要么选择不通过应用程序直接公开这些指标。 如果我们忽略您可能使用的罕见情况,它是一个基于主动请求拉取的监控系统。

推拉方法

与其他时间序列数据库有一个明显的区别:目标被主动过滤,以便从中检索指标。 这与必须直接向其推送数据有很大不同。

基于推的方法和基于拉的方法都有各自的优点和缺点。 采用主动拉动方式主要基于以下考虑:

启用集中控制:如果向其目标发出查询,则整个配置将在服务器端完成,而不是在单个目标上完成。 确定该值和该值的频率。

使用基于推送的系统,您面临向服务器发送过多数据的风险,这可能会导致服务器崩溃。 基于拉动的系统可以通过灵活的多级过期配置实现速率控制,因此可以针对不同的目标实现多个速率。

存储聚合指标

与其他时间序列数据库不同,它不是基于事件的系统。 它并不是旨在及时捕获单个临时事件(例如服务中断),而是旨在收集有关服务的预先聚合的指标。 具体来说,它不会从Web服务发送404错误消息以及错误消息的具体内容,而是对这些消息进行处理和聚合指标。这与其他收集“原始消息”的时间序列数据库的基本区别

生态系统

主要功能仍然是时间序列数据库。 然而,在使用时间序列数据库时,它们会以自定义方式进行可视化、分析和警报。

该生态系统拥有功能丰富的工具集:

:通过配置文件中定义的自定义规则推送报警信息。 可以导出到多个端点,例如Slack等。

数据可视化:与 、 等类似,时间序列数据可以直接在 Web UI 中可视化。 轻松过滤、查看不同监控目标的信息。

服务发现:可以动态发现监控目标,并根据需要自动丢弃目标。 当在云架构中使用具有动态变化地址的容器时,这尤其方便。

技术原理及组成键值数据模型

在开始使用该工具之前,了解数据模型非常重要。 使用键值对。 键描述了在测量值时将实际测量结果存储为数字的值。

注意:不存储日志文本等原始信息,但会存储随时间推移聚合的指标。

一般来说,关键还是监控指标。 例如CPU使用率或内存使用率等。但是如果您想获得有关指标的更多详细信息怎么办? 例如,服务器CPU有四个核心。 如果我们想分别给它们设置指标该怎么办呢? 为此,就有了标签的概念。 标签旨在通过向指标添加其他字段来为指标提供更详细的信息。 您不需要简单地描述CPU速率,您可以指定位于某个IP的核心CPU的CPU速率。 您还可以按标签过滤指标并准确检索您要查找的内容。

测量类型

有四种基本类型的监测指标可以描述:

柜台

计数器可能是我们可以使用的最简单的指标形式。 就像它听起来的那样,计数器是一个随着时间的推移而增加的计算元素。

例如,如果您想统计服务器上的 HTTP 错误数或网站的访问量,请使用计数器。

计数器值只能递增或重置为 0。计数器对于计算一段时间内事件发生的次数(即指标随时间变化的速率)特别有用。

用于处理可能随时间减少的值。 例如温度变化、内存变化等。Gauge类型的值可以上升和下降,可以是正数或负数。

如果系统每 5 秒发送一次指标并每 15 秒获取一次目标,那么在此期间可能会丢失一些指标。 如果对这些手指进行分析计算,结果的准确度会越来越低。

使用计数器,每个值都会被聚合和计算。

直方图

直方图是一种更复杂的度量类型。 它为我们的指标提供了额外的信息,例如观察值的总和及其数量,并且通常用于跟踪事件的规模。 其值聚合在具有可配置上限的存储对象中。 使用直方图可以:

计算平均值:因为它们代表值的总和除以记录值的数量。

计算一个值的小数度量:这是一个非常强大的工具,可以让我们知道给定集合中有多少值遵循给定的标准。 当用于监控比例或建立质量指标时,这非常有用。

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

概括

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

比较直方图:

直方图总结随时间变化的值,提供求和和计数功能,使您可以轻松查看给定度量的趋势。

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

这对于获取代表随时间记录的值的 95% 的值特别方便。

计算示例

随着分布式架构的不断发展和完善以及云解决方案的普及,如今的架构已经不再是几台高配置的IBM机器一起使用的时代。

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

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

如果您使用过基于 的数据库,您可能会熟悉它。 或者使用SQL语句。 它还具有自己的内置 SQL 查询语言,可以以方便且熟悉的方式查询和检索数据。 这种内置语言是。

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

使用 sum 可以处理两种类型的向量:

立即向量:表示在最近时间戳跟踪的指标。

时间范围向量:用于使用自定义时间范围查询来查看指标随时间的演变。 结果是一个聚合了选定时间段内记录的值的向量。

API公开了一组方便查询数据操作的函数。 它可以用来实现排序、数学函数计算(如导数或指数函数)、统计预测计算(如Holt函数)等。

仪器仪表

仪器仪表是重要组成部分。 在从应用程序检索数据之前,必须对其进行检测。 该术语中的“检测”意味着将客户端类库添加到应用程序中,以便它们输出指标。 大多数主要编程语言,如 Java、Ruby、Go 甚至 Node 或 C# 应用程序都可以进行检测。

在检测操作时,您需要创建可以动态递增或递减的内存对象(例如仪表或计数器)。 然后选择公开指标的位置。 该位置将被获取并存储到时间序列数据库中。

模版

对于自定义应用程序,检测非常方便,允许自定义公开的指标以及它们如何随时间变化。

对于一些广泛使用的应用程序、服务器或数据库,提供了专门的应用程序模板,可用于监视目标。

其中许多模板都使用镜像,并且可以轻松配置为监视目标。 他们会预设常用的指示灯和面板,监控配置可以在几分钟内完成。

常见的模板包括:

数据库模板:用于数据库、SQL服务器、MySQL服务器的配置。

HTTP模板:用于配置Web服务器和代理,例如NGINX。

Unix模板:用于监控系统性能,利用内置的节点导出程序,可以实现对系统指标的完整监控。

警报

在处理时序数据库时,我们希望对数据进行处理并反馈结果,而这部分工作是通过报警来实现的。

警报在 中非常常见,并且也通过实施完整的警报系统来实现。 是一个可以绑定并运行自定义的独立工具。 警报是通过配置文件来定义的,配置文件由一组指标定义规则组成。 如果数据符合这些规则,则会触发警报并将其发送到预定义的目标。 与警报类似,警报可以通过电子邮件、Slack 和自定义 HTTP 目标发送。

普罗米修斯用例

我们最后要讲的用例是可以使用这个系统的各行各业。

专为系统、数据库和服务器而构建,主要目标显然是行业。 该领域有很多供应商和很多解决方案。 这无疑是一个理想的解决方案。 云基础设施下的实例非常容易启动和运行,并且可以根据需要灵活组装所需的组件。 这使其成为严重依赖容器和分布式架构的工具堆栈的理想解决方案。 在实例创建和销毁速度一样快的容器世界中,服务发现是每个堆栈的必备条件。

医疗保险

如今,监控解决方案不仅仅适用于 IT 专业人员。 它们还用于支持大型行业,为医疗保健行业提供弹性且可扩展的架构。 随着需求越来越大,部署的IT架构必须满足这种需求。 如果没有可靠的方法来监控整个基础设施,您将面临大规模服务中断的风险,而这是可以防范的。 网站上有很多这样的例子。

金融服务业

InfoQ 会议上讨论了金融机构的解决方案。 Jamie 和 Alan 描述了他们如何使用监控 Trust 的基础设施。

总结

在这篇文章中,我们介绍了分布式监控系统的介绍、原理和用例。 我们希望大家能够熟悉这个工具,并在未来的架构和实践中用它来解决系统和应用程序的监控问题。