logstash 將 json 格式 轉string


背景:
我們的日志是json類型,但是在寫入ES時變成一個message 字段string,這種將所有日志寫在一個string 類型時不利於分字段進行查找,並且沒發用kibana 平台使用ES的聚合分析功能。
由於業務的不同,打印的字段比較隨意,而寫入ES中的key最大值要求1000,這樣又不能把日志完全展開作為一個json 結構寫入ES
所以這里的策略是用logstash,將固定的某些字段展開變成ES中的一個key,其余各種自定義的字段完全寫入 message 中

主要用的插件

  1. json插件,從message 字符串中將所有字段全部變成json 結構體
json {
        source => "message"
        skip_on_invalid_json => true
  }

2.將body字段 (json --> string) 變成字符串存儲(具體相應組件查看相關文檔)

json_encode {
        source => "body"
  }

3.配置白名單,過濾所有無用的字段

prune {
        whitelist_names => ["^level$","time","^path$","^traceID$","^addr$","^elapse$","^msg$","^status$","^body$","^response$","^ret$","^message$","^fields$"]
  }

這樣配置過后除了指定的字段外,所有的消息都存在message 中,又能保證ES中key 的有限個
轉來轉去肯定是存在一些性能損失的,但是沒有想到好辦法解決這種需求


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM