添加自定义监控项目,配置邮件告警,测试告警,不发送邮件的问题处理

2020-09-23 11:27:03 浏览数 (1)

19.12添加自定义监控项目

自定义的监控项目是用于实现一些特殊的、个性化的监控需求,因为zabbix自带的模板里的监控项目,是不能帮我们做到某个特定的监控的,所以需要自己去自定义一个监控项来完成这种个性化需求。

例如:我现在有一个需求,这个需求是监控某台web服务器80端口的并发连接数量(ESTABLISHED状态的),并绘制出图表。

根据需求分析,首先我们第一步肯定得先通过脚本的方式获得这个连接数量,得到连接数量后还要去zabbix监控中心去创建监控项目,然后再针对这个自定义项目绘制一个图形出来。那么下面就演示如何完成这个需求:

1. 对于第一步,需要到客户端机器上定义脚本:

vim /usr/local/sbin/estab.sh

脚本内容如下:

#!/bin/bash

##获取80端口并发连接数

netstat -ant |grep ':80 ' |grep -c ESTABLISHED

获取80端口的连接数量就一条命令就可以搞定了,所以这个脚本很简单:

给这个脚本设置权限:

chmod 755 /usr/local/sbin/estab.sh

然后编辑zabbix客户端的配置文件:

vim /etc/zabbix/zabbix_agentd.conf

增加内容如下:

UnsafeUserParameters=1  //表示使用自定义脚本

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh

//自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数*表示没有参数,如果没有参数则可以省略,脚本路径为/usr/local/sbin/estab.sh

重启zabbix-agent服务:

systemctl restart zabbix-agent

接着去服务端验证一下这个自定义的脚本有没有被识别,命令如下:

zabbix_get -s 192.168.77.128-p 10050 -k 'my.estab.count'

能得到数字证明没问题,如果脚本有问题的话,是不会得到数字的。

完成以上的操作后,第二步就是到zabbix监控中心(浏览器)配置增加监控项目:

剩下的我都选择了默认,你可以根据自己的需求选择。

添加完监控项后,给这个监控项做一个图形:

预览看看有没有问题:

创建触发器,配置当并发数量到达某一个数量时就会告警:

我设置的规则如下,这个规则表示:并发链接数量大于200就告警:

然后其他的默认即可。

19.13/19.14配置邮件告警

在Zabbix服务端中可以设置邮件告警,当被监控的主机宕机了或者达到触发器预设值时,就会自动发送报警邮件到指定的一个第三方邮箱,这个邮箱可以使用163或者QQ邮箱(因为我只尝试过这两个邮箱),我这里使用163邮箱作为演示。

1. 登录邮箱,设置开启POP3、IMAP、SMTP服务,因为要在服务器上调用第三方的邮箱,需要这个邮箱开启这些服务,登录后点击设置可以看到这些服务的选项:

  1. 设置服务,第一次设置的话,会需要短信验证,然后还会要求你设置一个密码:

进行短信验证:

设置密码:

完成:

这个设置的密码也就是授权码要记住,发送邮箱的时候需要这个密码。

  1. 到监控中心,创建一个报警媒介类型:

{ALERT.SENDTO} 参数定义第三方的邮件地址

{ALERT.SUBJECT} 参数定义主题

{ALERT.MESSAGE} 参数定义邮件内容

  1. 在服务端上查看zabbix配置文件,看看定义的脚本文件存放的路径是什么:

vim /etc/zabbix/zabbix_server.conf

在文件中搜索AlertScriptsPath:

5. 得知脚本文件的存放路径后,在该路径下创建报警脚本mail.py:

vim /usr/lib/zabbix/alertscripts/mail.py

脚本内容从以下网址可获得:

https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

修改以下几处内容:

gserver = 'smtp.163.com'  (因为我使用的是163邮箱)

6. 更改脚本文件的权限:

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

  1. 测试一下这个脚本:

cd /usr/lib/zabbix/alertscripts

然后到你的邮箱里看看是否有收到这个邮件,能正常收到就没问题:

如果没有收到邮件的话,就得检查检查你的脚本是否有问题。

以上操作完成后,需要到监控中心创建一个用户用来发送邮件:

然后再添加报警媒介:

接着就是到用户群组中修改权限:

如果你这一步权限没有修改对的话,你是收不到告警邮件的。

修改完群组权限后,到你创建的用户的权限界面里,看看是否已经拥有所有组的读写权限:

用户配置完后,需要去创建一个动作,动作就是触发器触发后会发生的行为动作,这个动作就是发邮件的动作:

然后操作界面里还需要配置一下默认信息和操作:

默认信息的内容如下:

HOST:{HOST.NAME} {HOST.IP}

TIME:{EVENT.DATE}  {EVENT.TIME}

LEVEL:{TRIGGER.SEVERITY}

NAME:{TRIGGER.NAME}

messages:{ITEM.NAME}:{ITEM.VALUE}

ID:{EVENT.ID}

恢复操作界面里的默认信息也需要重新配置,配置内容如下:

HOST:{HOST.NAME} {HOST.IP}

TIME:{EVENT.DATE}  {EVENT.TIME}

LEVEL:{TRIGGER.SEVERITY}

NAME:{TRIGGER.NAME}

messages:{ITEM.NAME}:{ITEM.VALUE}

ID:{EVENT.ID}

完成:

19.15测试告警

到目前为止,邮件告警就配置好了,接下来就是测试一下这个告警是否正常,首先创建一个自定义的触发器:

条件:

然后到监控中心的仪表板中,等一会就会发现出现警告信息:

如图,这是我们刚刚创建的触发器告的警,并且动作显示的是完成,代表邮件已经发送了,如果显示的是失败的话,那就是邮件发送失败了,发送失败的情况一般有以下几个原因:

  1. 媒介类型
  2. 动作的默认信息
  3. 操作和恢复操作的默认信息
  4. 脚本文件不够权限
  5. 没有给用户添加媒介
  6. 邮箱里的服务没有打开
  7. 触发器
  8. 网络问题

一般动作显示失败的话都会有一个具体的提示,根据提示排查错误快一些。

我这里是发送成功的,那么到邮箱里看看邮件内容:

因为监控项的名称是中文的,所以显示的会是乱码。

关于设置主动或被动模式:

在监控项里设置,默认是被动,有个主动式字样的就是主动模式。

19.16不发送邮件的问题处理

  1. 检查发送邮件的脚本,先在命令行里测试一下是否能正常收到。
  2. 检查脚本文件的权限,确保能被zabbix用户调用
  3. 检查报警媒介中的配置
  4. 检查用户中是否有添加报警媒介,并且要具有读写权限
  5. 检查动作、操作、恢复操作中的配置

如果从头到尾都仔细检查了,实在是无法收到邮件的话,那就是你搭建的zabbix有问题了,重新恢复快照,再安装一遍。

0 人点赞