Как получить несколько журналов из 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" => "..." }, как во втором.

Другие вопросы по тегам