Graylog: 問題原因
本文件是資料對應(Data Mapping)問題指南的一部分。請在此處查看完整指南:如何解決 Graylog 索引資料對應問題。
👋 歡迎使用 Stackhero 文件
Stackhero 提供全代管的 Graylog cloud 解決方案,專為速度與簡易性設計。您可以:
- 依賴隨服務附贈的無限制、專屬 SMTP 電子郵件伺服器。
- 只需一鍵即可輕鬆更新,無需手動操作。
- 使用由 HTTPS 保護的自訂網域名稱(例如 https://logs.your-company.com),讓您的團隊能安全且直接地存取。
- 在專屬私有基礎架構上享有卓越的效能與安全性,無需與他人共用資源,也沒有「吵雜鄰居」問題。
專注於您的資料,而非工具本身:只需幾分鐘,即可開始使用 Stackhero 的 Graylog cloud hosting 解決方案。
這個問題源自於 OpenSearch 的動態對應(dynamic mapping)功能。動態對應會根據寫入索引的第一份文件,自動判斷每個欄位的資料型態。一旦型態被設定後就會「鎖定」,未來如果有文件在同一欄位使用不同的資料型態,該文件就會被拒絕,並產生 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'.
只要同一欄位在不同文件間資料型態不一致,都可能發生這個問題。