2016-10-27 10 views
0

私はlogstash filebeatとelasticsearchを1つのノードで実行しています。logstashはビートからlogtypeフィールドを読み取っていません

「syslog」というラベルの付いたログを特定して「syslog」というインデックスにダンプするためにlogstashを取得しようとしていますが、「分類されていない」インデックスにすべて入っているので私のキャッチすべてのデフォルトのインデックス)ここで

はCでしょう)をstdout {}スタンザで出力を見ると、私の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

(ここで

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

をconfigの私のビートされていますonfirmこの、私はあなたがthe docのこの部分を逃したことを推測している:デフォルトでは

、あなたは[「フィールド」設定 "に]指定フィールドは フィールドの下にグループ化されますサブディクショナリで出力ドキュメント。カスタム フィールドを最上位フィールドとして格納するには、fields_under_rootオプションをtrueに設定します。

1

document_type設定オプションを使用してFilebeatでカスタムtypeフィールドを設定するには、次のように入力します。

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

これは、カスタムフィールドのに対してではないでしょうLogstashで使用するために@metadata.typeフィールドを設定します。

関連する問題