错误跟踪
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 对传递给 Subprocess Hook 的环境变量的影响
启用 Sentry 后,默认情况下它会修改标准库,使所有环境变量都传递给 Airflow 打开的子进程。这改变了 airflow.providers.standard.hooks.subprocess.SubprocessHook 的默认行为——始终将所有环境变量传递给使用特定环境变量集合执行的子进程。在此情况下,不仅会传递指定的环境变量,还会将所有现有环境变量以 SUBPROCESS_ 前缀形式传递。这同样适用于所有其他子进程。
可以通过将 Sentry 配置参数 default_integrations 设置为 False 来禁用此行为,从而禁用 StdlibIntegration。然而,这也会禁用其他默认集成,因此如果希望它们保持启用,需要手动重新启用(参见Sentry 默认集成)。
[sentry]
default_integrations = False