pushgateway简介
Pushgateway是Prometheus监控生态系统中的一个重要组件,主要用于解决Prometheus在特定场景下无法直接获取监控指标的问题。
Pushgateway允许监控源(如位于防火墙之后的服务或没有可抓取监控数据端点的服务)通过主动推送的方式将监控数据发送到Pushgateway,在Prometheus服务端可以设置任务,定时从Pushgateway上拉取监控指标,进而实现资源的状态监控。
pushgateway残留数据问题
下面是一个长期运行的pushgateway的问题截图,prometheus从pushgateway查询监控数据失败:
-
promtheus无法访问pushgateway
-
pushgateway metrics接口返回800M数据,数据量远远超过预期
-
在pushgatway控制台看到去年2023年的监控数据
调用pushgateway API清理监控数据
-
假设从pushgateway删除监控指标"push_time_seconds"
push_time_seconds{instance="foo",job="bar",try="longtime"} 1.598280005888635e+09
-
根据"push_time_seconds"指标信息,可以编写一个脚本获取这个指标,并用这个值来识别并删除数据
{instance="foo",job="bar",try="longtime"}
curl -X DELETE http://pushgateway:9091/metrics/job/bar/instance/foo/try/longtime
扩展实现pushgateway定时清理过期数据
-
官网开源pushgateway不支持自动清理过期数据
https://github.com/prometheus/pushgateway
-
一位开发者实现了pushgateway定时清理过期数据
https://github.com/dinumathai/pushgateway
-
根据监控数据的时间戳,找出并清理过期数据
总结
个人更倾向在pushgateway内部定时清理过期数据,不需要额外编写脚本执行数据清理。