升级 Airflow 版本后远程日志记录不起作用
remote logging doesn't work after upgrading Airflow version
我们将 Airflow v2.1.4 与 Kubernetes 执行器一起使用。
我们的 k8s 集群 pods stdout 通过 filebeat -> logstash -> Elasticsearch (ELK) 自动传输。
在 logstash 中,我们正在创建 log_id
字段:
mutate {
copy => { "[log][offset]" => "offset" }
# change format from "2020-04-13T17_50_00_plus_00_00" to "2020-04-13T17:50:00+00:00"
gsub => [ "[kubernetes][labels][execution_date]", "_plus_", "+" ]
gsub => [ "[kubernetes][labels][execution_date]", "_", ":" ]
add_field => [ "log_id", "%{[kubernetes][labels][dag_id]}-%{[kubernetes][labels][task_id]}-%{[kubernetes][labels][execution_date]}-%{[kubernetes][labels][try_number]}" ]
}
现在,日志可通过 airflow 网络服务器获得 - 到目前为止。
现在我们将 Airflow 升级到最新版本 v2.2.3,我们失去了远程日志功能。
仔细研究,我们发现 execution_date
标签在最新版本中被删除(替换为 run_id
)。我们在发行说明和以下 PR 中看到了一些迹象:
https://github.com/apache/airflow/pull/19593/files, https://github.com/apache/airflow/pull/16666.
似乎 dag_id
值不够准确,无法提取确切的执行日期(示例:scheduled__2022-01-09T0020000000-8c05ec558
)。
如何让我的日志恢复为最新版本?有什么解决方法的建议吗?另一种检索日志的方法?
编辑: 文档似乎已更新(但 cfg 示例未更新)为:
log_id_template = {dag_id}-{task_id}-{run_id}-{try_number}
我会尝试并更新
我决定采用不同的方法,改用 json 日志。
这样我就不必处理所有转换并准备好 log_id
。
在以下答案中查看更多相关信息:。
我们将 Airflow v2.1.4 与 Kubernetes 执行器一起使用。
我们的 k8s 集群 pods stdout 通过 filebeat -> logstash -> Elasticsearch (ELK) 自动传输。
在 logstash 中,我们正在创建 log_id
字段:
mutate {
copy => { "[log][offset]" => "offset" }
# change format from "2020-04-13T17_50_00_plus_00_00" to "2020-04-13T17:50:00+00:00"
gsub => [ "[kubernetes][labels][execution_date]", "_plus_", "+" ]
gsub => [ "[kubernetes][labels][execution_date]", "_", ":" ]
add_field => [ "log_id", "%{[kubernetes][labels][dag_id]}-%{[kubernetes][labels][task_id]}-%{[kubernetes][labels][execution_date]}-%{[kubernetes][labels][try_number]}" ]
}
现在,日志可通过 airflow 网络服务器获得 - 到目前为止。
现在我们将 Airflow 升级到最新版本 v2.2.3,我们失去了远程日志功能。
仔细研究,我们发现 execution_date
标签在最新版本中被删除(替换为 run_id
)。我们在发行说明和以下 PR 中看到了一些迹象:
https://github.com/apache/airflow/pull/19593/files, https://github.com/apache/airflow/pull/16666.
似乎 dag_id
值不够准确,无法提取确切的执行日期(示例:scheduled__2022-01-09T0020000000-8c05ec558
)。
如何让我的日志恢复为最新版本?有什么解决方法的建议吗?另一种检索日志的方法?
编辑: 文档似乎已更新(但 cfg 示例未更新)为:
log_id_template = {dag_id}-{task_id}-{run_id}-{try_number}
我会尝试并更新
我决定采用不同的方法,改用 json 日志。
这样我就不必处理所有转换并准备好 log_id
。
在以下答案中查看更多相关信息: