2016-10-27 2 views
0

У меня есть logstash filebeat и elasticsearch, работающий на одном узле.logstash not reading logtype field from beats

Я пытаюсь получить logstash для идентификации журналов, обозначенных как «syslog», и сбрасывать их в индекс с именем «syslog», но, похоже, он не видит метку, поскольку все они входят в индекс «без рубрики» (мой улов индексировать все по умолчанию)

Вот мои удары CONFIG

/etc/filebeat/filebeat.yml 
filebeat: 
    prospectors: 
    - 
     paths: 
     - /var/log/messages 
     fields: 
     type: syslog 
output: 
    logstash: 
    hosts: ["localhost:9901"] 

Вот мой logstash конфигурационный файл

/etc/logstash/conf.d/logstash_server_syslog.conf 
input { 
    beats { 
     port => "9901" 
    } 
} 

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}" ] 
    } 
    date { 
     match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] 
    } 
    } 
} 

output { 
    if [type] == "syslog" { 
    elasticsearch { 
     hosts => ["10.0.0.167:9200", "10.0.0.168:9200"] 
     index => "syslog" 
    } 
    } else { 
    elasticsearch { 
     hosts => ["10.0.0.167:9200", "10.0.0.168:9200"] 
     index => "uncategorized" 
    } 
    } 
} 

ответ

1

Глядя на выходе (с стандартный вывод {} строфы) будет с onfirm это, но я предполагаю, что вы пропустили эту часть the doc:

По умолчанию поля, указанные [в «полях» конфигурации '] будут сгруппированы под полей суб-словаря в выходной документ. Чтобы сохранить пользовательские поля в качестве полей верхнего уровня, установите для параметра fields_under_root значение true.

1

Чтобы задать настраиваемое поле type в Filebeat с помощью опции document_type конфигурации.

filebeat: 
    prospectors: 
    - paths: 
     - /var/log/messages 
     document_type: syslog 

Это установит @metadata.type поле для использования с Logstash, тогда как пользовательские поля не будет.