2017-01-12 3 views
0

私はtriyngでircサーバーを監視しています。そして、私はメッセージが内部の特定の単語と一致する場合にのみ、新しい数字フィールド(例:Alert_level)を作成する方法に賭けています。 例:メッセージ:ABC | Alert_level:1;メッセージ:ZYX | Alert_level:3.一致するフィールドを追加する

その実行コード

input { 
     irc { 
       channels => "#xyz" 
       host => "a.b.c" 
       nick => "myusername" 
       catch_all => true 
      get_stats => true 
     } 
} 


output { 
     stdout { codec => "rubydebug" } 
     elasticsearch { 
             hosts => "localhost" 
             index => "logstash-irc-%{+YYYY.MM.dd}" 
     } 
} 

ありがとうございました!

+0

それは動作しませんhttp://pastebin.com/tvfzCRKA – Jam

+0

'grok'フィルタが必要です。 'irc'入力から得られるサンプルメッセージを見せてください。 – Val

答えて

1

上記の@Valはgrokフィルタを使用して、inputのものと一致するようにする必要があります。あなたが直接ものを作成することはできませんlogstashを通じて数値フィールドを作成するために変換を行う必要があり

filter {   
    grok { 
     match => { "message" => "%{GREEDYDATA:somedata}" }   
    } 

    if "ZYX" in [message]{ <-- change your condition accordingly 
     mutate { 
      add_field => { "%{Alert_level}" => "12345" } <-- somefield is the field name 
      convert => { "Alert_level" => "integer" } <-- do the conversion 
     } 

    } 
} 

:たとえば、あなたのfilterはこのような何かを見ることができます。上記はあなたが再現できるようにサンプルです。あなたの要件に関してgrokの一致を変更してください。それが役に立てば幸い!

+0

ありがとうございました!私はこれを使用し、仕事:もし[メッセージ] {mutate {add_field => {"Alert_level" => "1"}}} – Jam

+0

の "github" @JackMagorそれは助けてくれました.. :) – Kulasangar

関連する問題