记录一次zabbix邮件告警搭建过程和问题处理

(不是一天写成blog,有截图上的时间差)

流程:

1.配置zabbix-server服务端mailx,并在zabbix-server.conf配置文件的脚本路径中添加邮件脚本;

2.配置web界面选项的动作报警媒介类型

3.在用户中添加告警媒介,设置类型,收件人等选项

首先,在zabbix-server客户端安装mailx,先停掉postfix

systemctl stop postfix.service
yum install mailx -y

在配置文件最后面编写发送使用的配置邮件:

vim /etc/mail.rc 

set bsdcompat set from=yourmail@163.com set smtp=smtp.163.com set smtp-auth-user=yourmail@163.com set smtp-auth-password=163邮箱授权码 set smtp-auth=login

163邮箱授权码获得方式:

需要手机发送短信收到之后网页163邮箱确定会会出现一次,记住在添加到配置中去。。

测试,自己给自己发一下吧:

echo "yourmail@163.com test" | mailx -s "zabbix-alert" yourmail@163.com 

测试 成功了!!!

===

创建邮件发送脚本

先看下zabbix-server配置文件查看下发送脚本的目录

找到alertscripts目录,

编写脚本mail.sh,并赋予执行权限x,

#!/bin/bash
echo "use mailx to send mail"
echo "$3" | mail -s "$2" "$1"

OK,,

配置报警媒介回到zabbix-server 界面,在告警媒介添加新的告警

 

 脚本名称要和配置文件中的一样,,点击测试

 要添加发送的邮箱收告警信息,成功如下图,

 配置动作

紧接着配置zabbix界面上的动作选项,

动作选项中,在子选项条件选项中添加对应的触发条件,我设置的是主机web1的nginx宕机为触发条件,也可以添加一个主机组,

 

操作选项中,消息内容要把需要的报警信息填进去,会在邮件中显示,操作细节必须填写,要设定发送邮件给定的主机或主机组,恢复操作细节也是,但也可以不写,不写在事故恢复时,不会发邮件告诉我事故已经没有了,,

操作-->消息内容:

故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

恢复操作-->消息内容:

恢复故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
恢复告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

看下演示:

然后在用户中添加告警媒介

 当监控主机web1的nginx停掉后,zabbix-server会发送邮件通知。

===============================================================

报错集合:

1.碰到的错误如图,发送邮件的时候显示以失败,并报错No media defined for user.

 

 原因如图,我在玩配置用户报警媒介的时候类型忘记选择自定义的邮件告警,将类型选择邮件告警,正常发送:

 2.这个也不是错误

就是收到的邮件是个bin文件,需要下载之后改成txt类型查看,怎么解决?

解决了!!

mail.sh脚本配置文件:

#!/bin/bash
#export LANG=zh_CN.UTF-8

#dos2unix -k "$3"
#echo "use mailx to send mail"
#echo "$3" | mail -s "$2" "$1"


#export.UTF-8 ###解决发送的中文变成了乱码的问题 
#FILE=/tmp/zabbix_mail.txt 
#echo "$3" >$FILE
#dos2unix -k $FILE ###解决了发送的邮件内容变成附件的问题。 
#/usr/bin/mail -s "$2" $1 < $FILE
SENT_TO=$1
SENT_SUBJECT=$2
SENT_CONTENT="/tmp/alert_$$.tmp"

echo "$3">$SENT_CONTENT
dos2unix $SENT_CONTENT
mailx -s "SENT_SUBJECT" $SENT_TO<$SENT_CONTENT

 

 

posted @ 2020-03-30 11:59  5444de  阅读(2381)  评论(0编辑  收藏  举报