使用 Managed Airflow 代理程式排解 Airflow 工作和 DAG 執行作業問題

Managed Airflow 代理程式可協助您瞭解、診斷及解決 Airflow 工作和 DAG 執行失敗的問題。

事前準備

  • 執行 Managed Airflow 代理的 Conversational Analytics API 有專屬的資料落地政策。處理對話的區域可能與環境不同。

調查失敗的 Airflow 工作或 DAG 執行作業

如要調查失敗的 Airflow 工作或 DAG 執行作業,請按照下列步驟操作:

  1. 前往 Cloud de Confiance 控制台的「Environments」(環境) 頁面。

    前往「環境」

  2. 選取環境即可查看詳細資料。

  3. 在「環境詳細資料」頁面中,前往「DAG」分頁。

  4. 按一下 DAG 名稱。

  5. 在「DAG details」(DAG 詳細資料) 頁面中,前往「Run history」(執行記錄) 分頁標籤。

  6. 找出失敗的 DAG 執行作業。您可以調查整個 DAG 執行作業或特定失敗的工作:

    • 如要調查 DAG 執行作業,請按照下列步驟操作:

      1. 按一下失敗的 DAG 執行名稱旁的「調查」。

      2. 在「調查 DAG 執行失敗的情況」對話方塊中,按一下「調查」。

    • 如要調查 Airflow 工作,請按照下列步驟操作:

      1. 按一下失敗的 DAG 執行名稱,即可顯示工作清單。

      2. 在失敗的 Airflow 工作「狀態」欄中,按一下 「調查」。

      3. 在「調查任務失敗原因」對話方塊中,按一下「調查」。

  7. 系統會開啟「詢問代理程式」面板,Managed Airflow 代理程式也會開始調查 DAG 執行失敗的原因。等待代理程式完成分析,然後查看診斷報告。這份報告包含多個部分:

    • 「問題」說明問題的根本原因。
    • 證據是指可佐證代理人結論的特定構件。
    • 「建議」會提供具體步驟,協助你解決問題。

調查範例

這個範例說明如何分析失敗的工作。

  1. 在「Monitoring」(監控) >「DAG Statistics」(DAG 統計資料) 資訊主頁上,觀察失敗的 DAG 執行作業:

    「監控」資訊主頁上的「已完成的 DAG 執行作業」圖表顯示多個失敗的 DAG 執行作業
    圖 1. 已完成的 DAG 執行作業圖表 (按一下可放大)
  2. 前往「DAG」分頁。「失敗的執行作業 (1 小時)」欄顯示 DAG 在過去一小時內多次執行失敗。create_large_txt_file_print_logs按一下 DAG 名稱。

    DAG 清單會顯示 create_large_txt_file_print_logs DAG 的失敗 DAG 執行作業
    圖 2. 列出 DAG 執行統計資料 (按一下可放大)
  3. 按一下其中一個失敗的 DAG 執行作業,然後按一下失敗的 Airflow 工作項目旁邊的「調查」。

    DAG 中的工作清單顯示失敗的 Airflow 工作,旁邊有「調查」按鈕
    圖 3. 失敗 DAG 中的工作清單 (按一下可放大)
  4. 等待代理程式完成報告。

  5. 查看診斷報告。在這個特定範例中,工作失敗但未產生記錄,不過 Managed Airflow 代理程式能夠在 Airflow 排程器記錄中找出失敗原因,也就是工作遭到終止,成為殭屍程序:

    ### **1. Problem**
    
    The task `create_huge_file` in DAG `dag_simulation` failed because the
    Airflow worker executing it ran out of memory (OOM). This caused the task
    container or process to be abruptly terminated, preventing it from sending
    heartbeats to the scheduler. As a result, the scheduler detected it as a
    zombie task and marked it as failed.
    
    ### **2. Evidence**
    
    *  **Scheduler Log (Zombie Detection)**:
       Detected a task instance without a heartbeat:
       filepath='dag-simulation.py'
       bundle_name='dags-folder' bundle_version=None msg="{'DAG Id':
       'dag_simulation', 'Task Id': 'create_huge_file', 'Run Id':
       'manual__2026-11-25T12:42:50.190250+00:00', 'Hostname':
       'airflow-worker-2lxm2', 'External Executor Id':
       'cfc98619-0de6-4699-96e6-7ba8a5a581aa'}"
    
    *  ...
    
  6. 最後,請查看建議的建議。 Managed Airflow Agent 會彙整證據,並提供修正問題的建議。在這個範例中,工作失敗是因為 Airflow 工作站沒有足夠的資源來處理工作。證據包括工作站 Pod 因 OOM 錯誤而多次重新啟動,以及排程器隨後將工作終止為殭屍工作。

    ### **3. Recommendation**
    To resolve this issue, you must prevent the task from consuming unbound
    memory. Depending on your workflow:
    
    *  **Fix Code Logic (Highly Recommended)**: Avoid loading large datasets
       completely into worker memory. Implement chunk-based processing or
       streaming, or set up explicit safety limits. For example, if you need to
       limit memory allocation or process in bounded batches, do not keep
       references to old chunks in memory: ...
    
    *  **Scale Worker Memory**: If processing massive datasets in memory is
       unavoidable, consider upgrading the resource limits (RAM/CPU) of your
       Airflow worker pools or offloading the heavy processing step to external
       services.
    

後續步驟