我们正在使用Airflow v2.1.4和Kubernetes执行器。
我们的k8s集群pod 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升级到了最新版本v2.2.3,我们失去了远程日志功能。经过深入研究,我们发现在最新版本中删除了execution_date
标签(替换为run_id
)。我们在发行说明和以下PR中看到了一些迹象:一个月一个月dag_id
值似乎不够精确,无法提取确切的执行日期(例如:scheduled__2022-01-09T0020000000-8c05ec558
)的数据。
如何在最新版本中取回日志?有什么解决方法建议吗?检索日志的另一种方法?
- EDIT:**文档似乎已更新(但cfg示例未更新)为:
log_id_template = {dag_id}-{task_id}-{run_id}-{try_number}
我会尝试并更新
1条答案
按热度按时间relj7zay1#
我决定采用一种不同的方法,使用json日志代替,这样我就不必处理所有的转换,也不必准备好
log_id
。请参阅以下答案了解更多信息:Airflow wrong log_id format。