因現(xiàn)網(wǎng)環(huán)境運(yùn)維提出了一些報(bào)錯(cuò)日志,因此需要在測試環(huán)境也監(jiān)控起來,及早發(fā)現(xiàn),及早避免問題的發(fā)生。
思路如下:
1、統(tǒng)計(jì)所有需要實(shí)時(shí)監(jiān)控的日志地址
2、單條日志篩選出合適的關(guān)鍵字,如exception、error等
3、編寫shell腳本,匯總每一臺服務(wù)器上所有需要打印的日志目錄,并通過jenkins啟動(dòng)腳本
4、將相關(guān)日志發(fā)送至指定服務(wù)器,并通過jenkins集成,將所有日志按照要求發(fā)送至相關(guān)人的郵箱
5、分析日志,有問題的提單跟蹤,無問題的刪除記錄。
具體步驟:
一:統(tǒng)計(jì)各個(gè)日志所在的地址,就不多說了,各位服務(wù)器所在位置不一,因此自行記錄即可。4、將相關(guān)日志發(fā)送至指定服務(wù)器,并通過jenkins集成,將所有日志按照要求發(fā)送至相關(guān)人的郵箱
二:單條日志篩選出合適的關(guān)鍵字,如exception、error等
一般來說,導(dǎo)出日志里的打印信息,可以用cat和tail,但是由于日志有可能被清空,因此我們選擇實(shí)時(shí)打印的方式,因此采用tail的方式
tailf 文件名|grep "關(guān)鍵字"
因?yàn)橹淮蛴£P(guān)鍵字那一行很可能會遺漏相關(guān)信息,因此我們需要把有關(guān)鍵字的字段的前后5行打印出來
tailf 文件名|grep? -E -5 "關(guān)鍵字"
若需要通過多個(gè)關(guān)鍵字進(jìn)行篩選(或關(guān)系),直接用管道符區(qū)分即可。
三、編寫shell腳本,匯總每一臺服務(wù)器上所有需要打印的日志目錄,并通過jenkins啟動(dòng)腳本
腳本只寫打印命令即可,多條命令直接用";"號分割即可,開始時(shí)由jenkins的定時(shí)器開啟,結(jié)束由linux命令直接結(jié)束即可,如sp由每日下午4點(diǎn)開啟,運(yùn)行兩小時(shí)
timeout? XS,M,H,D? bash 腳本名稱 (其中X為自己需要固定的值,后綴”s”代表秒(默認(rèn)值),”m”代表分,”h”代表小時(shí),”d”代表天)
四、將相關(guān)日志發(fā)送至指定服務(wù)器,并通過jenkins集成,將所有日志按照要求發(fā)送至相關(guān)人的郵箱
同時(shí)將測試環(huán)境的服務(wù)器互相信任(互相信任操作詳見《LR+Jenkins性能自動(dòng)化(三):加入linux監(jiān)控nmon》),之后可以通過crontab發(fā)送至jenkins所在目錄,也可以通過jenkins發(fā)送,建議使用shell腳本(發(fā)送目錄且定期刪除源日志)
所有服務(wù)器的日志發(fā)送至jenkins目錄后,壓縮至同一個(gè)文件后通過jenkins的Email Notification模塊發(fā)送郵件給相關(guān)責(zé)任人
五、分析日志,有問題的提單跟蹤,無問題的刪除記錄。
這一步需要人自己進(jìn)行查看,若有需要展示html報(bào)告,有更新時(shí)時(shí)再來補(bǔ)充,over