將日誌寫入 Opensearch¶
在 provider 版本 1.5.0 中新增 僅適用於 Airflow>=3.0
Airflow 可以配置為從 Opensearch 讀取任務日誌,並可選擇將日誌以標準或 json 格式寫入 stdout。這些日誌隨後可以使用 fluentd、logstash 或其他工具收集並轉發到叢集。
您可以選擇將來自 workers 的所有任務日誌輸出到最高父級程序,而不是標準的日誌檔案位置。這為 Kubernetes 等容器環境帶來了一些額外的靈活性,在這些環境中,容器的 stdout 已被記錄到宿主節點上。從那裡,可以使用日誌傳輸工具將它們轉發到 Opensearch。要使用此功能,請在 airflow.cfg 中設定 write_stdout 選項。您還可以選擇使用 json_format 選項將日誌輸出為 JSON 格式。Airflow 使用標準的 Python logging 模組,JSON 欄位直接從 LogRecord 物件中提取。要使用此功能,請在 airflow.cfg 中設定 json_fields 選項。將您希望收集到日誌中的欄位新增到逗號分隔的字串中。這些欄位來自 logging 模組中的 LogRecord 物件。可以在此處找到有關不同屬性的文件:https://docs.python.club.tw/3/library/logging.html#logrecord-objects/。
首先,要使用此 handler,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
透過 TLS 將日誌寫入 Opensearch¶
要向 Opensearch 新增自定義配置(例如,開啟 ssl_verify,新增自定義自簽名證書等),請在您的 airflow.cfg 中使用 opensearch_configs 設定
[logging]
remote_logging = True
[opensearch_configs]
use_ssl = True
verify_certs = True
ssl_assert_hostname = True
ca_certs=/path/to/CA_certs