2018.4.16 16周4次课

十六周四次课(4月16日)

19.12 添加自定义监控项目

19.13/19.14 配置邮件告警

19.15 测试告警

19.16 不发邮件的问题处理

19.12 添加自定义监控项目

前面提到过zabbix的优势,其中之一就是很方便地添加自定义监控项目,它虽然提供了丰富的模板,但依然不能满足各种各样的特殊需求。比如,想要监控Nginx的访问日志条数,此类个性化需求在zabbix的模板中是没有的。下面举一个实际的例子来教你添加自定义的监控项目,这涉及编写shell脚本。需求是:监控某台web服务器80端口的并发连接数,并设置图形。

先来分析一下该需求,有两步,第一是要创建自定义监控项,第二是要针对该监控项设置成图形。而该监控项不能在zabbix自带模板中找到,只能自己手动创建,监控项目有一个核心的元素就是数据源,有了数据源就可以创建监控项了,并且也很容易成图形。所以,问题的焦点在于:如何获取服务器80端口的并发连接数

需求:监控某台web的80端口连接数,并出图

两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现

在前面的章节中,曾经介绍过一个命令netstat,其中它有一个用法nestat -ant可以查看系统 TCP连接状态情况,在各个状态中有一个ESTABLISHED'它表示正在连接中。由此,就可以获取80端口的并发连接数,具体命令为:netstat -ant |grep ':80 ' |grep ESTABLISHED

80后面多了一个空格,这是为了更加精准,如果不加空格,8080这样的端口也会包含在内了。

对于第一步,需要到客户端定义脚本

vim /usr/local/sbin/estab.sh //内容如下

#!/bin/bash

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

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

更改权限:chmod 755 /usr/local/sbin/estab.sh

客户端上编辑配置文件 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.37.104 -p 10050 -k 'my.estab.count' //得到的数字是0,如果不是说明脚本执行不对;-s:指定客户端IP;-p:指定端口,如果不指定就是用默认的10050;-k:指定键

检查网络防火墙:

然后在zabbix监控中心(浏览器)配置增加监控项目

键值写my.estab.count

添加该项目后,到“监测中”→“最新数据”查看刚添加的项目是否有数据出现

依次点击“配置" →“主机",找到aming-06主机,然后点击“创建监控项",名称写“并发连接数",键值写类型保持默认,即被动模式,如果选择"zabbix客户端(主动式)"则为主动模式。键值写my.estab.count。其他项保持默认,点击最下面的“添加"按钮

目前还不确定是否正确添加监控项,依次点击”监测中”→“最新数据",主机那一栏选择aming-06,名称填写“ 80端口",然后点击“应用"按钮,则会过滤出刚刚添加的“并发连接数"监控项,可以看一下最新数据是什么。最新数据为0,这说明没有问题。

有了数据就可以添加图形了

“配置” “主机” “图形” “创建图形

如果需要报警的话,还可以做一个触发器

“配置” “主机” “触发器” “创建触发器”

19.13/19.14 配置邮件告警

使用126或者QQ邮箱发告警邮件

首先登录你的126邮箱,设置开启POP3、IMAP、SMTP服务

开启并记录授权码

然后到监控中心设置邮件告警

“管理”,“报警媒介类型”,“创建媒体类型”

{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE} //分布在python脚本的三个参数里

依次点击“管理"→“报警媒介类型",在右上角点击“创建媒体类型",名称填写baojing, 类型为“脚本",脚本名字填写mail.py。脚本参数这里点击“添加",然后填写{ALERT. SENDTO};继续点 “添加" , 填写{ALERT.SUBJECT} ;继续点 “添加",填写{ALERT.MESSAGE} 。也就是说 ,三个参数需要添加三次,最后点击下方的“添加" 蓝色按钮。

上一步仅仅是定义了告警媒介,但还未创建脚本,也未定义脚本的路径等信息。首先通过zabbix_server的配置文件确定告警邮件的脚本应该放到哪里

编辑服务端配置文件:vim /etc/zabbix/zabbix_server.conf

AlertScriptsPath=/usr/lib/zabbix/aIertscripts

创建报警脚本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.xxx.com' //更改为自己邮箱的smtp服务器

sendqqmail('邮箱地址,'邮箱的客户端授权密码','邮箱地址',to,subject,content)

更改脚本权限:chmod 755 /usr/lib/zabbix/alertscripts/mail.py

执行脚本:python /usr/lib/zabbix/alertscripts/mail.py 邮箱地址 “标题”“内容“

创建一个接受告警邮件的用户,“管理”→“用户”→“创建用户”→“报警媒介”,类型选择“baojing”,注意用户的权限,如果没有需要到选择的用户组去设置权限

设置动作,“配置”→“动作”→“创建动作”,名称写“sendmail”(自定义),

“操作”页面,内容如下

HOST:{HOST.NAME} {HOST.IP} //定义的主机名和IP

TIME:{EVENT.DATE}  {EVENT.TIME} //发生的日期和时间

LEVEL:{TRIGGER.SEVERITY} //定义的示警度

NAME:{TRIGGER.NAME} //告警的触发器名

messages:{ITEM.NAME}:{ITEM.VALUE} //出现告警时的状态信息

ID:{EVENT.ID} //事件的ID

“新的触发条件”,A维护状态 非在 维护,B触发器示警度>=未分类

“操作”,选择发送的用户为刚创建的用户“aming“,仅送到选择“baojing”

切换到“恢复操作”,把信息改成如下

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

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

LEVEL:{TRIGGER.SEVERITY}

NAME:{TRIGGER.NAME}

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

ID:{EVENT.ID}

点击“新的”,“操作”,选择发送的用户为刚创建的用户aming,仅送到选择“baojing”

19.15 测试告警

创建一个自定义的触发器

测试:

查看邮箱,报警邮件收到


猜你喜欢

转载自blog.51cto.com/415326/2104150