我所使用的气流,有时管道等待很长时间才能安排好。也有过这样的情况:作业运行时间太长(想必占用了其他作业的资源)。
我正试图解决如何在没有任何额外框架的情况下,以编程方式识别调度程序的健康状况,并潜在地监视未来的运行状况。我开始查看元数据数据库表。我现在所能想到的就是从start_date和end_date中看到任务的dag_run和duration。我应该看的其他指标是什么?非常感谢你的帮助。
发布于 2022-01-02 11:46:30
没有必要“深入”数据库。
气流为您提供了可用于特定用途的度量标准:https://airflow.apache.org/docs/apache-airflow/stable/logging-monitoring/metrics.html。
如果你向下滚动,你会看到所有有用的指标,其中一些正是你想要的(尤其是计时器)。
这可以通过通常的度量集成来完成。气流通过statsd发布度量标准,气流官方Helm图表(https://airflow.apache.org/docs/helm-chart/stable/index.html)甚至通过statsd出口商公开Prometheus的这些度量标准。
关于火花作业-是的-目前的实现火花提交挂钩/操作员是实现在“积极投票”模式。气流的“工人”过程轮询工作的状态。但是Airlfow可以并行运行多个工人作业。此外,如果您需要,您可以实现您自己的任务,这将采取不同的行为。
在“经典”气流中,您需要实现提交操作符(提交作业)和"poke_reschedule“传感器(等待作业完成),并以操作员之后触发传感器任务的方式实现DAG。"Poke“模式的工作方式是,传感器只在”轮询“时间内占用工作槽,然后释放该槽一段时间(直到再次检查)。
从气流2.2开始,您还可以编写一个Deferrable操作符(https://airflow.apache.org/docs/apache-airflow/stable/concepts/deferring.html?highlight=deferrable),其中您可以编写单个操作符--首先执行submision,然后在一个操作符中延迟状态检查。可删除操作符可以有效地处理(使用async.io)潜在的数千个等待/延迟运算符,而不占用插槽或过多的资源。
更新:如果您真的不能使用statsd (不需要helm,statsd就足够了),您就不应该使用DB获取有关DAGS的信息。使用稳定气流REST代替:https://airflow.apache.org/docs/apache-airflow/stable/stable-rest-api-ref.html
https://stackoverflow.com/questions/70515361
复制相似问题