从安装的第一天,就必然有人会有疑问,默认的监控模板不好用,或者说根本没有自己想要的,这可怎么办呢?没关系,zabbix和nagios一样,可以自定义监控项目,当然包括报警规则和视图了,也不是很复杂.


添加自定义的监控项目:

操作之前要知道原理:原理是server端调用agent端配置的键值参数调用脚本,然后脚本参数传输给server端,server端写进数据库,然后获取到新的数值再进行处理并在前端显示给用户看.

所以我们需要做的事情有三个:

第一,编写监控脚本

第二,修改zabbix_agent的配置

第三,在zabbix_web添加新的监控项目

请注意,第一二步都是在zabbix_agent端做的,不涉及zabbix_server端,第三步就是web端.

下面我用一个在linux系统下监控java进程的例子来讲解:

第一步,来看看我的监控脚本,相当简单,只是监测java进程的数量和tomcat的数量

#查看脚本
vim checkjava.sh
#!/bin/bash 
#ppp 
#scripts for java status 
function jwc {
/bin/ps aux |grep java|grep -v grep |wc -l
}
function ctom {
/bin/ps aux |grep java|grep tomcat|wc -l
}
$1
#运行一下,有9个java进程,1个tomcat进程
bash checkjava.sh jwc
9
bash checkjava.sh ctom
1

第二步,在zabbix_agent添加键值调用脚本配置:

如果你有配这个:

cat /etc/zabbix/zabbix_agentd.conf |grep Include= |grep -v \#
Include=/etc/zabbix/zabbix_agentd.conf.d/

那你新的键值调用脚本的配置就可以加载到/etc/zabbix/zabbix_agentd.conf.d/下面,如果没有,就直接添加到/etc/zabbix/zabbix_agentd.conf的最后一行,其实都是一样的,看你喜欢,下面来看事例:

#进入目录
cd /etc/zabbix/zabbix_agentd.conf.d/
#ll一下,这些都是我自定义的监控项
ll
total 24
-rw-r--r-- 1 root root   64 Nov 30 13:48 checkjava
-rw-r--r-- 1 root root   60 Nov 11 14:16 iostatus
-rw-r--r-- 1 root root   56 Nov 10 16:05 redis
-rw-r--r-- 1 root root   51 Nov 10 15:46 tcp
#其他暂时不研究,来看看这次的目标配置
vim checkjava 
#monitor java 
UserParameter=checkjava[*],/shell/checkjava.sh $1
#意思是定义一个键值checkjava,调用/shell/checkjava.sh 这个脚本并传入参数,
#然后,不要忘记重启一下zabbix_agent
/etc/init.d/zabbix-agent restart

然后,你可以在zabbix_server测试下

#用下面命令调试远程agent键值
zabbix_get -s 10.X.X.X -p10050 -k"checkjava[jwc]"
5
#能获取到自己想要的数据就可以了

第三步,在zabbix_web添加新的监控项目:

老样子了,登录我就不说了,直接就说界面的事了:

点击配置-模板-创建模板:

zabbix详解:(四)添加自定义的监控项目并使用_第1张图片

先改个名字吧,群组选默认的Templates就好,或者你有自己的爱好就随便了.

zabbix详解:(四)添加自定义的监控项目并使用_第2张图片

点击上面<监控项>,然后点<创建监控项>,就是创建下面两个了.

zabbix详解:(四)添加自定义的监控项目并使用_第3张图片

填上信息:

名称:别搞词不达意就好,会在图形和监控告警里体现的

类型:没其他特别的设置,默认就好了

键值:就是刚才在zabbix_agent里面conf.d文件夹配置的键值和脚本函数的名字,对应起来

信息类型:这个看你的脚本得出的是什么数值,是纯数字还是百分比的浮点数,字符文本什么的都可以,因为我这里是一个整数,所以就是数字(无正负)了.

数据类型:和上面对应,一般来说当然是十进制了

单位:有就写,没有也可以不写,类似百分比是%,流量是bps这样

数据更新间隔:这个看实际情况,无可都认某些监控不宜监控那么频繁,相反有一些则要频繁一些,例如我这个觉得1分钟就够了,某些人觉得要10秒.

历史数据保留时长和去世数据存储周期就看实际情况了,因为随着你zabbix使用时间的增长,数据量就必然会越来越大,觉得太大了,那就定义短一些.

其他不用管,直接确定更新就好了,然后再添加一个tomcat的,就成了我上面那个图了.

zabbix详解:(四)添加自定义的监控项目并使用_第4张图片

监控项有了,当然我们还需要看图是吧

点击监控项隔壁再隔壁的<图形>,然后点<创建图形>

zabbix详解:(四)添加自定义的监控项目并使用_第5张图片

填上信息:

名称:就是图形的信息了,会再监控图形那里体现

其他不用管,你们也可以自己测试下,

直接看<监控项>-点击<添加>,弹出一个新窗口

zabbix详解:(四)添加自定义的监控项目并使用_第6张图片

选择你想体现在图形上的监控项,这里全选就行了,然后点击<选择>,就会返回上面的框,再点击<更新>就完事了.

zabbix详解:(四)添加自定义的监控项目并使用_第7张图片

添加完图形,我还想他有告警啊,一个合理的需求,我现在的需求是当tomcat进程数不是1的时候就告警.

还记得监控项隔壁的触发器么?然后我们下面再来看看:

点击监控项和图形中间的那个<触发器>-然后点击<创建触发器>,然后弹出一个新的对话框

zabbix详解:(四)添加自定义的监控项目并使用_第8张图片

选择你要触发报警的<监控项>,又会弹出一个对话框

zabbix详解:(四)添加自定义的监控项目并使用_第9张图片

这里我们要的是tomcat进程数变成0后的告警,所以选择,然后返回刚才的对话框

zabbix详解:(四)添加自定义的监控项目并使用_第10张图片

在<功能>选项最右边的小三角下拉,选择你要的触发条件,一般来说都是大于或者小于,又或者是是不等于,自己按需选择了,我不想多说,选完就继续下面的条件

zabbix详解:(四)添加自定义的监控项目并使用_第11张图片

下面的两个<最后一个>和<排班>,这两个配合能使你的报警间隔更灵活,这里不细说,各位自己慢慢测试,得到自己的想要的结果是最重要的.

最后的实际上就是上面<功能>选择的N的意思,所以这里的意思就是:最新的T值不是1,T就是zabbix通过脚本获取到的值,最后点击插入,得到最开头点开触发器的那张图.

zabbix详解:(四)添加自定义的监控项目并使用_第12张图片

整个监控项目到这里算是添加完成了,但是我们还要添加到服务器配置里才能算真正完成,不然也是用不了,白搭了,下面来看看怎么用


使用自定义的监控项目:

其实和第二篇说的是一样的,需要添加模板使用,具体请看下面:

点击配置-主机,选择你要添加这个监控项的主机,跳到第二个界面

zabbix详解:(四)添加自定义的监控项目并使用_第13张图片

点击顶上的<模板>,然后右下角<选择>需要添加的模板,弹出一个对话框

zabbix详解:(四)添加自定义的监控项目并使用_第14张图片

选择我们的目标模板,这里就是监测java的模板了,点击选择,返回刚才的对话框

点击下面的<添加>然后点击<更新>

添加完毕,看看成果:

zabbix详解:(四)添加自定义的监控项目并使用_第15张图片

这就算是真的完成了,各位可以自己研究其他监控.


关于windows的添加自定义监控:

在这个方面我认识不算很深,而且zabbix自带的模板加上zabbix_agent的自发现功能还算强大,已经有大部分想要的监控,所以其实要加的东西不算多.

他的自动发现已经强大到,你自己定义的服务都能检测出来,流量监控也是自动发现的,想当厉害,唯一遗憾的是在cpu监控方面少了一个百分比,所以我们下面来添加一下.

这次我就不贴那么多图了,你们知道我说的是地方就可以:

点击<配置>-<模板>-选择