關於系統的日誌管理
記錄日誌對於一個系統的重要性我就不廢話了,直入正題吧!~
先說說日誌的管理大致上分為以下幾個方面吧:
1. 單個文件的大小要控制
2. 日誌要便於瀏覽
3. 日誌的安全性要得到保障
4. 日誌要定期清理
每個開發人員對日誌的收集,都是非常熟悉的,基本都是將日誌按照日期的方式進行保存。
因為大家都是通過日期方式保存的,但是因為有的人不重視日誌,經常會看到有的系統單個日誌文件上百M,有的甚至是幾G,而實際大家處理問題關註的都是最近的日誌,所以控制單個日誌文件的大小,對日誌的性能以及後期的運維都是非常便利的。
日誌文件小才便於瀏覽,日誌最好能通過網址直接訪問到,而不需要一波三折登錄服務器,花10分鐘下載下來,再來分析。
日誌內容有時會包含敏感信息,特別是error日誌,直接把系統的具體錯誤拋出來,所以日誌除了查看方便,還需要確保日誌文件的安全。如果是日誌文件是html或者txt,請一定記得把你的日誌文件權限修改下,特定用戶才能訪問,不要隨便開放,所有人都能訪問。
日誌是非常占用存儲的空間,日誌太大對存儲的性能也有一定的影響,所有日誌要定期進行清理。
- 空間充足可以保留半年
- 空間不足最少也要保留3個月
當然,這個也不是一定的,根據每個系統的情況去制定清理計劃就可以了。
還有一點大家一定要記得哦:日誌的等級一定要規範
比如:
debug 就是記錄的調試信息
info 用來收集或者記錄自己想要關註的信息,我以前就是經常作為調試用我也沒有辦法啊
warn 記錄警告信息,這個我倒是沒怎麽用過(沒用過),建議以後還是用吧。
error 記錄錯誤信息
規範了日誌記錄之後方便我們查詢,比如一個每日百十萬條記錄的系統,如果日誌記錄的沒有規範,那麽等我們需要查閱的時候就只能呵呵了。。。
最後給大家推薦兩款工具:
1、Elasticsearch——一個基於lucene的搜索引擎工具,解決日誌的搜索問題。當然,也能解決系統的搜索問題,而且是分布式的哦。
2、Kibana——一個可視化的日誌操作引擎,結合Elasticsearch可以達到更好的效果。
可能開發人員對日誌的需求相對而言簡單一點,但是處理不當也是會面臨嚴峻挑戰的。如果要根據某些關鍵字找日誌,沒有一個靠譜的系統處理,那麽就只能一直用ctrl+f 來回查找自己需要的信息,使用過的人都知道,這絕對是一個很差勁的體驗,那麽——就試試上邊說的兩個工具吧。
關於系統的日誌管理