原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1577326
#!/bin/bash # # 本腳本用來在指定頻率內監控 MySQL 慢日志的變化,并在發生增長時及時報警 # Written by sunsky # Mail : 274546888@qq.com # Date : 2014-11-17 10:00:00 # MON_FILE="$2" # 指定所要監控的腳本路徑 SEC=60 # 指定所要監控的頻率,即間隔多久去查看一次 MON_POINT_FILE=/tmp/mon_mysql_slow.point # 指定MySQL慢日志的監控點存放的路徑 DIFF_MON_FILE=/tmp/mon_mysql_slow.log # 指定在監控頻率內增加的MySQL慢日志信息存放路徑 ADMIN_MAIL=274546888@qq.com # 指定發送給哪個管理員 function USAGE { echo -e "33[31m腳本名稱: 33[37m" echo " $0" echo -e "33[31m語法結構: 33[37m" echo " $0 {start|stop|restart} MySQL慢日志文件路徑" echo -e "33[31m使用范例: 33[37m" echo " $0 start /usr/local/mysql/log/mysql_slow.log" echo " $0 stop" echo " $0 restart /usr/local/mysql/log/mysql_slow.log" echo -e "33[31m注意事項: 33[37m" echo " 1. 除了stop操作,start和restart操作時,\$2 參數不能為空" echo " 2. \$2 參數指定的文件必須存在" exit 2 } function start { echo "MySQL慢日志監控進程已經啟動,監控文件為 $MON_FILE ,監控頻率為 ${SEC}s一次." while : do [ -f $MON_POINT_FILE ] || echo 0 > $MON_POINT_FILE NEW_POINT=$(awk 'END{print NR}' $MON_FILE) OLD_POINT=$(<$MON_POINT_FILE) [[ -z $OLD_POINT ]]&&OLD_POINT=0 SUM_POINT0=$(($NEW_POINT-$OLD_POINT)) SUM_POINT=${SUM_POINT0#-} sed -n "$OLD_POINT,${NEW_POINT}p" $MON_FILE > $DIFF_MON_FILE if [[ -s $DIFF_MON_FILE ]];then sed -i '1i 本次新增慢日志 '$SUM_POINT' 條' $DIFF_MON_FILE mail -s "[警告] 服務器 $(hostname) 產生 MySQL 慢日志 $SUM_POINT 條" $ADMIN_MAIL < $DIFF_MON_FILE > $DIFF_MON_FILE echo $NEW_POINT > $MON_POINT_FILE fi sleep ${SEC}s done } function stop { if [[ -n `ps -ef|awk '$0~"mon_mysql_slow_log.sh"{print $2}'` ]]; then for PID in `ps -ef|awk '$0~"mon_mysql_slow_log.sh"{print $2}'`; do [[ $PID != $$ ]] && kill -9 $PID >& /dev/null done else echo '目前暫無MySQL慢日志監控進程' exit 0 fi echo 'MySQL慢日志監控進程已經停止運行' } function restart { stop start & } if [[ $1 == stop ]] then : else [[ $2 < 3 ]] && USAGE [[ ! -f $2 ]] && USAGE fi case $1 in start) start & ;; stop) stop ;; restart) MON_FILE=$2 restart ;; *) USAGE ;; esac
USAGE # 該函數負責提示用戶如何正確使用該腳本 start # 該函數負責啟動腳本 stop # 該函數負責停止監控腳本 restart # 該函數負責重啟監控腳本
轉自:http://nolinux.blog.51cto.com/4824967/1577326
原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/1940