Linux实现MySQL主从监控,邮件告警
一、配置mail
1.邮件发送原理
- MUA:Mail User Agent,邮件用户代理,用来编写,收发邮件
- MTA:Mail Transfer Agent,邮件传输代理,将邮件传输到正确目的地
- MDA:Mail Delivery Agent,邮件分发代理,将邮件分发到正确目的用户
2.安装mail,sendmail
mail 命令是 Linux 终端发送邮件用的最多的命令。
mailx 是 mail 命令的更新版本,基于 Berkeley Mail 8.1,意在提供 POSIX mailx 命令的功能,并支持 MIME、IMAP、POP3、SMTP 和 S/MIME 扩展。mailx 在某些交互特性上更加强大,如缓冲邮件消息、垃圾邮件评分和过滤等。在 Linux 发行版上,mail命令是 mailx 命令的软链接。
mail是mailx的别名,mail是MUA,sendmail是MTA
# 1.安装mailx
[root@zxy mysql]# yum -y install mailx
# 2.安装sendmail
[root@zxy mysql]# yum -y install sendmail
3.配置mail
# 1.mail配置文件路径,/etc/mail.rc
[root@zxy data]# cd /etc/
# 2.先备份下之前的mail.rc
[root@zxy etc]# mv mail.rc mail.rc_bak
# 3.重新创建mail.rc文件
[root@zxy etc]# vim mail.rc
# 4.mail.rc内容
set smtp=smtps://mail.[企业邮箱]:465
set smtp-auth-user=[发件人]@[企业邮箱]
set smtp-auth-password=[密码]
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
set from=[发件人]@[企业邮箱]
二、配置脚本监控MySQL主从
# 1.计划将脚本放在data/mysqlmailalert/mysqlalert.sh
[root@zxy etc]# cd /data
# 2.创建目录
[root@zxy data]# mkdir mysqlmailalert
# 3.编写脚本
[root@zxy mysqlmailalert]# vim mysqlalert.sh
# 4.脚本内容
#!/bin/bash
mysql -u root -p'123456' -e "SHOW SLAVE STATUS\G" | egrep '(Slave_IO_Running|Slave_SQL_Running)' | while read line
do
if [[ $line == *'No'* ]]; then
echo "MySQL replication is not running: $line" | mail -s "MySQL Replication Alert" [收件人]@[企业邮箱]
break
fi
done
#5.给脚本添加执行权限
[root@zxy mysqlmailalert]# chmod +x mysqlalert.sh
#6.手动执行脚本,会提示证书问题,不影响邮件发送和接收
[root@zxy mysqlmailalert]# ./mysqlalert.sh
[root@zxy mysqlmailalert]# Error in certificate: Peer's certificate has expired.
host certificate does not match "mail.[企业邮箱]"
三、配置定时任务
# 1.计划每天的9点和15点检查下MySQL主从清库
> 0 9,15 * * * /data/mysqlmailalert/mysqlalert.sh
# 2.编写定时任务
[root@zxy mysqlmailalert]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
# 3.查看定时任务
[root@zxy mysqlmailalert]# crontab -l
0 9,15 * * * /data/mysqlmailalert/mysqlalert.sh