试验环境:
LAMP环境 (LNMP环境已经成功了,为了避免干扰,我另一台LAMP主机)
### 我在做实验之前,作了时间同步,不知道这个有木有影响,一起说一下吧!
yum -y install ntpdate
ntpdate time.windows.com
hwclock -w
### 163的邮箱被报垃圾邮件的概率太大,我没用163的邮箱发,而是用的139的邮箱
软件版本如下:
httpd-2.4.16
mysql-5.6.26
php-5.6.13
zabbix-3.0.4
配置好zabbix的服务器,这个是我用源码编译的LAMP环境搭建的
首先,注册一个139的邮箱,并开启IMAP/SMTP服务
在zabbix服务端安装mailx
yum -y install mailx
配置mailx,发件邮箱,等信息如下:
vim /etc/mail.rc # 在最后,追加如下内容:
set [email protected] smtp=smtp.139.com
set [email protected] smtp-auth-password=[登录密码]
set smtp-auth=login
尝试直接使用mail命令发送邮件到自己的邮箱
echo "This is from 192.168.31.37" | mail -s "test" [email protected]
编写发邮件脚本如下:
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${message}" | mail -s "${subject}" $1 >> /tmp/sendmail.log 2>&1
[root@gan37 ~]# cat sendmail.sh
#!/bin/bash
echo "$1" >> /tmp/test.txt
echo "$2" >> /tmp/test.txt
echo "$3" >> /tmp/test.txt
echo "$3" | mail -s "$2" $1 >> /tmp/sendmail.log 2>&1
[root@gan37 ~]# touch /tmp/sendmail.log
[root@gan37 ~]# chown zabbix.zabbix !$
chown zabbix.zabbix /tmp/sendmail.log
[root@gan37 ~]# touch /tmp/test.txt
[root@gan37 ~]# chown zabbix.zabbix !$
chown zabbix.zabbix /tmp/test.txt
[root@gan37 ~]# chown zabbix.zabbix sendmail.sh
[root@gan37 ~]# ls -l sendmail.sh
-rw-r--r-- 1 zabbix zabbix 147 Nov 4 13:02 sendmail.sh
[root@gan37 ~]# chmod +x sendmail.sh
[root@gan37 ~]#
使用脚本再次发邮件尝试:
chmod +x sendmail.sh
[root@gan37 ~]# ./sendmail.sh [email protected] "Test Again" "I come again,can you see me"
将脚本移动到一个便于管理的目录,这里我就放在了zabbix安装目录下了
[root@gan37 ~]# mkdir /usr/local/zabbix/alertscripts
[root@gan37 ~]# mv sendmail.sh !$
mv sendmail.sh /usr/local/zabbix/alertscripts
[root@gan37 ~]# ls -l !$
ls -l /usr/local/zabbix/alertscripts
total 4
-rwxr-xr-x 1 zabbix zabbix 147 Nov 4 13:02 sendmail.sh
[root@gan37 ~]#
设置zabbix_server.conf 告知其邮件发送脚本位置
vim /usr/local/zabbix/etc/zabbix_server.conf
修改AlterScriptsPath为如下值
AlterScrtipsPath=/usr/local/zabbix/alertscripts
保存退出,并重启zabbix_server
service zabbix_server restart
在浏览器中设置zabbix邮件报警:
管理-->报警媒介-->创建媒体类型
填写内容如下:
名称: Mailx
类型:脚本
脚本名称:sendmail.sh # 如alertscripts目录中的文件名称一致
脚本参数: {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
然后将报警媒介与账户绑定
管理---> 用户 ---> Admin ---> 报警媒介 ---> 添加
然后点击更新,再次进入,确定Mailx报警媒介已于Admin绑定
配置zabbix_server启动报警机制
配置---> 动作 ---> Report problems to Zabbix administrators ---> 操作 ---> 编辑 --> 发送到用户 ---> 选择Admin (这里我讲持续时间改为了60s) ---> 更新
修改完以后,使这个样子的:
再次点击更新,然后启用动作
到这里,邮件报警 已配置完成,让我们来测试一下吧!!!
在zabbix服务器中,停止本地agentd
[root@gan37 zabbix]# service zabbix_agentd stop
等一会!大概10分钟吧