2025 年 Airflow 峰會將於 10 月 07-09 日舉行。立即註冊獲取早鳥票!

錯誤跟蹤

Airflow 可以設定為將錯誤傳送到 Sentry

設定

首先,您必須安裝 sentry 依賴

pip install 'apache-airflow[sentry]'

之後,您需要透過將 [sentry] 部分中的 sentry_on 選項設定為 True 來啟用整合。

將您的 SENTRY_DSN 新增到您的配置檔案中,例如 airflow.cfg[sentry] 部分。其模板如下所示:{PROTOCOL}://{PUBLIC_KEY}@{HOST}/{PROJECT_ID}

[sentry]
sentry_on = True
sentry_dsn = http://foo@sentry.io/123

注意

如果未提供此值,SDK 將嘗試從 SENTRY_DSN 環境變數中讀取它。

before_send 選項可用於在事件傳送到 Sentry 之前對其進行修改或丟棄。要設定此選項,請提供一個點分隔路徑,指向 Sentry SDK 應配置使用的 before_send 函式。

[sentry]
before_send = path.to.my.sentry.before_send

transport 選項可用於更改用於將事件傳送到 Sentry 以及可能其他系統的傳輸方式。要設定此選項,請提供一個點分隔路徑,指向 Sentry SDK 應配置使用的 Transport 類。

[sentry]
transport = path.to.my.sentry.Transport

您可以透過 [sentry] 部分提供基於 Python 平臺的其他配置選項。不支援的選項包括:integrations, in_app_include, in_app_exclude, ignore_errors, before_breadcrumb

標籤

名稱

描述

dag_id

失敗的 DAG 的名稱

task_id

失敗的任務的名稱

data_interval_start

任務失敗時的資料間隔開始時間

data_interval_end

任務失敗時的資料間隔結束時間

operator

失敗的任務的 operator 名稱

為了向後相容,還提供了一個額外的標籤 execution_date 來表示邏輯日期。該標籤應被視為已棄用,推薦使用 data_interval_start

Sentry 對傳遞給子程序 Hook 的環境變數的影響

啟用 Sentry 後,預設情況下它會更改標準庫,將所有環境變數傳遞給 Airflow 開啟的子程序。這改變了 airflow.providers.standard.hooks.subprocess.SubprocessHook 的預設行為 - 始終將所有環境變數傳遞給使用特定環境變數集執行的子程序。在這種情況下,不僅傳遞了指定的環境變數,所有現有環境變數也會被傳遞,並新增 SUBPROCESS_ 字首。所有其他子程序也會發生這種情況。

透過將 sentry 配置引數 default_integrations 設定為 False 可以停用此行為,這將停用 StdlibIntegration。但是,這也會停用其他預設整合,因此如果您希望它們保持啟用狀態,則需要手動啟用它們(參見 Sentry 預設整合)。

[sentry]
default_integrations = False

此條目有幫助嗎?