ログ出力先に複数フォーマットのログが出力される場合

logstashの仕様でご存じでしたら教えて下さい。
現在下記のような設定を入れています。

  1. input {
  2.       beats { port => "5044" }
    
  3. }
  4. filter {
  5.      grok {
    
  6.                match => {"message" => '%{TIMESTAMP_ISO8601}\s*%{DATESTAMP_OTHER}%{LOGLEVEEL}:\s*%{GREEDYDATA:multilog}'
    
  7.       }
    
  8. }
  9. output {
  10.            elasticsearch {
    
  11.                                      hosts    => [ 'ホストIP' ]
    
  12.             }
    
  13. }

filebeatでtest.logの内容を取り込むのですが、このtest.logには様々なフォーマットのログが入ってきます。

matchで指定したメッセージと一致しない場合に、
elasticsearchには取り込まれないようにしたいです。

何か良い方法はあるでしょうか?

grokでマッチしなかった場合、初期値のままであれば_grokparsefailureという値がtagsの中に入っているかと思います。

このことから、「tagsの中に_grokparsefailureがなければ、outputのelasticsearchを実行する」という条件をつけられれば良いと考えれば、こんな書き方で実現できるかと思います。

output {
    if "_grokparsefailure" not in [tags] {
        elasticsearch { ... }
    }
}