[英]Airflow CLI: How to get status of dag tasks in Airflow 1.10.12?
[英]How to display Airflow DAG status in Big Query tables
我想向 BQ 中的表顯示 DAG(氣流)最終狀態(成功/失敗)。 就像那個表可以包含:日期時間、DAG 名稱、狀態等列,它將根據 DAG 的最終狀態進行填充。
請幫忙; 如何做到這一點?
Airflow 中沒有現成的本機方法來實現此目的。但是,您可以自己實現一個 function,它將數據寫入 BigQuery 並通過 DAG 的on_success_callback
和on_failure_callback
方法運行它。
注意:BigQuery 不是事務型數據庫,並且對每天的插入次數有限制。 對於大量 DAG 運行,您可能會考慮將結果批量寫入 BigQuery。
如果您需要實時數據,我會 go 按照@Bas 建議的方法進行一些操作,可能使用 firestore 或 Cloud SQL。但是,如果您使用 BigQuery go,請注意他對每天插入的評論。
如果您可以每天等待結果,您可以按照此處所述將日志匯到 BigQuery: https://cloud.google.com/bigquery/docs/reference/auditlogs#stackdriver_logging_exports
在過濾條件中,您可以引入所有 Airflow 日志或僅引入來自工作程序/調度程序的日志。
防爆標准:
resource.type="cloud_composer_environment"
logName="projects/{YOUR-PROJECT}/logs/airflow-worker"
在日志 textPayload 中,您將看到類似以下內容:
Marking task as SUCCESS. dag_id=thing, task_id=stuff, executiondate=20220307T111111, start_date=20220307T114858, end_date=20220307T114859
然后,您可以在 BigQuery 中解析您需要的內容
補充用戶Bas Harenslak
的答案。 您還可以探索以下選項:
recap-dag
),您的 DAG 將引用它以將記錄填充到目標數據集中。trigger_recap_dag = TriggerDagRunOperator(
task_id="trigger_recap_dag",
trigger_dag_id="recap-dag",
wait_for_completion=False,
allowed_states=['success']
conf='{"Time": datetime.now() ,"DAG": "recap-dag","Status":"success"}'
)
ingestion >> transformation >> save >> send_notification >> trigger_recap_dag
recap-dag
也可以是獨立的,並且只在你選舉的每個小時/天/周運行,並檢查你的 DAG 狀態。with DAG(
'recap-dag',
schedule_interval='@daily',
start_date=datetime(2021, 1, 1),
catchup=False,
) as dag:
...
# Airflow >= 2.0.0
# Inside a python Operator
def GetRunningDagsInfo():
dag_runs = DagRun.find(
dag_id=your_dag_id,
execution_start_date=your_start_date
execution_end_date=your_end_date
)
...
在你 dag(或 dags)完成后,它會觸發觸發 dag。 此
recap-dag
會將您的 dag 記錄保存到自定義表或文件中,然后您的獨立 DAG 運行並檢索到目前為止已創建的數據集,並將數據推送到您的 BigQuery 表中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.