【问题标题】:Prometheus: How to create alerts based on the result of any Airflow Dag instead of a specific Airflow DagPrometheus:如何根据任何 Airflow Dag 而不是特定 Airflow Dag 的结果创建警报
【发布时间】:2020-10-28 04:21:32
【问题描述】:

我使用“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 中为通用案例创建规则/警报?

【问题讨论】:

    标签: airflow prometheus prometheus-node-exporter


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢萨夫。你的意思是我可以把它写在普罗米修斯服务器的规则yaml文件中吗? prometheus.io/docs/prometheus/latest/configuration/…。你的代码看起来像 python 代码而不是规则,所以我不确定我是否理解你的意思。您能给我举个例子,如何使用您的解决方案实施警报规则吗?
    • 当然,我已经添加了一个我在我的实例上测试过的示例警报。希望这可以为您提供一些您可以根据需要进行修改的内容。
    • 谢谢萨夫。这对我来说是新事物。我会核实并通知您。
    • 嗨,安全。你说这会吃普罗米修斯服务器的CPU吗?我猜普罗米修斯没有任何线索,只是盲目地解析可能是原因的原始单词。但我觉得我的用例很常见。有没有办法让prometheus高效查询?我得到的气流指标不是由我创建的,所以我无法将 dag/task 从指标名称移动到标签。
    • 我的意思是更多,如果你只是做{__name__=~".+"} - 因为这会列出所有内容,只要你设置正则表达式来限制你的搜索,你应该很好
    猜你喜欢
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多