Prometheus:如何根据任何 Airflow Dag 而不是特定 Airflow Dag 的结果创建警报

Prometheus: How to create alerts based on the result of any Airflow Dag instead of a specific Airflow Dag

我使用“pip install 'apache-airflow[statsd]' 安装了 airflow[statsd] 并安装了 statsd_exporter。现在我可以看到 Prometheus 的气流指标。但是所有与气流相关的指标都有 dag_id 和 task_id 作为指标名称的一部分。

例如,对于任务 ID 为“task1”的 dag id“dag1”,完成任务所用时间的指标为:airflow_dag_dag1_task1_duration。对于任务 ID 为“task2”的 dag id“dag2”,指标为:airflow_dag_dag2_task2_duration.

我感兴趣的是:如果任何 dag 失败则触发警报,或者如果 dag 完成所需的时间超过 XXX 秒则触发警报。换句话说,我不想为每个单独的 dag 或任务创建规则和警报。我想提醒一般情况。

如何在 Prometheus 中为通用案例创建 rule/alert?

您应该能够使用类似下面的内容并以此为基础发出警报:

{__name__=~"airflow_dag.+_duration"}

请注意,如果您只使用 {__name__=~".+"},这是一个昂贵的查询,可能会破坏需要重新启动 Prometheus 服务的实例。

已更新以包含示例警报:

- alert: Saf_Test
  expr: ({__name__=~"windows_cpu.+_total"} > 5.8281319e+07)
  for: 5m
  labels:
    severity: warning
  annotations:
    description: 'Alert text here'
    summary: 'Summary here'