场景:
需要对redis keys值进行监控,利用crond周期执行监控脚本。如有异常,通过邮件告知。
一、安装msmtp
下载软件wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2tar -jxvf msmtp-1.4.32.tar.bz2cd msmtp-1.4.32./configure --prefix=/usr/local/msmtpcd msmtp-1.4.32make && make install修改配置cd /usr/local/msmtp/ mkdir etc #配置文件目录和配置文件都要自己建 cd etcvim msmtprc #手动创建配置文件 account default host smtp.163.com #你的发送邮件服务器 port 25 from hotdogs112@163.com #要从哪个邮箱发出 auth login tls off user hotdogs112@163.com #邮箱用户名 password 123456 #邮箱密码,这里可是明文的,如果你觉得不安全可以把文件改为600属性 (chmod 600 /etc/msmtprc)account default : adminlogfile /data/log/msmtp.log二、安装mutt直接yum install muttvim /etc/Muttrcsource /etc/Muttrc.localset sendmail="/usr/local/msmtp/bin/msmtp"set use_from=yesset envelope_from=yesset realname="redis keys monitor"set from=hotdogs112@163.com测试:echo "test" |mutt -s "my_first_mail" test@163.com附加附件发送邮件echo "test" |mutt -s "my_first_mail" test@163.com < /tmp/redis.txt ###############脚本解释
通过crond周期查询redis keys值,当redis的keys不被消费时就会发出告警邮件。
*/5 * * * * /bin/sh /tmp/redismonitor.sh
脚本实例:
#!/bin/bash
suffix=$(date +%Y-%m-%d -d "today")redis-cli -h 192.168.36.1 -p 6379 llen bgm_info > /data/tmp/keys_$suffix.txtresult= cat /data/tmp/keys_$suffix.txtif [[ 0 -eq $result ]] #当keys值等于0的时候不做任何操作,不等于零则发送告警邮件。thenecho "nothing to do" >/dev/null 2>&1else subject='redis监控预警!' to="test@163.com" echo "redis keys monitor" | mutt $to -s $subject -e 'set content_type="text/txt"' < /tmp/keys_$suffix.txtfiexit 0IF判断语句小记:-eq:等于-ne:不等于-le:小于等于-ge:大于等于-lt:小于-gt:大于note:1、邮件告警在生产环境中还是比较常用的,可利用sql进行表格拆分发送邮件。 2、利用python xlwt模块生成excel,及python脚本发送邮件告警