2016-04-05 6 views
0

で特定のフィールドを追加するには、イベント・メッセージのexmpleです:Logstash一定値以下

{ 
"timestamp":"2016-03-29T22:35:44.770750-0400", 
"flow_id":45385792, 
"in_iface":"eth1", 
"event_type":"alert", 
"src_ip":"3.3.3.8", 
"src_port":21, 
"dest_ip":"2.2.2.2", 
"dest_port":52934, 
"proto":"TCP", 
"alert":{ 
    "action":"allowed", 
    "gid":1, 
    "signature_id":4027, 
    "rev":0, 
    "signature":"FTP Successful Login", 
    "category":"", 
    "severity":3 
    }, 
"payload":"MjU3ICIvaG9tZS9uZXd1c2VyIg0K", 
"payload_printable":"257 newuser", 
"stream":0, 
"packet":"AFBWo0NoAFBWoxZWCABFAABJKDpAAEAGCGcDAwMIAgICAgAVzsbd4MhqOBOjfoAYAOMYcwAAAQEIChHN4EQHnwugMjU3ICIvaG9tZS9uZXd1c2VyIg0K" 
} 

そして私は、文字列"newuser"を識別できるようにしたいと思います(数"257"後に必ず来る)とuserという別のフィールドを作成し、"newuser"文字列を追加します。

マイLogstash設定ファイル以下の通りです:

input 
    beats 
     port => 5044 
     codec => json 
     type => "SuricataIDPS" 


output 
    elasticsearch 
     hosts => ["localhost:9200"] 
     sniffing => true 
     manage_template => false 
     index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" 
     #document_type => "%{[@metadata][type]}" 

にはどうすれば"newuser"文字列を抽出することができ、その値を新しいフィールドを追加するには?

答えて

0

あなたは以下を参照してください、grokフィルタを使用して設定してfilterスタンザを定義する必要があります。

input { 
    beats { 
     port => 5044 
     codec => json 
     type => "SuricataIDPS" 
    } 
} 

filter { 

    grok { 
     match => ["payload_printable", "257 (?<user>.+)"] 
     tag_on_failure => [] 
    } 

} 

output { 
    elasticsearch { 
     hosts => ["localhost:9200"] 
     sniffing => true 
     manage_template => false 
     index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" 
     #document_type => "%{[@metadata][type]}" 
    } 
} 
+0

おかげでたくさん! 条件を追加する場合は、たとえば、他のフィールドをチェックします。例えば https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html :あなたはのif-elseのif-else文を使用することができます –

+0

'[プロト]場合== "TCP" { GROK {マッチ=> "payload_printable" "257(?。+)"] tag_on_failure => [] }} ' –