错误跟踪

可以将 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 环境变量中读取它。

可以在将事件发送到 Sentry 之前使用 before_send 选项来修改或删除事件。要设置此选项,请提供 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 对传递给子进程挂钩的环境变量的影响

启用 Sentry 时,默认情况下,它会更改标准库以将所有环境变量传递给 Airflow 打开的子进程。这会更改 airflow.hooks.subprocess.SubprocessHook 的默认行为 - 始终将所有环境变量传递给使用特定环境变量集执行的子进程。在这种情况下,不仅会传递指定的环境变量,还会传递所有现有环境变量,并添加 SUBPROCESS_ 前缀。所有其他子进程也会发生这种情况。

可以通过将 default_integrations Sentry 配置参数设置为 False 来禁用此行为,这会禁用 StdlibIntegration。但是,这也将禁用其他默认集成,因此如果你希望它们保持启用状态,则需要手动启用它们(请参阅 Sentry 默认集成)。

[sentry]
default_integrations = False

此条目是否有帮助?