将日志写入 Opensearch

在提供者版本 1.5.0 中添加 仅在 Airflow>=3.0 时可用

Airflow 可以配置为从 Opensearch 读取任务日志,并可选择以标准或 JSON 格式将日志写入 stdout。这些日志随后可以使用 fluentd、logstash 或其他工具收集并转发到集群。

Airflow 还支持直接将日志写入 OpenSearch,而无需额外的软件(如 fluentd 或 logstash)。要启用此功能,请在 airflow.cfg 中将 write_to_osjson_format 设置为 True,并将 write_stdout 设置为 False

您可以选择让所有来自工作节点的任务日志输出到最高父级进程,而不是写入标准的文件位置。这在容器化环境(如 Kubernetes)中非常灵活,因为容器的 stdout 已经在主机节点上被记录。随后可使用日志转发工具将其发送到 Opensearch。要使用此功能,请在 airflow.cfg 中设置 write_stdout 选项。您也可以选择让日志以 JSON 格式输出,使用 json_format 选项。Airflow 使用标准的 Python logging 模块,JSON 字段直接从 LogRecord 对象中提取。要使用此功能,请在 airflow.cfg 中设置 json_fields 选项,并在逗号分隔的字符串中添加您希望收集的字段。这些字段来自 logging 模块中的 LogRecord 对象。不同属性的文档可在此处查阅

首先,要使用此处理器,需要按以下方式配置 airflow.cfg

[logging]
remote_logging = True

[opensearch]
host = <host>
port = <port>
username = <username>
password = <password>

若要以 JSON 格式将任务日志输出到 stdout,可使用以下配置

[logging]
remote_logging = True

[opensearch]
write_stdout = True
json_format = True

若要直接将任务日志输出到 OpenSearch,您可以使用如下配置(如果不想保留任务日志的本地副本,请将 delete_local_logs 设置为 True)。

[logging]
remote_logging = True
delete_local_logs = False

[opensearch]
host = <host>
port = <port>
username = <username>
password = <password>
write_stdout = False
json_format = True
write_to_os = True
target_index = [name of the index to store logs]

通过 TLS 将日志写入 Opensearch

若要向 Opensearch 添加自定义配置(例如启用 ssl_verify、添加自签名证书等),请在 airflow.cfg 中使用 opensearch_configs 设置。

请注意,这些配置同样适用于直接将日志写入 OpenSearch 的场景。

[logging]
remote_logging = True

[opensearch_configs]
use_ssl = True
verify_certs = True
ssl_assert_hostname = True
ca_certs=/path/to/CA_certs

此条目是否有帮助?