2016-11-11 11 views
1

私はglassbeatログファイルの概要をFilebeat - > Logstash - > Elasticsearch - > Kibanaを使用しています。logstash gork filter error:無効な設定を取得しました

Logstashフィルタの設定が間違っていますか?そのような

私のフィルタの設定を見て:

filter { 
    if [type] == "log" { 
    grok { 
     match => { "message", "(?m)\[\#\|%{TIMESTAMP_ISO8601:timestamp}\|%{LOGLEVEL:Log Level}\|%{DATA:server_version}\|%{JAVACLASS:Class}\|%{DATA:thread}\|%{DATA:message_detail}\|\#\]" } 
     add_field => [ "Log level", "%{LOGLEVEL:Log Level}" ] 
    } 
    } 
syslog_pri { } 
date { 
    match => {[ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]} 
    } 
} 

私は

http://pastebin.com/Hh9ECFjd

{:timestamp=>"2016-11-11T14:40:35.247000+0000", :message=>"fetched an invalid config", :config=>"input {\n lumberjack {\n port => 5000\n type => \"log\"\n ssl => false\n #ssl_certificate => \"/etc/pki/tls/certs/logstash-forwarder.crt\"\n #ssl_key => \"/etc/pki/tls/private/logstash-forwarder.key\"\n }\n}\n\ninput {\n beats {\n port => 5044\n ssl => false\n # ssl_certificate => \"/etc/pki/tls/certs/logstash-beats.crt\"\n # ssl_key => \"/etc/pki/tls/private/logstash-beats.key\"\n }\n}\n\nfilter {\n if [type] == \"log\" {\n grok {\n  match => { \"message\", \"(?m)\\[\\#\\|%{TIMESTAMP_ISO8601:timestamp}\\|%{LOGLEVEL:Log Level}\\|%{DATA:server_version}\\|%{JAVACLASS:Class}\\|%{DATA:thread}\\|%{DATA:message_detail}\\|\\#\\]\" }\n  add_field => [ \"Log level\", \"%{LOGLEVEL:Log Level}\" ]\n }\n }\n syslog_pri { }\n date {\n  match => {[ \"timestamp\", \"MMM d HH:mm:ss\", \"MMM dd HH:mm:ss\" ]}\n }\n}\n\n\nfilter {\n if [type] == \"nginx-access\" {\n grok {\n  match => { \"message\" => \"%{NGINXACCESS}\" }\n }\n }\n}\n\noutput {\n elasticsearch {\n hosts => [\"http://localhost:9200\"]\n sniffing => true\n manage_template => false\n index => \"%{[@metadata][beat]}-%{+YYYY.MM.dd}\"\n document_type => \"%{[@metadata][type]}\"\n }\n}\n\n", :reason=>"Expected one of #, => at line 23, column 27 (byte 461) after filter {\n if [type] == \"log\" {\n grok {\n  match => { \"message\"", :level=>:error} 

感謝を記録Logstash filebeat 5.0

sudo ./filebeat -e -c filebeat-logstash.yml -d "publish 

ERR Failed to publish events caused by: EOF 
2016/11/11 14:53:54.397825 single.go:91: INFO Error publishing events (retrying): EOF 
2016/11/11 14:54:09.232146 logp.go:230: INFO Non-zero metrics in the last 30s:  filebeat.harvester.open_files=1 libbeat.logstash.call_count.PublishEvents=5 libbeat.logstash.publish.read_errors=5 libbeat.logstash.publish.write_bytes=5542 libbeat.publisher.published_events=2047 filebeat.harvester.running=1 libbeat.logstash.published_but_not_acked_events=10235 filebeat.harvester.started=1 

開始 あらかじめ。

トーマス

答えて

1

あなたの設定で間違ったことがいくつかあります。

grok { 
    match => { "message", "(?m)\[\#\|%{TIMESTAMP_ISO8601:timestamp}\|%{LOGLEVEL:log_level}\|%{DATA:server_version}\|%{JAVACLASS:Class}\|%{DATA:thread}\|%{DATA:message_detail}\|\#\]" } 
} 

フィールド名にはスペースを使用しないでください。解析するフィールドとグロスストリングは矢印=>が必要です。それらはサポートされていません。また、grokがそれをしているので、loglevelフィールドを追加する必要はありません。

date { 
    match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] 
} 

日付の一致に中括弧は必要ありません。配列が必要なためです。

lumberjack inputには、SSLを使用する必要があります。ssl => falseで無効にすることはできません。これはビートの入力にも有効です。

フル設定は次のようになります。あなたの設定をデバッグに関する

input { 
    lumberjack { 
    port => 5000 
    type => "log" 
    ssl_certificate => "/etc/foo.crt" 
    ssl_key => "/etc/foo.key" 
    } 
} 
input { 
    beats { 
    port => 5044 
    ssl => false 
    } 
} 
filter { 
if [type] == "log" { 
    grok { 
     match => { "message" => "(?m)\[\#\|%{TIMESTAMP_ISO8601:timestamp}\|%{LOGLEVEL:log_level}\|%{DATA:server_version}\|%{JAVACLASS:Class}\|%{DATA:thread}\|%{DATA:message_detail}\|\#\]" } 
    } 
    } 
syslog_pri { } 
date { 
    match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] 
    } 
} 
output { 
    elasticsearch { 
    hosts => ["http://localhost:9200"] 
    sniffing => true 
    manage_template => false 
    index => "%[@metadata][beat]}-%{+YYYY.MM.dd" 
    document_type => "%[@metadata][type]" 
    } 
} 

もう一つ。あなたはあなたのログ・スタッシュ・ログを掲示し、ログ・スタッシュ自体はそれが解釈できないものをあなたに伝えています。

:reason=>"Expected one of #, => at line 23, column 27 (byte 461) after filter { 
    if [type] == \"log\" { 
    grok { 
     match => { \"message\"", :level=>:error} 

あなたはすぐにあなたが見逃している可能性のあるエラーを見つけることができますこの方法です。

+0

こんにちはFairyありがとう。 編集したフィルタ設定を使用しましたが、同じエラーが発生しました。 ここに私の完全な設定ファイルhttp://pastebin.com/tGegZuec :理由=> "フィルターの後に#、=>行23、列26(458バイト) "log \" {\ n grok {\ n一致=> {\ "メッセージ\" "、:レベル=>:エラー} 何が問題でしたか?私はまだ得られなかった。 – zoram

+1

@zoram私は自分の答えを更新しました。私は今実行される完全な固定構成を追加しました。グロークマッチの矢と木材のSSLではありません。 – Fairy

+0

ありがとう!今それは働く。 しかし、私はキバナのデータを見ることができません。木場でインデックスパターン "filebeat- *"を取得できましたが、選択するフィールドはありません。 logstash出力:http://pastebin.com/awaCC580 ファイルの出力:http://pastebin.com/DsRswEdT – zoram

関連する問題