zabbix实现邮件报警通报以及免费短信报警通知

zabbix实现邮件报警通知以及免费短信报警通知

前提条件:
  (1) zabbix服务器端已经成功安装并且运行。
  (2) zabbix客户端已经成功建立并且运行。
  1 下载并且安装msmtp软件
  Wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/download  
  tar jxvf msmtp-1.4.32.tar.bz2
  cd msmtp-1.4.32
  ./configure--prefix=/usr/local/msmtp
  Make
  Make install
   2 、手动建立配置文件 , 输入外部 smtp 地址   
mkdir –p /usr/local/msmtp/etc
vi /usr/local/msmtp/etc/msmtprc
  添加以下内容  
account default   
host smtp.sohu.com                    # 你的发送邮件服务器  
port 25
from zabbix2014@sohu.com      #  要从哪个邮箱发出  
auth login
tls off
user  zabbix2014                      #  邮箱用户名  
password xxxxx-xxx                  #  邮箱密码 , 如果你觉得不安全可以把文件改为 600 属性  
logfile /var/log/mmlog
  保存退出。
   3 、简单测试一下   
/usr/local/msmtp/bin/msmtp    zabbix2014@sohu.com     
  hello , test   
  ctrl d  
cat /usr/local/msmtp/msmtp.log  看看有没有成功。   
  然后再到 sohu 邮箱中,看看信收到没有
  报错如下
  [root@cache-2 msmtp-1.4.32]# /usr/local/msmtp/bin/msmtp zabbix2014@sohu.com
msmtp: authentication failed (method LOGIN)
msmtp: server message: 535 5.7.0 Invalid result
msmtp: could not send mail (account default from /usr/local/msmtp/etc/msmtprc)
  Google之后,需要安装 mutt组件
   4 、下面开始安装 MUTT 如果是 CentOS 的话直接用 yum 就好了   
yum install mutt
  安装完成后要手动给他建立一个配置文件,  
vim /etc/Muttrc
setsendmail="/usr/local/msmtp/bin/msmtp" #  你的 msmtp 命令路径  
set use_from=yes
set realname="  zabbix2014@sohu.com "  
set editor="vim"
  简单的 4 行就可以了  
  好了,让我们来测试一下吧!  
  测试一下: echo"test mail" | mutt -s "test" zabbix2014@sohu.com
  OK ,测试了下,能收到已经发送的 email ,如下所示:
  echo"test mail 2014 content tom 2" | mutt -s "test 2014 title2"  zabbix2014@sohu.com
     

zabbix实现邮件报警通报以及免费短信报警通知
登录/注册后可看大图

  
   5 、      创建 zabbix 用于发送邮件的脚本
  脚本放在什么位置随便,但是要保证 zabbix 可以找到!
  1)vim/usr/bin/zabbix2014, 并写入如下内容:  
#!/bin/bash
echo "$3" | mutt -s "$2"$1       # $3  表示邮件内容、 $2 表示邮件标题、 $1 表示收件人  
(2)chmod a+x /usr/bin/zabbix2014  
   6 、     zabbix 配置   
(1)  创建 meida types  
1  .登录到 zabbix ,进入 “Administration" >> ”Media types" ,点击右上角 “Create Media Type" 。 Description 填 "mediatype-zabbix2014" 或其它名称, Type 选择 "Script" , Script 填 ” zabbix2014” 。  
2  .点击 save 保存,如下图所示:
   

zabbix实现邮件报警通报以及免费短信报警通知
登录/注册后可看大图

   
   7 、创建 actions   
1.  登录到 zabbix ,进入 "Configation" >> "Actions" ,点击右上角 "Create Actions" 。输入 Name “action-zabbix2014” ,其它都默认点击右侧 “Action Operations" 下的 "New" 按钮, "Operation Type" 选择 "Send message" , "Send Message to" 选择一个或多个要发送消息的用户组, ”Send only to" 选择我们之前新增的 mediatype-zabbix2014 。  
2.  点击 save 保存,如下图所示:
     

zabbix实现邮件报警通报以及免费短信报警通知
登录/注册后可看大图

  
   8 、 zabbix 用户配置   
  登录到 zabbix, 进入 "Adimistration" >>"Users" ,在之前选定要发送消息的组里的 Members 栏位里选择一个用户,例如选择 AdminZabbix 用户。  
  在用户信息修改界面最下方的 ”Media" 处点击 "Add" 按钮。  
Type  选择 "mediatype- zabbix2014" , Send to 填入收件人地址,点击 Add 添加。  
  点击 "Save" 保存配置。如下图所示:
     

zabbix实现邮件报警通报以及免费短信报警通知
登录/注册后可看大图


  9 测试验证邮件发送功能是否正常。
   PS:这个验证报警的实现,请参考 http://blog.csdn.net/mchdba/article/details/24540017  里面有描述mysql.ping_test是如何建立并生效的。  
  9.1 去stop服务器上的mysql服务,一会就应该会报警
  [root@db-m2-slave-1~]# service mysql stop
  Shutting downMySQL...                                    [确定]
  [root@db-m2-slave-1~]#
   但是没有收到email,所以我们需要去看events,是否有提示为什么会发不出email来。进去目录 Monitoring—>Events à Group( 选 All) à Host( 选要监控的数据库主机 ) à Source( 选 Trigger) 。  
   点开最左边一列的连接 02 May2014 12:34:06 ,就会看到如下提示信息:  
  看到提示:
  /usr/local/zabbix/scripts/zabbix2014: [2] Nosuch file or directory  
  

zabbix实现邮件报警通报以及免费短信报警通知
登录/注册后可看大图


  记得是放在 /usr/bin/zabbix2014 ,所以将脚本放在提示所需要的目录上面,直接mv一下即可:
  mv/usr/bin/zabbix2014 /usr/local/zabbix/scripts/zabbix2014
  之后会看到新的报警PROBLEM信息,email已经发送出去了,如下图:
  

zabbix实现邮件报警通报以及免费短信报警通知
登录/注册后可看大图

  
  9.2 改email地址,改成139邮箱,并且附带免费短信报警功能实现。
  进入目录,AdministrationàUsersà Zabbixadministrators à Users   (1) à AdminZabbix (最左边一列)àMedia(选择中间的那一个栏目)—> mediatype-zabbix2014 ( 选择用 Trigger 所用的 mediatype) à Edit( 点击进去修改 ) à Send to( 后面的输入框里面填写上 139 的 email ,  比如  xxx@139.com) ,如下图所示:
   

zabbix实现邮件报警通报以及免费短信报警通知
登录/注册后可看大图


  
  9.3 切换139邮箱来验证发送短信功能
  注册139邮箱,打开email,stop以及start数据库上面的mysql进程服务,就会收到报警email以及短信通知,报警email如下:
  

zabbix实现邮件报警通报以及免费短信报警通知
登录/注册后可看大图


  记得开启短信提示功能,短信免费。
  

zabbix实现邮件报警通报以及免费短信报警通知
登录/注册后可看大图



  9.4 如何让zabbix继续发送报警信息直到恢复正常为止。
  进入目录,ConfigurationàHostsà选中主机àTriggeràName(比如进入 check_mysql_status )à在 Multiple PROBLEM events generation一栏打勾àSave。如下图所示:
  

zabbix实现邮件报警通报以及免费短信报警通知
登录/注册后可看大图

  
  10 总结:
  第一次zabbix的邮件报警试验成功了,折腾了很多天,也咨询了很多朋友,在此感谢他们,下面还有许多zabbix的深入的东西需要继续学习继续专研。
   且行且努力吧。
     
  参考文章: http://bbs.hx95.com/read-htm-tid-181423.html  
     
   附上网友北京酱油帝的建议,如何验证 trigger 报警成功:
要想验证trigger的有效性很简单:
   第一 ,trigger在monitor的界面有个events选项看到没有,那里面是可以点击机器ip的,你看你定义的trigger有没有发生。
   第二,   第二,如果trigger发生了,是要看脚本也就是media调用有没有成功,如果成功了,最好在脚本里面加上日志。