Graylog: エラー「failed to parse field [XXXX] of type [YYYY]」の対処
このドキュメントはクイックスタートガイドの一部です。完全なガイドはこちらからご覧いただけます:Graylogの使い始め方。
👋 Stackheroのドキュメントへようこそ!
Stackheroは、数多くの利点を提供する、すぐに使えるGraylogクラウドソリューションを提供しています。
- 無制限で専用のSMTP メールサーバーが含まれています。
- ワンクリックで簡単にアップデート。
- HTTPSで保護されたカスタマイズ可能なドメイン名(例: https://logs.your-company.com)。
- プライベートで専用のVMによる最適なパフォーマンスと強力なセキュリティ。
時間を節約し、生活を簡素化:StackheroのGraylogクラウドホスティングソリューションを試すのに5分しかかかりません!
次のようなエラーが発生する場合があります:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
このエラーは、StackheroダッシュボードのログやGraylog管理画面の System > Overview > Indexer failures で確認できます。
このエラーは、timeフィールドに期待される型(この場合は「long」型の数値)と異なる値が送信されたことを示しています。GraylogはOpenSearchのダイナミックマッピング機能を利用しています。初めてログが送信される際、OpenSearchはフィールド型を推測します。たとえば、timeフィールドに数値1234が含まれていれば、OpenSearchはそれを数値型として定義します。その後、timeフィールドに文字列"abcd"が送信されると、OpenSearchは数値を期待しているためエラーとなり、受け付けません。
なお、timeというフィールド名は例示です。実際には任意のフィールド名・型で同様の問題が発生します。
この問題を解決するには、OpenSearchが期待する型を再定義する必要があります。詳細はGraylog公式ドキュメントをご参照ください。
OpenSearchマッピングの更新
作業前に、StackheroダッシュボードでOpenSearchアクセスを有効にしてください。Graylogサービス画面で「Configure」ボタンをクリックし、OpenSearchアクセスを有効化します。
これらの変更は慎重に行ってください。不適切な設定はOpenSearchクラスタをブロックし、データ損失の原因となる場合があります。不明な点がある場合は作業を中止してください。
-
新しいマッピングを定義します。この例では、
timeフィールドをstring型に再定義します。利用可能な型はOpenSearchフィールド型ドキュメントをご参照ください。 -
以下の内容を
graylog-custom-mapping.jsonというファイル名で保存します:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
次のcurlコマンドでこのファイルを送信します(
<XXXXXX>.stackhero-network.comはご自身のインスタンスのドメイン名に置き換えてください):curl -u 'admin' -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'https://<XXXXXX>.stackhero-network.com/opensearch/_template/graylog-custom-mapping?pretty'以下のようなレスポンスが返れば成功です:
{ "acknowledged": true } -
最後に、次のコマンドでマッピングが更新されたことを確認します(必要に応じてドメインを変更してください):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'