普罗米修斯:如何根据任何“气流损失”而不是特定的气流损失的结果创建警报

问题描述

我使用“ 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失败,则触发警报;如果da​​g完成超过XXX秒,则触发警报。换句话说,我不想为每个单独的任务或任务创建规则和警报。我想提醒一般情况。

如何在普罗米修斯中为通用案例创建规则/警报?

解决方法

您应该可以使用以下内容,并以此为基础发出警报:

{__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'