【发布时间】:2022-01-07 07:06:08
【问题描述】:
我正在使用KuberneterPodOperator 在Apache Airflow (v2.0.2) 上运行dbt (v0.19.0),并在失败时向Slack 发送警报。嵌套在 dbt 中的是来自多个所有者的多个模型,它们之间存在交叉依赖关系,它们都与 run 命令一起运行。
例如:
KubernetesPodOperator(
dbt_command="run",
task_id="run_models",
on_failure_callback=send_slack_alert,
)
我正在努力确保每个模型所有者都能在其相关频道中收到属于他们的警报。
为了更好地解释我的问题,假设 dbt 中有两个模型; 模型-A & 模型-B。 Model-A 归 A 团队所有,Model-B 归 B 团队所有。使用这种方法(因为有一个 dbt run 命令),如果 Model-A 出现故障,该故障将出现在 Model-A 的共享日志中,并且模型-B。我们还假设 A-Team 和 B-Team 都有自己的警报通道。但是,由于 dbt 是使用单个命令运行的,因此所有警报都会发送到一个公共通道。
现在想象有很多模型(模型-A、模型-B......模型-Z)。如何改进现有流程以确保将 Model-A 中的故障发送到 A 团队警报通道,将 Model-B 中的故障发送到 B -团队警报频道...等等。
如何将错误从 dbt(在 Airflow 中运行)分派给相关所有者以使警报可操作?
【问题讨论】: