Logstashでログメッセージが欠損している可能性について

Filebeat,Logstash,Elasticserchを使用してAPサーバで発行するログをログ管理サーバで取得しているのですが、APサーバで発行したログ数と、ElasticSearchに取り込まれたログ数が一致しないという事象が発生しています。ElasticSearchのメモリを増強しましたが事象が解決せず、Logstashが問題なのではないかと考えているのですが、原因が特定できていません。どなたかアドバイス頂けないでしょうか?

grokでのメッセージの抽出は問題なくできていることは確認しています。
messageの内容ですが、タイムスタンプとuuidが含まれており中身が重複するメッセージは存在しないはずです。

    input {
      beats {
        port => 5045
      }
    }

    filter {
      fingerprint {
        source => "message"
        target => "[@metadata][fingerprint]"
        method => "MURMUR3"
      }
      grok {
        match => { "message" => '%{GREEDYDATA:messages}'}
      }
      grok {
        match => { "messages" => "grokの処理を記述しています。" }
      }
      date {
        match => [ "timestamp", "ISO8601" ]
      }
      mutate {
        remove_field => "message"
      }
    }

    output {
      elasticsearch {
        document_id => "%{[@metadata][fingerprint]}"
        index => "online-ap-%{+yyyy.MM}"

fingerprintによるelasticsearchへのdocument_id生成を削除したところ、ログメッセージの欠損がなくなりました。ログメッセージのmessageの内容にはuuidとタイムスタンプが入っているため、重複することはないと考えてたのでが、MURMUR3のハッシュ値が重複しているということなのでしょうか?
可能性の有無についてわかるかたいらっしゃったら教えていただけないでしょうか?

重複しているログの可能性が高いと思います。
調査する場合は、messageフィールドを残して、重複しているmessageがないか cardinality aggregationで見つけることができます。ただ、重い検索なのでご注意を。
もしくは、時間がかかりますが、元のファイルに対してbashからcat <ファイル名のパターン> | sort | uniq -cなどのようにすれば簡単に確認できると思います。

ご回答ありがとうございます。
メッセージの内容は重複しているものはありませんでした。
(メッセージ内にタイムスタンプとuuidが含まれており、同一のものはないため)
ただ、fingerprintの値が重複していたため、document_idが同一になってしまうものがありました。
MURMUR3のハッシュで計算すると値が同一になるものがあったみたいです。
メッセージを全て表示したいので、ハッシュ値を使用するのをやめようと思います。

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.