根据使用zabbix这么久的经验,总结了一套zabbix比较实用的添加主机、监控报警的使用流程,供大家参考。
关于如何安装,请移步到:http://www.centoscn.com/image-text/install/2013/0806/1093.html
一:添加处理方法,就是如何报警
打开zabbix的管理------处理方法----create media type:
我用的是脚本发邮件的方式来报警的,脚本名字为mail.py。指的一提的是脚本存放位置,我的脚本是放在/usr/local/zabbix/bin/目录下面,在这里不写目录的据对路径,直接写脚本名字,他的路径设置是在zabbix服务器端的配置文件中设置的,在zabbix_server.conf配置文件中设置:AlertScriptsPath=/usr/local/zabbix/bin/
二:添加zabbix用户和组,设置其邮箱地址等信息
1:打开zabbix的管理------用户---选择用户组下拉----create user group:
填写个组名,设置需要的权限直接保存就成,其他的不用填写和选择。
2:打开zabbix的管理------用户---选择用户下拉----create user:
填写用户信息
3:添加报警介质,就是报警方式,因为是报警,【信息】那项就不用勾选,信息一般就是服务器信息发生变化时报警,这个一般没有什么意义,所以不勾选,不过你也可以选择,根据个人喜好。类型的话就是选择处理发放中的报警介质,选择你添加的。然后可以保存信息,完成添加用户(Permissions那项没有不填写)。
三:报警触发器触发的动作设置
当监控项中的触发器达到你设置的报警值之后,需要执行操作来发送邮件等动作。具体设置:
1:打开zabbix的系统配置---操作---- 选择事件源为触发器------create action:
2:触发条件设置:
3:详细操作设置,即满足触发条件之后执行什么动作,这里一般设置为发邮件之类的,设置收邮件的用户(建议每个组对应一个用户,这样发邮件的时候容易设置发送对象):
四:zabbix中常用到的几个key
Zabbix的key可以理解为zabbix的命令,执行这个key可以得到相应的结果。
1:监控端口的:net.tcp.port[,3306]
/usr/local/zabbix/bin/ -s192.168.8.120 -knet.tcp.port[,3306] 返回1为192.168.8.120的端口3306存在,0为不存在
2:监控进程的:proc.num[mysqld]
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -kproc.num[mysqld] 返回值为192.168.8.120中mysqld的进程数量
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -kproc.num[] 返回值为192.168.8.120中所有的进程数量
3:查看CPU核数的:system.cpu.num 返回值为服务器CPU的核数
4:查看系统的系统启动时间和当前时间:system.boottime、system.localtime 返回值为系统启动时间和当前时间,为时间戳格式
5:查看系统的简单信息:system.uname 返回值为192.168.8.120的系统信息,类似于linux系统的uname -a命令
6:查看windowns系统当前网卡的进出流量:net.if.out[{HOST.NAME},bytes]、net.if.in[{HOST.NAME},bytes]和linux系统的key:net.if.out[eth0,bytes]、net.if.in[eth0,bytes]一样
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -knet.if.in[192.168.8.120,bytes] 返回值为IP为192.168.8.120的进流量,此值为计数值,单位为bytes,减去上次取得值,除以时间间隔为此段时间内的平均流量
/usr/local/zabbix/bin/zabbix_get -s192.168.8.120 -knet.if.out[192.168.8.120,bytes] 返回值为IP为192.168.8.120的出流量,此值为计数值,单位为bytes,减去上次取得值,除以时间间隔为此段时间内的平均流量
7:查看系统内存大小:vm.memory.size[total],返回值单位bytes
8:查看文件的大小: vfs.file.size[file] 如: vfs.file.size[/var/log/syslog] 返回的是/var/log/syslog的大小,单位是:bytes
9:查看文件是否存在:vfs.file.exists[file] 文件如果存在返回0,不存在返回1
10:查看文件的MD5:vfs.file.md5sum[file]查看小文件的MD5,返回为MD5值(好像只有2.0以上的版本有这个key)
11:自动发现网卡并监控流量和自动发现分区及分区挂载情况的两个key:net.if.discovery,vfs.fs.discovery,windows和linux监控模板中都有这模板(2.0以上版本),应用即可
以上是常用的key,其实监控服务器无非就是内存、硬盘占用、CPU负载、流量、服务器和端口等情况。如果要监控其他的可以自定义key来实现,本人喜欢自定义key,写个脚本来返回,得到自己想要的监控结果,zabbix在这块做的非常好,扩展性很强,支持各种脚本来实现自定义的key。
要启用自定义key,需要在客户端的配置文件中启用UnsafeUserParameters=1参数,然后在配置文件的最下面来定义key,如:
UserParameter=free.disk,/usr/local/zabbix/bin/disk.py
free.disk为key的名字,/usr/local/zabbix/bin/disk.py为服务器端调用free.disk这个key时执行的脚本,其结果就是free.disk的返回值。脚本可以是任何可以运行的脚本语言。
五:创建监控模板和监控项
其实在zabbix服务器端安装完成之后,就有许多自带的监控模板,基本上可以满足大众化的监控需求,不过其中有许多是没有必要的监控项或是自己不感兴趣的,比较冗余,所以要做好监控的话,还是自定义模板和监控项,这个监控模板可以修改zabbix系统自带的,也可以自己创建。以下为自己创建监控模板。
1:创建监控模板:
打开zabbix的系统配置---模板----create template:
填写模板名字和模板所在组保存即可。
2:创建监控项:
打开zabbix的系统配置---模板---选择对应模板中的监控项---create item:
3:创建监控项的触发器:
打开zabbix的系统配置---模板---选择对应模板中的触发器---create trigger:
这里说明下这个 N 值的大小
比如说我检测被监控端的httpd 进程数为9个,这时这这个N的值就可以设置为 N=9 ,
当last value 最后一次检测的值小于N,也就是小于9时,这个触发器就会被触发。
六:添加主机并应用模板
添加主机有两种方法,一个是手动添加,一个是通过zabbix的自动发现来自动添加主机。
1:手动添加主机
做完以上的设置,添加主机就是很简单的事情了。打开zabbix的系统配置---主机―create host:
在这一步,只填写主机名、显示名、agent接口中的IP地址,选择主机所在组,其他的默认。
选择模板确认并保存主机,其他的选项不需要设置,默认即可
添加完主机如下图,可用性为绿色是正常,红色为不可监控(主要是网络不通或是没有安装zabbix客户端),灰色为正在检测zabbix的状态:
2:通过自动发现自动添加主机:
打开zabbix的系统配置---自动发现―create discovery rule:
需要添加名称,ip地址段(这个地址段以覆盖你所有IP的最小地址段为好),checks。其中checks最为重要,总共三项,只填写key,这里用system.uname这个key。然后点击添加并保存。这里的意思是zabbix服务器端扫描这个网段中的zabbix客户端(客户端端口默认为10050),扫描到之后取客户端的system.uname值,这个值返回的类似于linux系统中的uname �Ca命令,值为下面形式:
这个主要用于发现主机之后把主机自动分配到相应的组(比如linux组或是windowns组)中,并且应用相应的监控模板。
当然,这个key值不一定要用system.uname,也可以用其他的key,首先zabbix客户端支持这个key,在这用这个key可以区分不同类型的主机方便分组应用监控模板。
打开zabbix的系统配置---操作-------事件源下拉选择自动发现―create action:
这几项的意思是当自动发现通过发现zabbix客户端,并且接收到key的中包含linux字符,即把他添加到linux_servers组中,应用linux_server模板。等一段时间即可查看自动发现的结果。结果可以在zabbix首页中最下面有状态,也可以在zabbix的状态统计---自动发现中查看,可以看到发现了多少,监控了多少。
到此为止,zabbix的监控设置说明完毕。