2016-07-12 6 views
0

私はいくつかのDB復元ログを読むためにlogstashを使用しています。ここにいくつかのサンプルレコードがあります。Logstashはフィールドを追加できませんか?

07/08/2016 6:33:22.50: START restore database      
SQL2540W Restore is successful, however a warning "2539" was encountered 
during Database Restore while processing in No Interrupt mode. 
07/08/2016 6:33:28.93: END restore database       
SQL4406W The DB2 Administration Server was started successfully. 
07/08/2016 6:35:35.29: END restart server       
connect reset 
DB20000I The SQL command completed successfully. 
07/08/2016 6:35:38.48: END p:\s6\source\system\CMD\res_uw.cmd  

ここに私のconfファイルのフィルタ部分があります。

if ([message] =~ /Backup successful/){ 
    grok{ 
     match => {"message" => ['%{GREEDYDATA:Message}'] } 
    } 
    mutate { 
     add_tag => "send_to_es" 
     add_field => {"Timestamp" => "%{GREEDYDATA:DATETIME}"} 
    } 
} 
if ([message] =~ /warning "2539"/){ 
    grok{ 
     match => {"message" => ['%{GREEDYDATA:Message}'] } 
    } 
    mutate { 
     add_tag => "send_to_es" 
     add_field => {"Timestamp" => "%{GREEDYDATA:DATETIME}"} 
    } 
} 
if ([message] =~ /(END p:|END P:)/){ 
    grok{ 
     match => {"message" => ['%{GREEDYDATA:DATETIME}:%{SPACE}END%{SPACE}%{GREEDYDATA:Mis}'] } 
     remove_field => "%{GREEDYDATA:Mis}" 
    } 
    mutate { 
     add_tag => "send_to_es" 
    } 
} 

私は同時にインデックスに他のメッセージにメッセージに私の記録の最後の行から抽出されたデータ「DATETIME」を追加します。ただし、フィールドを正常に追加できませんでした。出力は

になります
 "message": "SQL2540W Restore is successful, however a warning \"2539\" was encountered \r\r", 
     "@version": "1", 
     "@timestamp": "2016-07-12T02:28:52.337Z", 
     "path": "C:/CIGNA/hkiapp67_db_restore/res_uw.log", 
     "host": "SIMSPad", 
     "type": "txt", 
     "Message": "SQL2540W Restore is successful, however a warning \"2539\" was encountered \r\r", 
     "Timestamp": "%{GREEDYDATA:DATETIME}", 
     "tags": [ 
     "send_to_es" 
     ] 

私はこれをどのように解決できますか?

答えて

1

Logstashは、回線を受信すると、他の回線に関する情報を持っていません。必要なすべての行を日付付きの行で再編成するには、複数行のコーデック/フィルタを使用する必要があります。次に、grokフィルタを使用して日付を抽出し、ドキュメントに追加します。

マルチコーデック/フィルタの構成は次のようになります。これにより

multiline { 
    pattern => "%{DATE}" 
    negate => "true" 
    what => "next" 
} 

を、パターンDATEで始まらないすべての行は次の行に結合されます。

+0

集計関数もそうすることができますか? –

+0

@KennedyKan私がドキュメントで読んだことから、それを実行できるはずです。しかし、私はこのフィルタを使用したことがないので、私はあなたにこれを手伝うことができます – baudsp

関連する問題