分享一个Linux下,监控MySQL主从状态及配合企业微信机器人报警的Shell脚本SLAVE_IP:为监控的主机IPUSER:为msyql用户PASSWORD:为mysql密码WHEREIS_MYSQL:为mysql命令路径WEBHOOK:为企业微信机器人Webhook地址wx():为企业微信机器人函数Check_Mysql_Slave():为监控脚本主函数
#! /bin/bash#source /etc/profileexport PATH&#61;"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"SLAVE_IP&#61;&#96;ip add | grep inet | grep brd | awk -F / &#39;{print $1}&#39; | awk -F " " &#39;{print $2}&#39; | awk &#39;NR&#61;&#61;1&#39;&#96;USER&#61;monitorPASSWORD&#61;monitorTIME&#61;&#96;date&#96;WHEREIS_MYSQL&#61;/opt/mysql/bin/mysqlWEBHOOK&#61;&#39;https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key&#61;bb09197b-5ff6-4928-9872-aa5fa8802689&#39;wx(){cat > $0.msg </dev/null 2>&1 if [ $? -ne 0 ];then echo "Mysql is stopped $DATE" >> /data/mysql/check.log ERROR&#61;"ERROR:Mysql-$SLAVE_IP cannot connect\n$TIME" wx "$ERROR" else #echo "1" >> /data/mysql/check.log IO_SQL_STATUS&#61;&#96;$WHEREIS_MYSQL -u$USER -p$PASSWORD -h$SLAVE_IP -e "show slave status \G" 2>/dev/null | awk &#39;/Slave_.*_Running:/{print $1$2}&#39;&#96; for i in $IO_SQL_STATUS;do THREAD_STATUS_NAME&#61;${i%:*} THREAD_STATUS&#61;${i#*:} if [ "$THREAD_STATUS" !&#61; "Yes" ];then STATUS&#61;"ERROR:Mysql-$SLAVE_IP $THREAD_STATUS_NAME status is $THREAD_STATUS!\n$TIME" echo "$STATUS" >> /data/mysql/check.log wx "$STATUS" fi done fi}Check_Mysql_Slave
最终报警效果如下&#xff1a;