错误跟踪¶
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