2017-04-25 3 views
0

私はELKのためにexim_mainlogを解析して組み合わせるための手助けが必要です。logstash複数行エグジットログ

問題は次です:

マイlogstash複数行プラグインは、一つのイベントにユニークなメッセージIDを持つログファイルの行を収集することはありません。 4つの文字列を正しい順序で送信しようとすると、正常に動作します。このような 注文:

2017-04-10 00:00:30 1cxKsn-0001GB-2t CTAS=IN RefID= (ISpam= IFlags=v=2.2 cv=Op4/823t c=1 sm=1 tr=0 a=6HVp5djceeYjte4jJb6Ryw==:17 a=AzvcPWV-tVgA:10 a=uHJYF-HtSykr7tHsIToA:9 a=CTTii-5M3Z-LMe4tr8cA:9 a=QEXdDO2ut3YA:10 a=pyshpDcKeHPZtuIe0Z8A:9) 
2017-04-10 00:00:30 1cxKsn-0001GB-2t <= [email protected] H=m37s3-2-28db.ispgateway.com [176.221.47.15] P=smtp S=2567 [email protected] 
2017-04-10 00:00:30 1cxKsn-0001GB-2t => [email protected] R=internal_gw T=remote_smtp H=192.168.1.11 [192.168.1.11] C="250 OK id=1cxKso-0002iK-Q7" 
2017-04-10 00:00:30 1cxKsn-0001GB-2t Completed 

otderが正しければ - すべては良い作品。 同じイベントの行間に他のゴミ情報が挿入されていると、それは分解されます。

実際のログは、次のようになります:

2017-04-10 00:00:30 1cxKsn-0001GB-2t CTAS=IN RefID= (ISpam= IFlags=v=2.2 cv=Op4/823t c=1 sm=1 tr=0 a=6HVp5djceeYjte4jJb6Ryw==:17 a=AzvcPWV-tVgA:10 a=uHJYF-HtSykr7tHsIToA:9 a=CTTii-5M3Z-LMe4tr8cA:9 a=QEXdDO2ut3YA:10 a=pyshpDcKeHPZtuIe0Z8A:9) 
2017-04-10 00:00:30 1cxKsn-0001GB-2t <= [email protected] H=m37s3-2-28db.ispgateway.com [176.221.47.15] P=smtp S=2567 [email protected] 
2017-04-10 00:00:30 1cxKsn-0001GB-2t => [email protected] R=internal_gw T=remote_smtp H=192.168.1.11 [192.168.1.11] C="250 OK id=1cxKso-0002iK-Q7" 
2017-04-10 00:00:30 1cxKsn-0001GB-2t Completed 
2017-04-10 00:00:30 fixed_login authenticator failed for (faYNpaLtF) [192.168.24.24]: 535 Incorrect authentication data 
2017-04-10 00:00:30 fixed_login authenticator failed for (lkLmh6Lk) [192.168.24.24]: 535 Incorrect authentication data 
2017-04-10 00:00:30 fixed_login authenticator failed for (dLKdHZ) [192.168.24.24]: 535 Incorrect authentication data 
2017-04-10 00:00:30 H=mx4.rissoidupgrades.com [79.137.110.132] F=<[email protected]> rejected RCPT <[email protected]>: ICIR16 - unknown user 
2017-04-10 00:00:30 unexpected disconnection while reading SMTP command from ([111.111.111.111]) [117.241.112.188] (error: Connection reset by peer) 
2017-04-10 00:00:30 1cxKso-0001GQ-1R CTAS=IN RefID= (ISpam=Confirmed IFlags=v=2.2 cv=Op4/823t c=1 sm=1 tr=0 a=LMNu0MzFDzFZvX0DaJwgIA==:17 a=AwJkFeBFn10A:10 a=AzvcPWV-tVgA:10 a=HFQ-CQzmNWWYERzML24A:9) 
2017-04-10 00:00:31 1cxKso-0001GQ-1R <= [email protected] H=abcdrfg.managed.com [62.138.219.130] P=esmtp S=671 [email protected] 
2017-04-10 00:00:30 fixed_login authenticator failed for (faYNpaLtF) [192.168.24.24]: 535 Incorrect authentication data 
2017-04-10 00:00:30 fixed_login authenticator failed for (lkLmh6Lk) [192.168.24.24]: 535 Incorrect authentication data 
2017-04-10 00:00:30 fixed_login authenticator failed for (dLKdHZ) [192.168.24.24]: 535 Incorrect authentication data 
2017-04-10 00:00:30 H=mx4.rissoidupgrades.com [79.137.110.132] F=<[email protected]> rejected RCPT <[email protected]>: ICIR16 - unknown user 
2017-04-10 00:00:30 unexpected disconnection while reading SMTP command from ([117.241.112.188]) [117.241.112.188] (error: Connection reset by peer) 
2017-04-10 00:00:31 1cxKso-0001GQ-1R => [email protected] R=internal_gw T=remote_smtp H=192.168.1.11 [192.168.1.11] C="250 OK id=1cxKsp-0002iR-QJ" 
2017-04-10 00:00:31 1cxKso-0001GQ-1R Completed 

終わりに、私は私のKibanaでID 1cxKsn-0001GB-2t1cxKso-0001GQ-1Rを持つ2つのイベントを持っていると思います。ここで

は私のパターンです:ここでは

EXIM_MSGID [0-9A-Za-z]{6}-[0-9A-Za-z]{6}-[0-9A-Za-z]{2} 
EXIM_FLAGS (<=|[-=>*]>|[*]{2}|==) 
EXIM_DATE %{YEAR:exim_year}-%{MONTHNUM:exim_month}-%{MONTHDAY:exim_day} %{TIME:exim_time} 
EXIM_DATE_EMPTY %{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME} 
EXIM_PID \[%{POSINT}\] 
EXIM_QT ((\d+y)?(\d+w)?(\d+d)?(\d+h)?(\d+m)?(\d+s)?) 
EXIM_EXCLUDE_TERMS (Message is frozen|(Start|End) queue run| Warning: | retry time not reached | no (IP address|host name) found for (IP address|host) | unexpected disconnection while reading SMTP command | no immediate delivery: |another process is handling this message) 
EXIM_REMOTE_HOST (H=(%{NOTSPACE:remote_hostname})?(\(%{NOTSPACE:remote_heloname}\))?\[%{IP:remote_host}\]) 
EXIM_INTERFACE (I=\[%{IP:exim_interface}\](:%{NUMBER:exim_interface_port})) 
EXIM_PROTOCOL (P=%{NOTSPACE:protocol}) 
EXIM_MSG_SIZE (S=%{NUMBER:exim_msg_size}) 
EXIM_HEADER_ID (id=%{NOTSPACE:exim_header_id}) 
EXIM_SUBJECT (T=%{QS:exim_subject}) 
NUM_EMAIL (%{HOSTNAME}\@%{HOSTNAME}) 
EXIM_RECEIVER (=>\s*%{EMAILADDRESS:receiver}(\s*<%{EMAILADDRESS:envelope_sndr}>)?|=>\s*%{NUM_EMAIL:receiver}(\s*<%{EMAILADDRESS:envelope_sndr}>)?) 
EXIM_ROUTER (R=%{WORD:router}) 
EXIM_TRANSPORT (T=%{WORD:transport}) 
EXIM_REMOTE_SMTP_CONFIRM (C="%{GREEDYDATA:smtp_remote_response}") 



EXIM_SPAM %{EXIM_DATE_EMPTY} %{EXIM_MSGID} CTAS=%{WORD:exim_spam_dest} RefID=(%{WORD:exim_refid})? \((I|O)Spam=(%{WORD:exim_spam})? ((I|O)Virus=%{WORD:exim_virus})?(I|O)Flags=(%{GREEDYDATA:exim_spam_flags})? cv=%{GREEDYDATA:exim_spam_other} \) 

EXIM_LEFT %{EXIM_DATE_EMPTY} %{EXIM_MSGID} %{EXIM_FLAGS:exim_flags} %{GREEDYDATA:exim_email} (%{EXIM_REMOTE_HOST})? %{EXIM_PROTOCOL} (?:X=%{GREEDYDATA:exim_auth_details})?(?:A=%{GREEDYDATA:exim_authenticator})?(?:%{EXIM_MSG_SIZE:exim_mes_size})? (?:id=%{NUM_EMAIL:exim_uid})? 

EXIM_RIGHT %{EXIM_DATE_EMPTY} %{EXIM_MSGID} %{EXIM_RECEIVER} %{EXIM_ROUTER} %{EXIM_TRANSPORT} %{EXIM_REMOTE_HOST} %{EXIM_REMOTE_SMTP_CONFIRM} 

EXIM_SPAM_CHECK_ST %{EXIM_DATE} %{EXIM_MSGID:exim_msgid} Completed 

は私filter.confです:

filter { 
    if [type] == "exim" { 
     multiline { 
     patterns_dir => "/etc/logstash/patterns.d" 
     pattern => "%{EXIM_DATE} %{EXIM_MSGID:msgid}" 
     what => "previous" 
     } 
     grok { 
     patterns_dir => "/etc/logstash/patterns.d" 
     break_on_match => false 
     match   => [ "message", "^%{EXIM_SPAM}" ] 
     } 
     grok { 
     patterns_dir => "/etc/logstash/patterns.d" 
     break_on_match => false 
     match   => [ "message", "^%{EXIM_LEFT}" ] 
     } 

     grok { 
     patterns_dir => "/etc/logstash/patterns.d" 
     break_on_match => false 
     match   => [ "message", "^%{EXIM_RIGHT}" ] 
    } 
    grok { 
     patterns_dir => "/etc/logstash/patterns.d" 
     break_on_match => false 
     match   => [ "message", "^%{EXIM_SPAM_CHECK_ST}" ] 
    } 
    } 
} 

答えて

0

複数行の内の1つのイベントに関する累積情報収集のためにあなたには、いくつかの方法を持ってログインします。

  • 「集計フィルタプラグイン」を使用
  • 「ElasticS earch filter plugin "

まず、すべてのイベント情報を1つのMessageIdに集める必要があります。 しかし、これには多くの問題が伴います。いくつかのログラインにはMessageIdがなく、多くのEximワーカーは独自の行を混在して書きます。 2番目に、ElastisSearchを使用してイベント情報を保存している場合、以前に保存したイベントを検索してそのフィールドを更新するための追加要求を行うことができます。

このようなESの例https://gist.github.com/greem/6e02b57ff26eaacb01b2

関連する問題