filebeat配置多文件并在logstash中区分索引输出到es中
时间: 2024-05-23 09:14:57 浏览: 114
好的,这是一个比较常见的问题,一般的解决方案如下:
1. 首先,在filebeat的配置文件中进行多文件配置。例如,你可以使用如下的配置:
filebeat.prospectors:
-
paths:
- /var/log/logfile1.log
- /var/log/logfile2.log
- /var/log/logfile3.log
input_type: log
fields:
log_type: logfile1
-
paths:
- /var/log/logfile4.log
- /var/log/logfile5.log
- /var/log/logfile6.log
input_type: log
fields:
log_type: logfile2
这个配置文件会将三个文件(/var/log/logfile1.log, /var/log/logfile2.log, /var/log/logfile3.log)认为是一类,将三个文件(/var/log/logfile4.log, /var/log/logfile5.log, /var/log/logfile6.log)认为是另外一类,其中 fields 中的值可以任意指定,主要是为了在 logstash 中区分不同的日志类型。
2. 在logstash中进行判断。在logstash的配置文件中,我们可以使用条件语句来判断哪些日志属于哪个索引,例如:
input {
beats {
port => 5044
}
}
filter {
if [fields][log_type] == "logfile1" {
mutate {
add_field => {"[@metadata][index]" => "logstash-logfile1-%{+YYYY.MM.dd}"}
}
} else if [fields][log_type] == "logfile2" {
mutate {
add_field => {"[@metadata][index]" => "logstash-logfile2-%{+YYYY.MM.dd}"}
}
} else {
drop {}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "%{[@metadata][index]}"
}
}
这个配置文件会根据 fields 中的值判断哪些日志应该属于哪个索引,并将它们输出到对应的索引中。
希望这个回答可以帮到你!
阅读全文