错误跟踪¶
可以设置 Airflow 将错误发送到 Sentry。
设置¶
首先,您必须安装 sentry 依赖
pip install 'apache-airflow[sentry]'
之后,您需要通过将 sentry_on
选项在 [sentry]
部分设置为 True
来启用集成。
将您的 SENTRY_DSN
添加到您的配置文件,例如 airflow.cfg
中的 [sentry]
部分。它的模板类似于以下内容: {PROTOCOL}://{PUBLIC_KEY}@{HOST}/{PROJECT_ID}
[sentry]
sentry_on = True
sentry_dsn = http://[email protected]/123
注意
如果未提供此值,SDK 将尝试从 SENTRY_DSN
环境变量中读取它。
before_send
选项可用于在事件发送到 Sentry 之前修改或删除事件。要设置此选项,请提供一个指向 before_send 函数的点路径,该函数应该配置为 sentry SDK 使用。
[sentry]
before_send = path.to.my.sentry.before_send
transport
选项可用于更改用于将事件发送到 Sentry 和其他系统的传输方式。要设置此选项,请提供一个指向 Transport 类的点路径,该类应该配置为 sentry SDK 使用。
[sentry]
transport = path.to.my.sentry.Transport
您可以根据 Python 平台通过 [sentry]
部分提供其他配置选项。不支持的选项: integrations
, in_app_include
, in_app_exclude
, ignore_errors
, before_breadcrumb
.
标签¶
名称 |
描述 |
---|---|
|
失败的 DAG 的 DAG 名称 |
|
失败的任务的任务名称 |
|
任务失败时的数据间隔开始 |
|
任务失败时的数据间隔结束 |
|
失败的任务的操作符名称 |
为了向后兼容,还提供了一个额外的标签 execution_date
来表示逻辑日期。该标签应被视为已弃用,而推荐使用 data_interval_start
。
面包屑¶
当任务发生错误失败时,将为当前 DAG 运行中的其他任务添加面包屑。
名称 |
描述 |
---|---|
|
在失败的任务之前执行的任务的任务 ID |
|
在失败的任务之前执行的任务的最终状态(仅捕获成功和失败状态) |
|
在失败的任务之前执行的任务的任务操作符 |
|
在失败的任务之前执行的任务的持续时间(以秒为单位) |
Sentry 对传递给子进程 Hook 的环境变量的影响¶
当启用 Sentry 时,默认情况下,它会更改标准库以将所有环境变量传递给 Airflow 打开的子进程。这会更改 airflow.hooks.subprocess.SubprocessHook
的默认行为 - 始终将所有环境变量传递给使用特定环境变量集执行的子进程。在这种情况下,不仅会传递指定的环境变量,还会传递所有现有的环境变量,并添加 SUBPROCESS_
前缀。所有其他子进程也会发生这种情况。
可以通过将 default_integrations
sentry 配置参数设置为 False
来禁用此行为,这将禁用 StdlibIntegration
。但是,这也将禁用其他默认集成,因此如果您希望它们保持启用状态,则需要手动启用它们(请参阅 Sentry 默认集成)。
[sentry]
default_integrations = False