单一指标存储的荆棘之路

指标是遥测的三种基本类型之一,也的基础。但是,如果您需要在大型、高容量的生态系统中收集它们怎么办?如何获取不同数据中心数万台主机、数百种应用类型的指标?同时让工程师更容易设置警报规则和创建仪表板? 你好,哈布尔!我是 Philip Bocharov,MTS Digital 的流监控和可观察性主管。我们处理所有类型的遥测:日志、跟踪,当然还有指标。生态系统指标的单一存储库是我们可观察性平台的一部分。为此,我们使用 Telegraf 代理和大型 VictoriaMetrics 集群,该集群每秒接收 10+ 百万个样本。 在本文中,我将告诉您我们如何实现集中式代理配置管理,这是一个用于设置警报和收集指标的规则的便捷界面。我将向您展示解决方案的架构如何随着负载的增长而变化,以及我们如何处理延迟和数据丢失。让我们看看这如何能够将所有指标收集到单个存储库中并为关键产品构建运行状况仪表板。 创建统一指标存储库的先决条件 MTS生态系统中有很多子公司,每个子公司都有自己的IT部门和自己基于Zabbix或Prometheus的去中心化监控。

是监控任何应用程序

这种配置产生了一个问题:为了了解产品的状态,您首先负责该产品。很不方便。随着生态系统的负载和复杂性不断增加,我希望有一个集中、廉价、可靠且易于扩展的解 电话号码库 决方案来存储整个生态系统的指标,这将简化产品团队的工作。 基本要求: 单点监控生态系统的健康状况和关键业务场景。 可扩展到 600 多种产品的不断增长的负载。 一切“开箱即用”,以减少团队设置监控的劳动力成本。 寻找解决方案并选择指标存储系统 一开始,我们放弃了 Zabbix,尽管它已经是生态系统的一部分。起初他们尝试使用它,但遇到了严重的限制: 资源要求高。在 30,000 nvps 的负载下,Zabbix 遇到了资源限制 – 具有 32 个 CPU 核心和 248 GB RAM 的虚拟服务器无法应对,系统开始出现问题。 数据压缩率低。 Zabbix 没有很好地压缩数据,结果开始占用太多空间。

电话号码库

必须弄清楚哪个监控系统

我们知道他无法应对我们的成长。 Kubernetes 兼容性问题。 Kubernetes 在,为另一个基于 Prometheus 的监控堆栈量身定制。 为了寻找替代方案,我们分析了几个选项,例如 Cortex、Mimir、Thanos。最终,我们选择了VictoriaMetrics,原因如下: 与替代服务相比,消耗最少的资源并更好地压缩数据。 这从表中可以清楚地看出。对于 1000 万个唯一行,它使用的内存比最接近的竞争对手少五倍。 出色的水平可扩展性。这使得在负载增加时可以轻松增加功率。 使用不同的协议接收数据。这方便与不同堆栈和监控系统的集成。

生态系统中得到积极实施

支持高基数数据。接下来我们详细谈谈这个。 设置和扩展 VictoriaMetrics 我们的初始架构如下所示。多个产品通过负载均衡器将指标发送到单个存储库。所有这些都属于 vminsert 组件池 – 负责在 VictoriaMetrics 中记录数据的服务。反过来,vminsert 将所有内容写入 vmstorage 存储服务。 该模式有两个读者: Grafana是一个用于在仪表板上可视化指标的系统。 vmalert 是一个监视警报规则并在指标超出可接受阈值时发出警告的组件。 整个读取负载经过平衡器并落在负责处理读取请求的 vmselect 组件上。

可以独立扩展以提高读取或

他们还从 vmstorage 中提取数据。 事实证明,这种架构 TW 列表 非常灵活。组件写入性能。但随着负载的增加,困难开始出现。 问题:vminsert 崩溃 随着受监控主机数量的增加,发送指标的代理数量也随之增加,与 vminsert 组件的连接数量也随之增加。事实证明,后者对此处理得不好,开始降级并更慢地处理传入流量。因此,vminsert 组件需要受到保护。 解决方案:vmagent进行缓冲 为了防止 vminsert 过载,我们使用了另一个 VictoriaMetrics 组件 – vmagent。这是一个轻量级代理,可以使用不同协议接收指标数据并在将其发送到 vminsert 之前对其进行抓取。这样的“轻量级普罗米修斯”或者说中间环节。 结果我们得到: 连接数量急剧减少。

读取负载造成了他们的竞

发生这种情况是因为 vmagent 有一个内部缓冲区,可以在其中累积指标、缓冲并减少连接。 我们获得了针对电路短期故障的保护。指标可以在 vmagent 缓冲区中保存一段时间,等到 vminsert 和 vmstorage 的一切稳定下来,然后添加它们。 vmagent可以压缩metrics,因此我们使用了Zstd压缩算法,将传输流量减少了四倍。 最终结果是一个很好的工作解决方案。但 vminsert 崩溃的问题并不是唯一的问题,因为读取数据时出现了困难。 问题:警报和仪表板争夺资源 来自两个阅读器(Grafana 和 vmalert)的争。在集中式系统中,每个用户都可以创建复杂的 什么是离岸软件开发公司? 仪表板并配置任何警报,这意味着查询会并行加载 VictoriaMetrics。结果,仪表板本身加载速度变慢。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注