之前的几篇文章已经讲了如何定义监控项、触发器等。接下来讲讲如何定义动作。将动作之前我们先了解一下事件(event)。事件(event):即发生了一件值得关注的事情,例如某个触发器状态改变,新的agent或重新上线的agent的自动注册等。而动作是指对于特定事件事先定义的处理方法,包含了操作(如发送通知)和条件(何时执行操作)。由此,可以得知动作是通过事件来触发。

现在讲讲如何创建一个动作,与监控项和触发器结合起来一起使用。打开zabbix控制台“配置>动作>创建动作”,要通过触发器产生事件,所以事件源选择触发器。

zabbix4 动作 问题没有被制止 zabbix动作配置_centos


因为要用于发送邮件,所以动作名称这里填“send mail”

zabbix4 动作 问题没有被制止 zabbix动作配置_zabbix4 动作 问题没有被制止_02


上图中设定了两个条件:条件A“触发器等于131:http trigger” ,条件B:“主机等于131”。具体定义如下图。

条件B:主机–等于—选择—选定主机。

zabbix4 动作 问题没有被制止 zabbix动作配置_触发器_03


条件A:触发器–等于–选择–http trigger

zabbix4 动作 问题没有被制止 zabbix动作配置_unix_04


zabbix4 动作 问题没有被制止 zabbix动作配置_centos_05


对操作进行配置

zabbix4 动作 问题没有被制止 zabbix动作配置_centos_06


操作步骤这里需要定义,发送到用户选择Admin,Admin用户之前已经配置了“报警媒介”。仅送到选择“MailScript”,“MailScript”是之前定义好的“报警媒介”。这里只是为了简单展示,所以其他的默认即可

zabbix4 动作 问题没有被制止 zabbix动作配置_centos_07


恢复操作也要定义,用于服务正常后发送邮件通知,因此这里也要指定消息接收用户。

zabbix4 动作 问题没有被制止 zabbix动作配置_centos_08


zabbix4 动作 问题没有被制止 zabbix动作配置_触发器_09


到此,一个动作的创建基本完成了。接下来用于测试邮件接收。

步骤如下:

(1)添加被监控主机httpd服务的监控项,定义好触发器,并关联到指定的动作。

(2)模拟故障:关闭httpd服务

(3)查看是否受到报警邮件

(4)模拟故障解除:重启httpd服务

(5)查看是否收到恢复邮件

步骤(1)之前的文章已详细讲解,因此这里不再赘述。这里从第(2)开始讲解。

关闭httpd服务

[root@centos7 ~]# systemctl stop httpd

关闭httpd服务后,监测页面出现告警信息,同时,也可以看到邮件已经发送。

zabbix4 动作 问题没有被制止 zabbix动作配置_触发器_10


打开邮箱查看邮件

zabbix4 动作 问题没有被制止 zabbix动作配置_centos_11


重启httpd服务后,邮件也能正常接收到

[root@centos7 ~]# systemctl start httpd

zabbix4 动作 问题没有被制止 zabbix动作配置_触发器_12

故障排错:

刚开始发现邮件以附件方式发送,显示不正常,这里需要安装dos2unix转换工具( 解决发出的邮件是附件格式的问题 )

zabbix4 动作 问题没有被制止 zabbix动作配置_zabbix4 动作 问题没有被制止_13


1、安装dos2unix

yum install dos2unix

2、修改邮件脚本

[root@centos7 alertscripts]# vim /usr/lib/zabbix/alertscripts/mail.sh 

#!/bin/bash 
#export.UTF-8 ###解决发送的中文变成了乱码的问题 
#$1是收件人,$2是邮件主题,$3是邮件内容
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
dos2unix -k $FILE ###解决了发送的邮件内容变成附件的问题。 
/bin/mail -s "$2" $1 < $FILE

上面的这个三个参数是接收从web页面中传递过来的:

$1:收件人邮箱地址;
$2:邮件标题;
$3:邮件内容
3、创建临时文件并授权

[root@centos7 alertscripts]# touch /tmp/mailtmp.txt
[root@centos7 alertscripts]# chown zabbix.zabbix /tmp/mailtmp.txt

==注意:要给脚本添加权限 ==

chmod 755 /usr/lib/zabbix/alertscripts/mail.sh