本方式是使用外部邮箱账号发送报警邮件到指定邮箱。
好处是:此邮箱账号既能发送邮件,也能接收邮件,而且避免被当做垃圾邮件。
一、zabbix-server端安装mailx服务
[root@ltt01 ~]# yum -y install mailx
注意:为防止中文乱码和发送内容变成附件,需要安装dos2unix
[root@ltt01 alertscripts]# yum -y install dos2unix
二、配置外部邮箱
[root@ltt01 ~]# vi /etc/mail.rc
添加如下内容:
set from=外部邮箱地址 smtp=外部邮箱smtp地址 set smtp-auth-user=外部邮箱地址 smtp-auth-password=邮箱密码 set smtp-auth=login
发送测试邮件
[root@ltt01 ~]# echo "zabbix test " | mail -s "zabbbix" 任意邮箱地址
echo后边跟的是邮件内容, -s后跟的是邮件主题,最后是要发送的邮箱地址。
三、定义发送脚本
查看当前所设置语系
[root@ltt01 ~]# locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= [root@ltt01 ~]# echo $LANG en_US.UTF-8
查看zabbix报警脚本位置
[root@ltt01 ~]# grep "AlertScriptsPath" /etc/zabbix/zabbix_server.conf ### Option: AlertScriptsPath # AlertScriptsPath=${datadir}/zabbix/alertscripts AlertScriptsPath=/usr/lib/zabbix/alertscripts
进入所在目录
[root@ltt01 ~]# cd /usr/lib/zabbix/alertscripts/
创建发送脚本,并编辑内容
[root@ltt01 alertscripts]# vi sendMail.sh #!/bin/sh #export LANG=en_US.UTF-8 //解决乱码 FILE=/tmp/mailtmp.txt echo "$3" > $FILE dos2unix -k $FILE //解决内容成附件发送 /bin/mail -s "$2" $1 < $FILE
:wq保存退出
给脚本赋值运行权限
[root@ltt01 alertscripts]# ls -l total 4 -rw-r--r-- 1 root root 39 Apr 2 14:59 sendMail.sh [root@ltt01 alertscripts]# chmod +x sendMail.sh [root@ltt01 alertscripts]# ls -l total 4 -rwxr-xr-x 1 root root 39 Apr 2 14:59 sendMail.sh
测试发送脚本
[root@ltt01 alertscripts]# ./sendMail.sh 邮箱地址 "zabbix" "zabbix test"
四、web操作
管理--->报警媒介类型---->创建媒体类型
注意:脚本名称与实际的脚本名称一致
添加以下3个参数,分别对应sendEmail.sh脚本需要的3个参数:收件人地址、主题、详细内容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
管理--->用户-----> 点击Admin--->报警媒介--->添加--->选择sendMail.sh,填写收件邮箱
点击更新,保存信息
管理---->用户群组----->点击 zabbix administrators 调试模式为已启用
点权限---->点选择
全选
点更新
配置--->动作----->创建动作
注意事件源要选择触发器
定义动作
定义操作
定义回复操作
定义确认操作
点击添加
五、测试
打开四个XShell连接,等待接收邮件。