寫在前面:
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)朝天,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
在實際工作中,定期檢查數(shù)據(jù)庫錯誤日志是必不可少的工作項。但是檢查的時候卻不一定產(chǎn)生了新的錯誤信息,或者說我們更加希望永遠不要有錯誤信息才好,因為這表示我們的數(shù)據(jù)庫是健壯的。這種情況下,無法預(yù)知錯誤信息什么時候產(chǎn)生,而如果我們檢查錯誤日志又經(jīng)常是正常的,很容易形成思維慣性,久而久之沒有報錯信息,我們很容易忽略這一工作項。但是錯誤日志對于我們來說又是必不可少的,此時,我們就希望,什么時候產(chǎn)生錯誤信息,就直接郵件報警通知我,我就可以騰出時間來做一些更有意義的事情了。如果你也有這種需求,那么本文可能會幫到你。
腳本文件:
cat monitor_errorlog.sh
#!/bin/bash
#錯誤日志監(jiān)控報警腳本
#監(jiān)控日期
time=`date +%F`
#time=2018-06-02
cd /home/dbalzb
#按照日期生成error日志監(jiān)控文件,首先檢測當天error日志是否生成過
ls errorlog-$time.txt &> /dev/null
#狀態(tài)返回值為非0,即表示當天未生成過
if [ $? -ne 0 ];then
?? ?cat /home/data/MySQL/error.log | grep "$time" | egrep -i 'error|warning' > errorlog-$time.txt
?? ?#判斷當天是否有錯誤日志
?? ?num=`cat errorlog-$time.txt |wc -l`
?? ?if [ $num -ne 0 ];then
?? ??? ?mutt lizibin_1@126.com -s "errorlog3306" < errorlog-$time.txt
?? ?fi
?? ?md5sum errorlog-$time.txt > md5-errorlog-$time.txt
else
?? ?cat /home/data/mysql/error.log | grep "$time" | egrep -i 'error|warning' > errorlog-$time-new.txt
?? ?#第二次及以后執(zhí)行的腳本文件會生成新的errorlog文件,并生成新的md5sum值
?? ?md5sum errorlog-$time-new.txt >> md5-errorlog-$time.txt
?? ?
?? ?str1=`cat md5-errorlog-$time.txt | sed -n '1p' | awk '{print $1}'`
?? ?str2=`cat md5-errorlog-$time.txt | sed -n '2p' | awk '{print $1}'`
?? ?#num1=`cat errorlog-$time-new.txt |wc -l`
?? ?#cat errorlog-$time.txt >> errorlog-$time-history.txt
?? ?#對比兩個文件的md5sum值來判斷是否有新的錯誤日志生成
?? ?if [ $str1 != $str2 ];then
?? ??? ?mutt lizibin_1@126.com -s "new-errorlog3306" < errorlog-$time-new.txt
?? ??? ?#cat errorlog-$time-new.txt >> errorlog-$time-history.txt
?? ?fi
?? ?
?? ?/bin/rm -f errorlog-$time-new.txt
?? ?sed -i '2d' md5-errorlog-$time.txt
fi
添加計劃任務(wù):(每小時執(zhí)行一次,可自行調(diào)整)
5 */1 * * * sh /home/dbalzb/monitor_errorlog.sh
條條大路通羅馬,你是怎么動態(tài)監(jiān)控數(shù)據(jù)庫錯誤日志的呢?歡迎下方留言。