2020年1月2日

[筆記] Automatic Log Parser

這其實是個很大的題目,作法百百種,但是核心概念就是要將原本需要人工設計、維護的 log parser 轉變為用程式自動地去找出隱藏在 log 中訊息架構。這樣說可能不太好理解,我們直接看圖:
圖中最上面是 hadoop 印 log 訊息的程式片段,在執行過程中會在 log 檔產生中間的訊息,而最下面則是一般使用 log parser 通常會想得到的結果。通常 log parser 要產生出最下方的結果依賴於使用者知道 log 訊息的架構,比方說每個 log 訊息最一開始是時間資訊、然後是嚴重程度、從哪個元件印出來的、訊息內會有那些地方是固定或可變的...等等。然而這種方法最大的困擾點是目標程式改版、訊息架構有些許變化,log parser 也一定要跟著修改才能運作。所以近年來就有人開始研究是否有辦法讓程式自己找出那海量的 log 訊息中的架構,這樣就不用花大量的時間去維護 log parser 了。

"Tools and Benchmarks for Automated Log Parsing." 這篇發表在 2019 ICSE (International Conference on Software Engineering) 的論文簡單來說就是整理了至今發表的各種方法並且加以評比各自的精準度與效能。另外他們也把程式放上 github 了,有興趣的可以下載來使用看看,對於有這類需求的人我想是個滿適合拿來入門的。