跟踪配置
Airflow 可以配置为通过 OpenTelemetry 发送跟踪。
设置 - OpenTelemetry
要使用 OpenTelemetry,必须先安装所需的包
pip install 'apache-airflow[otel]'
将以下行添加到您的配置文件,例如 airflow.cfg
[traces]
otel_on = True
otel_host = localhost
otel_port = 8889
otel_application = airflow
otel_ssl_active = False
otel_task_log_event = True
注意
以下配置键已被弃用,未来将被移除
[traces] otel_host = localhost otel_port = 8889 otel_debugging_on = False otel_service = Airflow otel_ssl_active = False
应使用标准的 OpenTelemetry 环境变量(如 OTEL_EXPORTER_OTLP_ENDPOINT、OTEL_EXPORTER_OTLP_PROTOCOL 等)来配置 OpenTelemetry SDK。
有关更多信息,请参阅 OpenTelemetry 导出协议规范 和 SDK 环境变量文档。
在任务中添加自定义 Span
DAG 作者可以使用来自 airflow.sdk.observability 的 trace 对象为任务添加自定义 Span。这是对标准 OpenTelemetry opentelemetry.trace 模块的薄层封装,因此所有标准的 OpenTelemetry 跟踪 API 均可使用。
from airflow.sdk import task
from airflow.sdk.observability import trace
tracer = trace.get_tracer(__name__)
@task
def my_task():
with tracer.start_as_current_span("my_span") as span:
span.set_attribute("key", "value")
# ... task logic ...
以这种方式创建的自定义 Span 在启用跟踪时会自动作为 Airflow 管理的任务 Span 的子 Span 嵌套。当跟踪被禁用时,会使用 OpenTelemetry API 提供的 no‑op tracer,任务因此不会产生任何额外开销。
启用 HTTPS
要建立到 OpenTelemetry 收集器的 HTTPS 连接,需要在 OpenTelemetry 收集器的 config.yml 文件中配置 SSL 证书和密钥。
receivers:
otlp:
protocols:
http:
endpoint: 0.0.0.0:4318
tls:
cert_file: "/path/to/cert/cert.crt"
key_file: "/path/to/key/key.pem"