Log-Files
開源腳本日誌分析:用於將 stderr 日誌消息分組(正常錯誤與異常)或查看趨勢的工具(我們收到的這條消息越來越少,而那個消息越來越多)
想像一下一些帶有各種腳本(主要是 PERL,但也可以是寫入 STDERR 的任何腳本)的 linux 系統,這些腳本由不同的使用者執行 100 次,但需求略有不同。
記錄每次執行腳本的輸出和警告/錯誤 (stderr)。這意味著正在積累 1000 條日誌。
使用者會犯錯誤。而且開發人員並不總是編寫乾淨的程式碼等。
我們想從日誌中了解正在發生的事情,無論是(以程式方式)在每種情況下,還是(以管理方式、分析方式)了解隨時間變化的趨勢。
這個問題也可以在 web 伺服器/cgi 上下文中考慮,因為這通常會生成 100 次腳本執行,但我不是在尋找 apache 訪問/錯誤日誌特有的解決方案。
一般來說,存在哪些免費/開源軟體工具來辨識和分析來自這樣一組日誌的異常輸出,其中每個日誌代表一個過程的一次執行?
有用的功能可能包括:
- 可以將此執行的標準輸出/標準錯誤與歷史輸出進行比較,並確定標準輸出或標準錯誤的哪些部分異常或值得注意
- 通過消除將相同錯誤儲存 100 次或更多次的需要,可以實現“壓縮”而不是以純文字形式儲存所有日誌
- 可以分析整個商店的趨勢(此消息顯示的次數比過去少或多)以及計數(最常見的錯誤是這些)
- 具有某種帶有圖形和數據導出功能的可瀏覽使用者界面
例如,可以獲取從 stderr 生成的所有日誌,對它們進行分類,然後通過 sort 和 uniq -c 執行它們,然後再次排序以生成從最不頻繁到最頻繁的錯誤字元串列表。也可以開始將日誌轉儲到某種 SQL 數據庫中。
這可能成為工具的建構塊,但也許已經有完整的包可以做到這一點,而且更多。所以我想我會問看看其他人使用什麼。
您是否為這類事情開發了內部工具,或者有沒有好的開源替代品?
聽起來Splunk可以很好地滿足您的許多要求,如果不是全部的話。執行評估非常容易。如果您已經考慮過它,請評論為什麼它不適合您的需求。
乾杯
我的想法是:使用 petit ( http://opensource.eyemg.com/Petit ) 來分析而不是 uniq。日誌可以以 .gz 格式儲存,因此以下內容可以實現您的前 3 個目標,並且它是 GPL。沒有圖形界面或導出的概念。
zcat logfile.gz | petit --hash
要麼
zcat logfile.gz | petit --dgraph