3

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

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

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

4

1 回答 1

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 小时内未运行的任何作业发出警报。或者您可以按环境或任何其他标签进行过滤。

关键是,警报不必是 1:1 的工作。您应该也可以在 Grafana 中轻松地绘制图表。

于 2020-07-18T17:34:47.393 回答