日誌分析之架構篇

wKiom1TtkATgkILyAAJp-BJblac839.jpg

生產服務器上運行各種應用程序,這些程序會被一個日誌檢查的腳本(logcheck.sh)週期性的掃描。採用crontab來控制掃描的頻率。每次掃描後腳本都會記錄本次掃描的日誌的最後一行,這樣在下次掃描的時候可以直接從新產生的日志開始從而避免重複掃描。掃描發現的異常會被添加到一個統一的目錄下面的日誌文件,這個文件是按照服務器和應用來命名的,這樣確保每個機器上的每個應用都有一個獨立的日誌輸出文件。如果一臺服務器上有多個相同的應用,那麼需要對每個應用進行區分。


另一個腳本(maillog.py)腳本會每個半小時或一定時間來查看這個目錄,如果發現有新的文件生成,那麼就會把這個文件通過郵件和短信的形式來通知到運維組。如果應用產生的日誌量不大(<300M),可以適當的增加運行(logcheck.sh)的頻率,這樣可以做到較低的延遲。


生產服務器產生的日誌文件需要同步到日誌服務器上。採用rsync技術來同步服務器上的日誌文件。如果日誌服務器的性能允許並且延遲不是主要的考慮因素,也可以將上面提到的日誌檢查腳本放到這臺服務器上運行。在日誌服務器上搭建了一套logstash + Elasticsearch。將日誌服務器上的日誌讀入到Elasticsearch數據庫,然後通過logstash界面提供給開發和運維使用。


一種更優的方案是從logstash結合RabbitMQ讀入日誌消息流,這種方案可以實現近似的實時處理日誌。然後分析這些消息流,一旦發現異常,就用郵件和短信報警。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章