Как получить несколько журналов из filebeat?
У меня есть сервер, на котором работают несколько служб, например, nginx mongodb и т. Д. Я хочу получить из него следующие журналы /var/log/nginx/access.log /var/log/tomcat/catalina.out/ /var/log/audit/audit.log и т. д. и т. д.моя конфигурация filebeat выглядит так.
filebeat:
prospectors:
-
paths:
- /var/log/auth.log
- /var/log/syslog
document_type: syslog
input_type: log
prospectors:
-
paths:
- /var/log/nginx/access.log
document_type: nginx-access
input_type: log
output:
### Logstash as output
logstash:
# The Logstash hosts
hosts: ["logstashserver.pr:5044"]
# default is 2048.
logstash conf is
filter {
if [type] == "nginx-access" {
grok {
match => [ "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}"]
overwrite => [ "message" ]
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
}
}
---------
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
но только последний nginx входит в упругий поиск. Я не знаю, как получить и вставить оба журнала в ElasticSearch Kibana
1 ответ
Вы используете другой синтаксис в строке соответствия Grok. Измените его на { "message" => "..." }, как во втором.