首页 > 解决方案 > Prometheus 是否可以在大批量作业中捕获每个进程的指标?

问题描述

根据标题,Prometheus 是否可以在大批量作业中捕获每个单独进程的指标?

该作业每小时运行一次,并以大约 500-1000 条记录/秒的速度处理记录,向 statsd_exporter 发送计量指标(每条记录唯一)以监控我们的 SLO。

但是,我意识到 Prometheus 只能捕获 scrape_interval 允许的量,这意味着它肯定会丢失一些发送到 statsd_exporter 的值(例如,可能会丢失一些值峰值)。

有没有办法克服这个问题?或者也许我应该看看其他一些工具。

更新:提供了发送的指标示例。job标签仅限于 10 个不同的标签,即 10 个时间序列

# HELP time_taken_gauge Time taken for a particular job type to finish processing a record.
# TYPE time_taken_gauge gauge
time_taken_gauge{job="a"} 123
time_taken_gauge{job="b"} 1314
time_taken_gauge{job="c"} 5435
time_taken_gauge{job="d"} 212
time_taken_gauge{job="e"} 231
time_taken_gauge{job="f"} 324
time_taken_gauge{job="g"} 15
time_taken_gauge{job="h"} 1213
time_taken_gauge{job="i"} 123
time_taken_gauge{job="j"} 1235

唯一的挑战是这些以比 Prometheus 的抓取间隔 (1s) 高得多的速率发送,因此丢失了一些记录

time_taken_gauge{job="a"} 123
time_taken_gauge{job="a"} 1232 <- scraped
time_taken_gauge{job="a"} 12412
time_taken_gauge{job="a"} 53453 <- high value metric missed but potentially problematic
time_taken_gauge{job="a"} 1564
time_taken_gauge{job="a"} 756
time_taken_gauge{job="a"} 34 <- scraped
time_taken_gauge{job="a"} 15433
.
.
.
time_taken_gauge{job="a"} 345 <- scraped

标签: monitoringprometheus

解决方案


500-1000 条记录/秒,发送计量指标(每条记录唯一)

这将是高基数。如果您希望每条记录有一个唯一的指标,那么您需要一个像 ELK 这样的事件记录系统,而不是像 Prometheus 这样的指标系统或任何您有 statsd 输入的系统。


推荐阅读