Graylog: データマッピングの問題

Graylogインデックスのデータマッピング問題を解決する方法

👋 Stackheroのドキュメントへようこそ!

Stackheroは、数多くの利点を提供する、すぐに使えるGraylogクラウドソリューションを提供しています。

  • 無制限で専用のSMTP メールサーバーが含まれています。
  • ワンクリックで簡単にアップデート
  • HTTPSで保護されたカスタマイズ可能なドメイン名(例: https://logs.your-company.com)。
  • プライベートで専用のVMによる最適なパフォーマンスと強力なセキュリティ

時間を節約し、生活を簡素化:StackheroのGraylogクラウドホスティングソリューションを試すのに5分しかかかりません!

Graylogでよくある問題は、データマッピングの競合であり、これがインデックス作成の失敗につながることがあります。この問題に遭遇する場合、次のようなログが表示されることがあります。

ElasticsearchException[Elasticsearch exception [type=mapper_parsing_exception, reason=failed to parse field [level] of type [long] in document with id '34fd4d11-36ed-11f0-afc9-0242ac140002'. Preview of field's value: 'error']]; nested: ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=For input string: "error"]];

この問題は、OpenSearchの動的マッピング機能に起因します。動的マッピングは、インデックスに最初に書き込まれたドキュメントに基づいて各フィールドのデータ型を自動的に決定します。一度設定されると、このデータ型は「固定」され、そのフィールドに異なるデータ型を持つ将来のドキュメントは拒否され、マッパー解析例外を引き起こします。

新しいインデックスが作成されると、最初のドキュメントがインデックスマッピングを定義します。例えば、ドキュメントに「level」フィールドが3(数値)として含まれている場合、OpenSearchは「level」のデータ型を「long」(数値型)に設定します。後でGraylogに送信されたドキュメントが「level」フィールドを「error」(文字列型)として設定している場合、データ型が最初に設定された型と一致しないため拒否されます。これにより、mapper_parsing_exceptionエラーが発生し、理由はfailed to parse field [level] of type [long] in document with id 'xxx'.となります。

この問題は、ドキュメント間でデータ型が一貫していない場合、どのフィールドでも発生する可能性があります。

この問題を解決するには、2つのオプションがあります。

理想的な解決策は、Graylogにデータを送信するすべてのシステムでフィールドに使用されるデータ型を標準化することです。例えば、「level」フィールドが常に文字列(「error」、「warn」など)または常に数値(3、4など)として送信されるようにします。この一貫性により、マッピングの競合を防ぎ、すべてのドキュメントが正しく取り込まれることを保証します。

すべてのシステムでデータ型を標準化することが難しい場合、Graylogのパイプラインを使用して受信時にデータ型を変換できます。パイプラインを使用すると、特定の条件に基づいてデータを変換するルールを定義できます。

この解決策を実装するには:

  • GraylogのWebインターフェースで「System」>「Pipelines」に移動します。
  • 「Add new pipeline」をクリックして新しいパイプラインを作成します。
  • 「level」フィールド(または他のフィールド)を希望するデータ型に変換するルールを定義します。例えば、数値レベルを対応する文字列表現(3を「error」、4を「warning」など)に変換できます。

このアプローチにより、すべての受信データが期待されるデータ型に準拠し、マッピングの競合を防ぎます。

上級ユーザー向けに、Graylogはインデックスのマッピングを表示し、手動で調整する機能を提供しています。

  • GraylogのWebインターフェースで「System」>「Indices」に移動します。
  • 関連するインデックスを選択します。
  • 「Configuration」>「Configure index field types」に移動して、フィールドマッピングを表示または変更します。

ただし、手動での調整は慎重に行う必要があります。誤ったマッピングはさらなる取り込み問題を引き起こす可能性があります。