monitoring - 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
解决方案
500-1000 条记录/秒,发送计量指标(每条记录唯一)
这将是高基数。如果您希望每条记录有一个唯一的指标,那么您需要一个像 ELK 这样的事件记录系统,而不是像 Prometheus 这样的指标系统或任何您有 statsd 输入的系统。
推荐阅读
- vue.js - 如何在 vue 中使用 v-bind 绑定动态对象
- ros - 我如何用一些机器人创建自己的世界并用 ROS 控制它?
- html - 列图像表现为背景图像
- shiny - 使用R的4个小盒子旁边的大盒子
- sql - 识别字符串出现多次的记录
- visual-studio-code - 使用 Visual Studio Code 进行调试并将终端输出通过管道传输到文件
- java - 无法返回值
- python - 熊猫中几个数据帧的异步“read_csv” - 为什么它不更快
- node.js - 什么可能导致 localhost:4200 在路由调用之前添加?
- fortran - 了解 Fortran 如何初始化模块中定义的派生类型数组