错误跟踪

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 平台的额外的配置选项。不支持的选项有:integrationsin_app_includein_app_excludeignore_errorsbefore_breadcrumb

标签

名称

描述

dag_id

失败的 Dag 的 Dag 名称

task_id

失败任务的任务名称

data_interval_start

任务失败时的数据区间开始时间

data_interval_end

任务失败时的数据区间结束时间

operator

失败任务的算子名称

出于向后兼容性,仍提供额外标签 execution_date 用于表示逻辑日期。该标签应视为已弃用,建议使用 data_interval_start

Sentry 对传递给 Subprocess Hook 的环境变量的影响

启用 Sentry 后,默认情况下它会修改标准库,使所有环境变量都传递给 Airflow 打开的子进程。这改变了 airflow.providers.standard.hooks.subprocess.SubprocessHook 的默认行为——始终将所有环境变量传递给使用特定环境变量集合执行的子进程。在此情况下,不仅会传递指定的环境变量,还会将所有现有环境变量以 SUBPROCESS_ 前缀形式传递。这同样适用于所有其他子进程。

可以通过将 Sentry 配置参数 default_integrations 设置为 False 来禁用此行为,从而禁用 StdlibIntegration。然而,这也会禁用其他默认集成,因此如果希望它们保持启用,需要手动重新启用(参见Sentry 默认集成)。

[sentry]
default_integrations = False

此条目是否有帮助?