我已经配置logstash来侦听默认气流日志路径上的日志。我想将elasticsearch中的索引创建为{dag_id}-{task_id}-{execution_date}-{try_number}.所有这些都是气流的参数。这些是airflow.cfg中修改过的值。
[core]
remote_logging = True
[elasticsearch]
host = 127.0.0.1:9200
log_id_template = {{dag_id}}-{{task_id}}-{{execution_date}}-{{try_number}}
end_of_log_mark = end_of_log
write_stdout = True
json_format = True
json_fields = asctime, filename, lineno, levelname, message
这些任务实例的细节需要从气流传递到逻辑仓库。dag_id,task_id,execution_date,try_number
这是我的logstash配置文件。
input {
file{
path => "/home/kmeenaravich/airflow/logs/Helloworld/*/*/*.log"
start_position => beginning
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "logginapp-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
我有两个问题。如何将参数从气流传递给洛格斯塔什?
我已经将logstash配置为侦听日志路径。由于remote_logging在airfow.cfg中是真的,所以日志不会写入基本日志文件夹。如果这是错误的,或者如果我连接到亚马逊S3,日志也会被写入base_log_folder路径。但是,要配置logstash,需要在本地文件夹中写入日志。我使用气流版本1.10.9。如何将日志流到Elasticsearch索引。
发布于 2020-08-20 21:40:15
要回答您的第一个问题(我假设您的意思是将日志直接传递给Elasticsearch),您不能。气流"Elasticsearch“实际上并不是对Elasticsearch的日志记录,而是更多的将日志发送到Elasticsearch的配置。属性的命名(在我看来)有点混乱,因为它表明您可以直接写到Elasticsearch。可以将气流配置为,从Elasticsearch读取日志。请参阅关于更多信息的气流弹性搜索文档
可以将气流配置为从Elasticsearch读取任务日志,并可选择以标准或json格式将日志写入标准输出。这些日志稍后可以使用fluentd、logstash或其他工具收集并转发到Elasticsearch集群。
当您启用write_stdout = True
时,输出将被写入stdout。如果希望将输出写入文件中,则必须设置write_stdout = False
或将其保留为空。然后,您的logstash配置应该找到这些文件,这将回答您的第二个问题。
干杯迈克尔
https://stackoverflow.com/questions/60936051
复制相似问题