trzxycx 发表于 2018-8-27 07:25:17

利用 msmtp+mutt+shell来实现邮件告警

  场景:
  需要对redis keys值进行监控,利用crond周期执行监控脚本。如有异常,通过邮件告知。
  一、安装msmtp
  下载软件
  wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2
  tar -jxvf msmtp-1.4.32.tar.bz2
  cd msmtp-1.4.32
  ./configure --prefix=/usr/local/msmtp
  cd msmtp-1.4.32
  make && make install
  修改配置
  cd /usr/local/msmtp/
  mkdir etc #配置文件目录和配置文件都要自己建
  cd etc
  vim msmtprc #手动创建配置文件
  account default
  host smtp.163.com #你的发送邮件服务器
  port 25
  from hotdogs112@163.com #要从哪个邮箱发出
  auth login
  tls off
  user hotdogs112@163.com #邮箱用户名
  password123456#邮箱密码,这里可是明文的,如果你觉得不安全可以把文件改为600属性
  (chmod600/etc/msmtprc)
  account default : admin
  logfile /data/log/msmtp.log
  二、安装mutt
  直接yum install mutt
  vim /etc/Muttrc
  source /etc/Muttrc.local
  set sendmail="/usr/local/msmtp/bin/msmtp"
  set use_from=yes
  set envelope_from=yes
  set 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.txt
  result= cat /data/tmp/keys_$suffix.txt
  if [[ 0 -eq $result ]] #当keys值等于0的时候不做任何操作,不等于零则发送告警邮件。
  then
  echo "nothing to do" >/dev/null 2>&1
  else
  subject='redis监控预警!'
  to="test@163.com"
  echo "redis keys monitor" | mutt $to -s $subject -e 'set content_type="text/txt"'< /tmp/keys_$suffix.txt
  fi
  exit 0
  IF判断语句小记:
  -eq:等于
  -ne:不等于
  -le:小于等于
  -ge:大于等于
  -lt:小于
  -gt:大于
  note:1、邮件告警在生产环境中还是比较常用的,可利用sql进行表格拆分发送邮件。
  2、利用python xlwt模块生成excel,及python脚本发送邮件告警

页: [1]
查看完整版本: 利用 msmtp+mutt+shell来实现邮件告警