当 dag 没有 运行 google 云时发送警报

Send an alert when a dag did not run google cloud

我在 Airflow 中有一个 DAG,其中 运行 未安排,但由事件触发。当 DAG 在过去 24 小时内没有 运行 时,我想发送警报。我的问题是我不确定哪种工具最适合这项任务。

我试图用日志资源管理器解决它,我能够通过 textPayload 编写一个非常好的查询过滤,但似乎该工具设计为在特定日志存在时发送警报,而不是在它出现时发送警报不见了。 (也许我漏掉了什么?)

我还检查了监控,我可以在其中设置日志丢失时的警报,但是在这种情况下,我无法编写任何可以按 textPayload 过滤日志的查询。

如果您能帮助我,在此先感谢您!

您可以设置一个单独的警报 DAG,如果其他 DAG 在指定时间内未 运行 时通知您?要获取 DAG 的最后 运行 时间,请使用如下内容:

from airflow.models import DagRun

dag_runs = DagRun.find(dag_id=dag_id)
dag_runs.sort(key=lambda x: x.execution_date, reverse=True)

然后你可以使用dag_runs[0]并与当前服务器时间进行比较。如果日期差异大于 24 小时,则发出警报。

我在监控中做到了。我不需要在日志资源管理器中使用的过滤查询。我需要创建一个警报策略,按 workflow_name、task_name 和位置过滤。在配置触发器部分,我可以选择缺席时间为 1 天的“Metric absence”,因此我用这个解决了我的旧查询。

当然,可以通过设置一个新的 DAG 来解决,但是设置一个 Alerting Policy 似乎更容易。