昨天上傳 Log 檔到 Elastic Cloud 遇到很多問題,後來發現這次的參賽者中,已經有人提到解決方案。
我是參考這篇 16- 用Grok梳理文字天書般的日誌 ;感恩etsaycood 大大的整理,讓我可以站在巨人的肩頭上學習。
這是我昨天沒有法子直接上傳到 ElasticSearch 的log,因為ElasticSearch根本沒法子認識這種格式!
INFO [2020-16-09 21:47:35] New_Start
WARN [2020-16-09 21:47:35] 喂_要小心點_現在_Loaging:91%
INFO [2020-16-09 21:47:35] ___Pass___Pass___
INFO [2020-16-09 21:47:35] New_Start
WARN [2020-16-09 21:47:35] 喂_要小心點_現在_Loaging:95%
INFO [2020-16-09 21:47:35] ___Pass___Pass___
正常的資料流程應該是 :Log File --> Logstash Parse --> ElasticSearch。而我想要直接跳過中間的環節,當然就直接報錯了。
所以我們使用上面文章中介紹的連結,來試試我們要怎樣讓 Logstash 幫我們認識 log File。
我們先透過 https://grokdebug.herokuapp.com/ 來編寫規則,讓 Logstash 能認識我們的 log File。
先點選 Discover, 貼上一行 Log 做為測試,可以發現前面2個欄位已經被識別出來。
現在只剩下第3欄,這個我自己當初在 R 隨意編寫的文字,還沒有被識別出來。
先切回 Debug , 把剛剛從 Discover 中拿到的規則 "%{CISCO_REASON}%{SYSLOG5424SD}" 貼上。
按下 GO!
可以看到前2欄已經可以被 grok 給拆解成 json ,表示未來Logstash能夠識別,現在就剩下 "喂_要小心點_現在_Loaging:91%" 這個句子還沒法子被識別。
再點選 Pattern ,選擇 grok-patterns ,可以看到很多的規則,我想就用 "GREEDYDATA .*" 這個簡單的規則好了,然後再幫這個資料取個名字,就叫 my_message 吧
我的第一隻 grok 就完成啦。
%{CISCO_REASON}%{SYSLOG5424SD}%{GREEDYDATA:my_message}
結果如下,現在三個欄位都已經被解析出來囉。
所以今後的發文策略,要改成 "寄生上流" 站在巨人的肩頭上學習!
希望明天的發文,能夠成功實作 log File 匯入Logstash! 敬請期待 ~ 謝謝