airflow - Prometheus:如何根据任何 Airflow Dag 而不是特定 Airflow Dag 的结果创建警报
问题描述
我使用“pip install 'apache-airflow[statsd]' 安装了气流 [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 中为通用案例创建规则/警报?
解决方案
您应该能够使用类似下面的内容并以此为基础发出警报:
{__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'
推荐阅读
- python - 如何获取这个元素并用硒点击它?
- c++ - 具有动态分配的 char 数组的 C++ 结构
- multithreading - 如何加快向 InfluxDB 写入点数?
- php - 当我单击编辑按钮时,编辑一个类别它不起作用。错误:试图获取非对象的属性“id”
- android - RecyclerView 实时数据库
- reactjs - 使用 Jest 模拟 React HOC 时出现“无效的钩子调用”
- javascript - 即使机器人是管理员,Discord JS 管理角色权限也丢失
- html - 标题和价格在同一行
- javascript - 如何将数组中的数据替换为其他数组?
- vb.net - 如何在 vb.Net 中使用 WebClient 登录网站?