2016-09-01 11 views
-1

私はいくつかのカスタムファイルをロギングするためにLogstashを実装しようとしています。そのためには "out of swap memory"という単語を含む行が必要です。以下のI私は希望の行を取得するにはログインする必要がありますカスタムログファイルのcustom_error型フィルタを作成している中/etc/logstash/conf.d/10-syslog.confファイルの内容です:grokパターンがLogstashのログファイルから特定の単語を取得する

filter { 
    if [type] == "syslog" { 
    grok { 
     match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" } 
     add_field => [ "received_at", "%{@timestamp}" ] 
     add_field => [ "received_from", "%{host}" ] 
    } 
    syslog_pri { } 
    date { 
     match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] 
    } 
    } 
    if [type] == "custom_error" { 
    grok { 
     match => { "message" => "Exception java.lang.OutOfMemoryError: requested %{NUMBER:int} bytes for promotion. Out of swap space?" } 
     add_field => [ "received_at", "%{@timestamp}" ] 
     add_field => [ "received_from", "%{host}" ] 
    } 
    date { 
    match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] 
    } 
} 
} 

しかし、私は希望の結果を得ることができず、必要な行とともに他のメッセージがたくさん表示され、ログメッセージが長すぎます。 ログファイルから必要な行だけを得るにはどうすればよいですか?

答えて

0

あなたの質問が分かっている場合は、logstash設定で条件付きを使用できます。
説明書にhereと記載されています。

あなたは、具体的単語out of swap memoryを含む行をフィルタ処理したいのであれば、あなたが使用することができます。

if ([message] =~/out of swap memory/) { 
    ... 
    only the lines containing "out of swap memory" will go through this part. 
} 
関連する問題