2016-05-23 5 views
0

私の問題は、elasticsearch経由でkibanaに送信したいlogstashパターン(wchichは正しい)を作成したことです。すべて正常に動作するはずですが、キバナはパターンを検出できません(マッピングをフェッチできません)。kibanaにパターンがありません

ここに私のlogstash.confです:

input { 
    udp { 
    port => 1514 
    type => docker 
    } 
} 

filter { 


    grok { 
    match => { 
       "message" => "<%{NUMBER}>%{DATA}(?:\s+)%{DATA:hostname}(?:\s+)%{DATA:imageName}(?:\s+)%{DATA:containerName}(?:\s+\[%{NUMBER}\]:\s+)(?:%{NUMBER:logCode}?(?:\s*)\[(?<logDate>%{YEAR}-%{MONTHNUM}-%{MONTHDAY}T%{HOUR}:%{MINUTE}:%{SECOND}Z)\] %{LOGLEVEL:logLevel}(?:\s*); %{DATA:logAdditionalInfo};)?%{GREEDYDATA:logMsg}" 
      } 
     keep_empty_captures => false 
     remove_field => ["message"] 
    } 

    #check if logCode was matched, if not then add a logCode = 0 
    if [logCode] !~ /.+/ { 
     mutate { 
     add_field => { "logCode" => "0"} 
    } 
    } 
} 

output { 
     elasticsearch { } 
    } 

任意のアイデアはどのように私はこの問題を解決することができますか?

+0

あなたの問題について詳しく説明できますか?だからあなたのGrokパターンはうまく動作しますが、正確にあなたは木場で何をしようとしていますか? Grokが作成した抽出されたフィールドのいずれかを検索することができます。 – Chro

答えて

0

お返事ありがとうございます。

私はできる限り最善の問題を解決しようとします。

設定ファイル(logstash.conf)を作成しました。私はelasticsearchとkibanaをインストールしてログを処理しましたが、logstashでテストを実行した後、kibanaはメッセージを受け取らないので、kibanaはマッピングを取得できません。

私はたとえすべての[OK]を確認するために、最も単純なログを処理しようとしましたので、私はコマンドを使用:

/opt/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts => localhost } stdout { codec => rubydebug } } 

はので、私はelasticsearch、出力が正しいかどうかを確認するためにログを送信することができます。

hello world 
{ 
     "message" => "hello world", 
     "@version" => "1", 
    "@timestamp" => "2016-05-27T08:37:29.365Z", 
      "host" => "tm" 
} 

のが、elasticsearchには出力が(http://localhost:9200/_search?prettyが私のログが表示されません)ありません:コマンドラインのすべてから

は正常に見えます。

私はlogstash、elasticsearchとkibanaをチュートリアル(ステップバイステップ)からインストールしているので、何が問題なのか分かりません。

[OK]を、私は何が起こったのか知らないが、それは今標準入力で働いている:動作しない

"_index" : "logstash-2016.05.27", 
     "_type" : "logs", 
     "_id" : "AVTyGOQ718zRCPMUwWXj", 
     "_score" : 1.0, 
     "_source" : { 
     "message" : "hey hey hey world", 
     "@version" : "1", 
     "@timestamp" : "2016-05-27T12:03:17.409Z", 
     "host" : "tm" 

しかし/etc/logstash/conf.d/からのconfとlogstashを実行している(設定試験はokです) 。ここに私の新しいlogstash.confファイルがあります:

input { 
      file { 
       path => "filepath" 
       start_position => "beginning" 
       codec => multiline { 
        pattern => "^~" 
        negate => true 
        what => previous 
       } 
      } 
     } 

    filter { 
     mutate { 
      gsub => [ "message", "\r", "" ] 
     } 

     grok { 
      match => { "message" => "(?m)~%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:severity} %{GREEDYDATA:message}" } 
      overwrite => [ "message" ] 
     } 

     date { 
      match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss,SSS" ] 
     } 
    } 

output { 
     elasticsearch { 
      hosts => ["localhost"] 
      index => "logs-%{{+YYYY.MM.dd}}" 
      flush_size => 5 
     } 
    } 

あなたはelasticsearchは、任意の情報を受信して​​いない理由を明確に伝える何かを参照していますか?

関連する問題