錯誤跟蹤¶
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。
Sentry 對傳遞給子程序 Hook 的環境變數的影響¶
啟用 Sentry 後,預設情況下它會更改標準庫,將所有環境變數傳遞給 Airflow 開啟的子程序。這改變了 airflow.providers.standard.hooks.subprocess.SubprocessHook 的預設行為 - 始終將所有環境變數傳遞給使用特定環境變數集執行的子程序。在這種情況下,不僅傳遞了指定的環境變數,所有現有環境變數也會被傳遞,並新增 SUBPROCESS_ 字首。所有其他子程序也會發生這種情況。
透過將 sentry 配置引數 default_integrations 設定為 False 可以停用此行為,這將停用 StdlibIntegration。但是,這也會停用其他預設整合,因此如果您希望它們保持啟用狀態,則需要手動啟用它們(參見 Sentry 預設整合)。
[sentry]
default_integrations = False