Graylog: 問題の原因

このドキュメントはデータマッピングの問題ガイドの一部です。完全なガイドはこちらからご覧いただけます:Graylogインデックスのデータマッピング問題の解決方法

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

Stackhero は、スピードとシンプルさを追求したフルマネージドの Graylog cloud ソリューションを提供しています。主な特長は以下の通りです:

  • サービスに含まれる、無制限かつ専用の SMTP メールサーバーをご利用いただけます。
  • アップデートはワンクリックで簡単に適用でき、手動での作業は不要です。
  • HTTPS で保護された カスタムドメイン名(例:https://logs.your-company.com)を利用でき、チームに安全かつ直接的なアクセスを提供します。
  • プライベートかつ専用インフラストラクチャ上で、高いパフォーマンスセキュリティを実現。他のユーザーとのリソース共有やノイズの心配はありません。

ツールではなくデータに集中できます:Stackhero の Graylog cloud hosting ソリューションは、数分でご利用を開始いただけます。

この問題は、OpenSearchのダイナミックマッピング機能に起因します。ダイナミックマッピングは、インデックスに最初に書き込まれたドキュメントの内容に基づいて各フィールドのデータ型を自動的に決定します。一度データ型が設定されると、その型は「固定」され、以降のドキュメントで同じフィールドに異なるデータ型が指定されると、マッピングパース例外(mapper parsing exception)が発生し、ドキュメントが拒否されます。

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

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