使用 Prometheus 进行即时下采样

问题描述 投票:0回答:1

我们每一秒都想从一堆服务器收集一系列指标并将它们存储在 prometheus 中。我们会将这些高分辨率指标保留 24 小时,然后再丢弃。我们正在寻找一种方法将指标降采样到 5 秒和 1 分钟的平均值,以便我们可以将这些数据存储更长时间。我们想知道如何实施这一点。目前,我们正在研究两种可能性。

  1. 我们计划使用 prometheus_client python 库来收集和导出指标。也许我们可以将 1、5 和 60 秒平均值实现为移动窗口函数,但似乎我们必须弄清楚如何实现固定长度 fifo 堆栈。这似乎可以通过 collections.deque 实现。

  2. 我们有一些端点可以从 prometheus 中的一秒数据中读取最后 5 或 60 秒的数据并对其进行平均。然后由每 5 或 60 秒运行一次的不同 scrap 调用。

这两个选项都会实时进行下采样。有没有人有其他建议或对如何继续使用这些选项有任何实际建议?

谢谢,

安德鲁

python prometheus
1个回答
0
投票

方法 1. 运行 2 个 Proms 抓取相同的目标,但使用不同的 scrape_interval。 Prom1 将每 5 秒抓取一次指标,Prom2 每 60 秒抓取一次指标。 Prom1 将保留 24 小时,Prom2 - 无论您想要什么。然后您选择使用哪一个来做什么。例如,Prom1 用于警报,Prom2 用于仪表板。

方法 2. 使用 VictoriaMetrics 的流聚合功能。 vmagent,类似于 prom 或 grafana 代理的指标收集器,可以像 Prometheus 一样收集指标,并通过 Prometheus 远程写入协议将其转发到任何兼容系统。

© www.soinside.com 2019 - 2024. All rights reserved.