系統(tǒng)日志管理那點事

說起日志,大家都是耳熟能詳?shù)某锪辏淮蠖讶罩静寮橙胙酆熝睾螅罩臼占姆绞揭矚v歷在目沿彭,但是,今天我們的重點不僅僅是收集日志了尖滚,今天我們主要說說怎么管理日志

收集日志

日志管理的第一件事喉刘,就是日志的收集。日志收集是開發(fā)者必備的技巧漆弄,不管是哪個開發(fā)語言睦裳,哪個開發(fā)平臺,日志收集的插件都是有很多選擇的撼唾。例如:

.net 平臺大家鐘愛的log4net,支持多種存儲方式(文件廉邑、數(shù)據(jù)庫),多種格式倒谷,多種日志拆分方式蛛蒙。

java 平臺主流的log4j、slf4j渤愁、logback牵祟,多種選擇。

日志收集的組件這里就不一一說明了抖格,使用都是很簡單的诺苹,這里重點說明一下咕晋,日志我們收集應(yīng)該注意的地方:

1. 日志等級一定要規(guī)范
等級 說明
debug 調(diào)試信息
info 用來收集關(guān)注的信息
warn 警告信息
error 錯誤信息

好多開發(fā)工程師記錄日志總是喜歡用info級別來記錄日志,一般的組件默認(rèn)級別都是info,所有info默認(rèn)都是會被記錄的筝尾,而debug信息發(fā)布后捡需,是不會被記錄的。這是一種偷懶的做法筹淫,但這也是很普遍的做法站辉。正確的方式應(yīng)該根據(jù)日志本身的特性去設(shè)置日志的級別,其實規(guī)范的日志級別是非常重要的:

  • 正確的級別便于運維损姜。便于統(tǒng)一調(diào)整系統(tǒng)日志級別饰剥,如特殊情況可以只記錄error錯誤
  • 沒有正確的級別,對后期日志分析和處理是留下很大的隱患摧阅。error是需要去關(guān)注汰蓉,并且處理掉的問題。info是普通日志的記錄棒卷,大部分時候是無需關(guān)注的顾孽。
2. error日志內(nèi)容一定要詳實 ,info日志要簡潔易懂

運營過大型系統(tǒng)的人都知道,除了數(shù)據(jù)庫存儲外比规,日志若厚、圖片、附件是存儲的三大債主蜒什,他們是會占用非常非常大的空間测秸,所有記錄info的日志,要簡潔易懂灾常,避免空間浪費霎冯。
而對于error級別的錯誤,記錄一定要詳實钞瀑,因為error的所有問題沈撞,是后期都要去解決的。

  • 請求的地址
  • 請求的參數(shù)
  • 請求的ip
  • 請求的用戶
  • error具體信息
  • 輸出的內(nèi)容
  • ......

為了能很好的反饋當(dāng)時error產(chǎn)生場景雕什,以上的這些內(nèi)容都應(yīng)該被記錄关串,而且越詳細(xì)越好。

3. error日志一定是全局統(tǒng)一收集的

前文說過监徘,error的日志晋修,不僅是我們需要關(guān)注的,還是我需要解決掉的問題凰盔,所有error日志非常重要墓卦。錯誤日志的收集,必須是全局統(tǒng)一收集的户敬,AOP是你最好的伙伴落剪,如果你發(fā)現(xiàn)你的errorr日志收集是在每個類中睁本,到處是

try
{
......
}
catch()
{
    log.error("......")
}

這個一定要避免,不管你用那種語言忠怖,錯誤的處理呢堰,都是可以通過全局進(jìn)行統(tǒng)一的處理,錯誤日志也要通過全局統(tǒng)一收集凡泣。

管理日志

每個開發(fā)人員對日志的收集枉疼,都是非常熟悉的,基本都是將日志按照日期的方式進(jìn)行保存鞋拟,日常使用日志的時候骂维,也是有一些要求:

1. 單個文件的大小要控制

因為大家都是通過日期方式保存的,但是因為有的人不重視日志贺纲,經(jīng)常會看到有的系統(tǒng)單個日志文件上百M航闺,有的甚至是幾G,而實際大家處理問題關(guān)注的都是最近的日志猴誊,所以控制單個日志文件的大小潦刃,對日志的性能以及后期的運維都是非常便利的。

2. 日志要便于瀏覽

日志文件小才便于瀏覽懈叹,日志最好能通過網(wǎng)址直接訪問到乖杠,而不需要一波三折登錄服務(wù)器,花10分鐘下載下來项阴,再來分析。

3. 日志的安全性要得到保障

日志內(nèi)容有時會包含敏感信息笆包,特別是error日志环揽,直接把系統(tǒng)的具體錯誤拋出來,所以日志除了查看方便庵佣,還需要確保日志文件的安全歉胶。如果是日志文件是html或者txt,請一定記得把你的日志文件權(quán)限修改下巴粪,特定用戶才能訪問通今,不要隨便開放,所有人都能訪問肛根。

4. 日志要定期清理

日志是非常占用存儲的空間辫塌,日志太大對存儲的性能也有一定的影響,所有日志要定期進(jìn)行清理派哲。

  • 空間充足可以保留半年
  • 空間不足最少也要保留3個月

當(dāng)然臼氨,這個也不是一定的,根據(jù)每個系統(tǒng)的情況去制定清理計劃就可以了芭届。

如果大家是小型網(wǎng)站储矩,一個系統(tǒng)一臺服務(wù)器感耙,日志管理就簡單了。如果系統(tǒng)是做了高可用持隧,后端用了均衡負(fù)載即硼,那么,日志存在當(dāng)前服務(wù)器是不太明智的做法屡拨,日志一定要統(tǒng)一存儲只酥,因為均衡負(fù)載隨時都可能會切換服務(wù)器,當(dāng)出現(xiàn)故障洁仗,你需要去找日志究竟存在哪個服務(wù)器层皱,也是件很浪費時間的事情。日志文件也可以通過:

  • 共享虛擬目錄來存儲
  • 定時進(jìn)行文件同步來存儲
    日志存儲也是對性能有一定影響的赠潦,文件同步雖然看起來麻煩一定叫胖,但是比共享虛擬目錄的方式來說,性能會好她奥,推薦使用這種方式瓮增。

說到日志的同步,就不得不提Logstash這個日志組件哩俭。Logstash是現(xiàn)在應(yīng)用最廣的日志收集組件绷跑,基于java平臺。其實很多java平臺的組件凡资,是不用去了解java開發(fā)的砸捏,只要簡單的配置就能使用。

Logstash支持文件同步隙赁,也可以結(jié)合rsyslog進(jìn)行文件同步垦藏,當(dāng)然,也支持通過tcp協(xié)議伞访,與第三方對接掂骏,好伙伴當(dāng)然是Elasticsearch。Elasticsearch下文也會做簡單的介紹厚掷。

Logstash中文手冊:點擊這里

分析日志

日志的分析也是一個很大的概念弟灼,可能對于運維和安全人員關(guān)注的是系統(tǒng)的所有日志,包括訪問日志冒黑、系統(tǒng)監(jiān)測的日志等田绑,但是開發(fā)人員對于日志更多的是:

  • 監(jiān)控系統(tǒng)運行錯誤,并獲取錯誤時的相關(guān)數(shù)據(jù)包
  • 記錄重要的信息抡爹,某些時候便于后期檢查

所以辛馆,開發(fā)人員對日志的需求相對而言簡單一點,但是處理不當(dāng)也會面臨挑戰(zhàn)。如果要根據(jù)某些關(guān)鍵字找日志昙篙,沒有一個靠譜的系統(tǒng)處理腊状,那么大家只能一直在ctrl+f 或者 find 命令中來回查找自己需要的信息,使用過的人都知道苔可,這絕對不是一個很好的體驗缴挖。那么是否有很好的工具來處理呢?有焚辅,這里就介紹另外的兩個工具:

  • Elasticsearch——一個基于lucene的搜索引擎工具映屋,解決日志的搜索問題。當(dāng)然同蜻,也能解決系統(tǒng)的搜索問題棚点,而且是分布式的哦。
  • Kibana——一個可視化的日志操作引擎湾蔓,結(jié)合Elasticsearch可以達(dá)到更好的效果瘫析。

Kibana 界面預(yù)覽

Kibana 界面預(yù)覽

Elasticsearch+Logstash+Kibana 就是傳說中的ELK了,應(yīng)該是現(xiàn)在最流行的日志處理平臺默责。

Elasticsearch中文文檔:點擊這里
ELK中文文檔:點擊這里

尾聲

前文介紹日志收集贬循、日志管理注意的事項,推薦了日志分析中兩個比較簡單常用的工具桃序,這里簡單說明一下杖虾,自己心目中的日志管理系統(tǒng)。
整體流程如圖:

推薦的幾個工具雖然是java平臺的工具媒熊,但是日志處理的思路不管是哪個平臺都是一樣的奇适。ELK如果只是作為日志管理的工具,也可以應(yīng)用到.net平臺芦鳍,無需再進(jìn)行二次開發(fā)就可以很好的使用嚷往。ELK的使用是有一定的學(xué)習(xí)成本的,如有時間可以另起一文探討怜校,但是间影,這個學(xué)習(xí)成本是可以忽略語言之間的差異注竿。
當(dāng)然茄茁,如果大家愿意使用腳本同步或者rsyn文件同步進(jìn)行日志處理也是可以的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巩割,一起剝皮案震驚了整個濱河市裙顽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宣谈,老刑警劉巖愈犹,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡漩怎,警方通過查閱死者的電腦和手機(jī)勋颖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勋锤,“玉大人饭玲,你說我怎么就攤上這事∪矗” “怎么了茄厘?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谈宛。 經(jīng)常有香客問我次哈,道長,這世上最難降的妖魔是什么吆录? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任窑滞,我火速辦了婚禮,結(jié)果婚禮上径筏,老公的妹妹穿的比我還像新娘葛假。我一直安慰自己,他們只是感情好滋恬,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布聊训。 她就那樣靜靜地躺著,像睡著了一般恢氯。 火紅的嫁衣襯著肌膚如雪带斑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天勋拟,我揣著相機(jī)與錄音勋磕,去河邊找鬼。 笑死敢靡,一個胖子當(dāng)著我的面吹牛挂滓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播啸胧,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赶站,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纺念?” 一聲冷哼從身側(cè)響起贝椿,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陷谱,沒想到半個月后烙博,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年渣窜,在試婚紗的時候發(fā)現(xiàn)自己被綠了铺根。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡乔宿,死狀恐怖夷都,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情予颤,我是刑警寧澤囤官,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站蛤虐,受9級特大地震影響党饮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驳庭,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一刑顺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饲常,春花似錦蹲堂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至播聪,卻和暖如春朽基,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背离陶。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工稼虎, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人招刨。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓霎俩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親沉眶。 傳聞我的和親對象是個殘疾皇子打却,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容