使用 Prometheus 中的指标监控批处理作业的状态

dan*_*238 5 python grafana prometheus prometheus-alertmanager prometheus-pushgateway

我们的一些应用程序具有每晚汇总数据的批处理作业。这些批处理作业是Python脚本,使用Prometheus Pushgateway将指标值推送到Prometheus,并且我们有规则在这些指标无效(例如超过某个阈值)时触发警报(在Alertmanager中)。

我们现在还想使用 Prometheus 指标来仔细检查批处理作业本身是否正确运行:例如,作业是否按时开始?是否发生任何错误?作业是否已完成?为此,我们希望更改 Python 脚本,以便在脚本开始和完成以及发生任何错误时推送指标。但这确实会带来一些问题:我们有相当多的批处理作业,每个批处理作业有 3 个指标,需要为规则/警报创建大量手动配置;我们还想在 Grafana 中以图形方式显示状态,但不确定正确的视觉效果是什么样的。

有没有其他人尝试解决类似的问题,使用 Prometheus 指标来监控多个批处理作业的状态?您记录了哪些指标以及您的警报/规​​则是什么样的?您是否找到了一种直观的方式来以图形方式显示每个批处理作业的状态?

Sau*_*rya 1

您可以为每个批处理作业公开一个名为 的指标last_run_at。然后,您可以根据作业运行时间是否超过 24 小时(或无论您的阈值是什么)来发出警报。

一个简单的警报是:last_run_at{env="prod"} < scalar(time()) - 60 * 60 * 24

Prometheus 中的 time() 函数对此很有用。文档:https ://prometheus.io/docs/prometheus/latest/querying/functions/#time

您不必针对每个作业发出警报。您可以对过去 24 小时内未运行的任何作业发出警报。或者您可以按环境或任何其他标签进行过滤。

关键是,警报不必是一对一的工作。您也应该能够在 Grafana 中相当轻松地绘制图表。