前提条件:
(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 [email protected] # 要从哪个邮箱发出
auth login
tls off
user zabbix2014 # 邮箱用户名
password xxxxx-xxx # 邮箱密码 , 如果你觉得不安全可以把文件改为 600 属性
logfile /var/log/mmlog
保存退出。
3 、简单测试一下
/usr/local/msmtp/bin/msmtp [email protected]
hello , test
ctrl d
cat /usr/local/msmtp/msmtp.log 看看有没有成功。
然后再到 sohu 邮箱中,看看信收到没有
报错如下
[root@cache-2 msmtp-1.4.32]# /usr/local/msmtp/bin/msmtp [email protected]
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=" [email protected] "
set editor="vim"
简单的 4 行就可以了
好了,让我们来测试一下吧!
测试一下: echo"test mail" | mutt -s "test" [email protected]
OK ,测试了下,能收到已经发送的 email ,如下所示:
echo"test mail 2014 content tom 2" | mutt -s "test 2014 title2" [email protected]
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 保存,如下图所示:
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 保存,如下图所示:
8 、 zabbix 用户配置
登录到 zabbix, 进入 "Adimistration" >>"Users" ,在之前选定要发送消息的组里的 Members 栏位里选择一个用户,例如选择 AdminZabbix 用户。
在用户信息修改界面最下方的 ”Media" 处点击 "Add" 按钮。
Type 选择 "mediatype- zabbix2014" , Send to 填入收件人地址,点击 Add 添加。
点击 "Save" 保存配置。如下图所示:
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
记得是放在 /usr/bin/zabbix2014 ,所以将脚本放在提示所需要的目录上面,直接mv一下即可:
mv/usr/bin/zabbix2014 /usr/local/zabbix/scripts/zabbix2014
之后会看到新的报警PROBLEM信息,email已经发送出去了,如下图:
9.2 改email地址,改成139邮箱,并且附带免费短信报警功能实现。
进入目录,AdministrationàUsersà Zabbixadministrators à Users (1) à AdminZabbix (最左边一列)àMedia(选择中间的那一个栏目)—> mediatype-zabbix2014 ( 选择用 Trigger 所用的 mediatype) à Edit( 点击进去修改 ) à Send to( 后面的输入框里面填写上 139 的 email , 比如 [email protected]) ,如下图所示:
9.3 切换139邮箱来验证发送短信功能
注册139邮箱,打开email,stop以及start数据库上面的mysql进程服务,就会收到报警email以及短信通知,报警email如下:
记得开启短信提示功能,短信免费。
9.4 如何让zabbix继续发送报警信息直到恢复正常为止。
进入目录,ConfigurationàHostsà选中主机àTriggeràName(比如进入 check_mysql_status )à在 Multiple PROBLEM events generation一栏打勾àSave。如下图所示:
10 总结:
第一次zabbix的邮件报警试验成功了,折腾了很多天,也咨询了很多朋友,在此感谢他们,下面还有许多zabbix的深入的东西需要继续学习继续专研。
且行且努力吧。
参考文章: http://bbs.hx95.com/read-htm-tid-181423.html
附上网友北京酱油帝的建议,如何验证 trigger 报警成功:
要想验证trigger的有效性很简单:
第一 ,trigger在monitor的界面有个events选项看到没有,那里面是可以点击机器ip的,你看你定义的trigger有没有发生。
第二, 第二,如果trigger发生了,是要看脚本也就是media调用有没有成功,如果成功了,最好在脚本里面加上日志。