node1:zabbix服务器
java
IP地址:172.16.4.100
node
node2:zabbix客户端mysql
IP地址:172.16.4.101web
配置环境:监控node2主机的网卡流量(流入、流入),以及报警和报警升级
sql
文章概览
vim
一、使用zabbix监控客户端主机
一、1 客户端设置
一、2 定义主机组
一、3 定义主机
一、4 定义应用集
一、5 定义监控项目
一、6 定义出图
二、报警设置
二、1 触发器
二、2 示警媒介Medias:
二、3 用户Users:
二、4 动做
二、5 拟大流量,验证报警
三、执行命令&报警升级:
三、1 被监控端设置
三、2 Zabbix设置
四、维护时间:
bash
安装相关软件包服务器
[root@node2 zabbix-2.4.5]# yum installzabbix-2.4.5-1.el6.x86_64.rpm zabbix-agent-2.4.5-1.el6.x86_64.rpmzabbix-sender-2.4.5-1.el6.x86_64.rpm
修改配置文件指明zabbix服务器地址网络
[root@node2 zabbix-2.4.5]# vim/etc/zabbix/zabbix_agentd.conf 85 Server=172.16.4.100 #设置zabbix服务器地址 137 Hostname=node2 #设置主机名
设置完成启动服务,若是能够正常监听10050端口说明服务正常dom
[root@node2 zabbix-2.4.5]# service zabbix-agentstart [root@node2 zabbix-2.4.5]# netstat -lnt | grep10050 tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN tcp 0 0 :::10050 :::* LISTEN
主机组介绍:
主机组主要用于对主机的分组操做,能够根据地域、业务、实现的功能等进行
建立主机组:
在 组态-->主机群组 -->建立主机群组,能够打开建立主机组页面,只须要填写主机组的名字,便可完成建立。
定义完成以后,就会出如今组态中的主机群组中
主机介绍:
主机是指网络上能够被监控的对象,包括物理机、虚拟机、路由器、打印机、java虚拟机进程等;不过须要注意的时,不一样主机其支持的监控方式可能会不尽相同,如路由器交换机不支持zabbix agent就只能使用snmp协议监控,java虚拟机只能使用JMX监控方式。
建立主机:
定义一个监控的主机:在组态--> 主机 --> 建立主机能够打开以下界面添加主机
添加完成,就出现了node2主机,可是项目,触发器等都没有设置,须要在下面的过程当中一个一个建立
应用集介绍:
应用集主要是对监控项的分组操做,能够根据一下标准划分。
基础监控:
cpu、memory、noprocs、nofiles、disk usage等
应用监控:
Tomcat、MogileFS、mysql、mysql等
运营数据监控:
如流量、注册人数等
应用集建立:
在组态-->主机--> 中选择要建立应用集的主机,点击应用集,进去后选择点击建立应用集,能够建立新的应用集
建立应用集特别简单,只须要输入名称,就能够添加了
添加完成这里就有显示了,之后在建立项目时,就能够将项目关联到应用集中
项目(item)介绍:
(1)项目是zabbix服务器用于监控一个特定对象上的一个特定指标,并负载针对其收集相关的监控数据;好比cpu每分钟的平均负载是一个项目,某特定网络接口接收报文又是一个项目。
(2)每个项目都拥有相应的类型,例如“Zabbix agent”、“SNMP”、“External check”、“IPMI agent”、“SSH agent”、“JMX agent”等,Zabbix服务器会使用相应类型的协议或机制同被监控端通讯
Item key介绍:
(1)每个项目都有其专用的key;
(2)Zabbix服务器在与被监控端通讯时就使用相应的协议或机制去询问被监控端这个key的值,被监控端则调用与此key对应的监控脚本获取数据并返回给服务器端;
(3)Key的命名只能使用“0-9a-zA-Z_-.”(引号中的内容)等字符,且能够 接受参数,其命令习惯如system.cpu.load[<cpu>,<mode>],其中,中括号中的内容为参数,且分别能够按次序使用$一、$二、…进行引用, 此示例中仅有两个参数;
zabbix有许多预约义的key,详细信息的获取地址:
https://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/zabbix_agent
定义一个项目:
在组态-->主机--> 中选择要建立项目的主机,点击项目,而后点击建立项目便可
设置相关参数,而后点击add就能够添加对应的项目
这里定义一个监控eth0网卡出站的流量
在添加一个监控eth0网卡流量入站的项目
添加完成以下所示:
补充:一些经常使用的监控项目
网卡流量相关:
net.if.in[if,<mode>] #入站流量 if:接口,如eht0 mode:bytes(字节), packets(包的个数), errors(发生错误的包), dropped(丢弃的包) net.if.out[if,<mode>] #出战流量 net.if.total[if.<mode>] #监控总量
端口相关:
net.tcp.listen[port] #指定监听的端口 net.tcp.port[<ip>,port] #ip+端口 net.tcp.service[service,<ip>,<port>] #指明监听tcp服务,ip,端口 net.udp.listen[port] #监听的udp地址
进程相关:
kernel.maxfiles #内核所运行打开的最大文件数 kernel.maxproc #内核容许运行的最大进程数
CPU相关:
system.cpu.intr #cpu中断次数 system.cpu.load[<cpu>,<mode>] #cpu负载 system.cpu.num[<type>] #cpu颗数 system.cpu.switches #上下文切换的次数 system.cpu.util[<cpu>,<type>,<mode>] #cpu利用率
磁盘IO或文件系统相关:
vfs.dev.read[<device>,<type>,<mode>] #设备读取 vfs.dev.write[<device>,<type>,<mode>] #设备写入 vfs.fs.inode[fs,<mode>] #监控inode可用量
点击主机列表中的图形,就会出现图形建立按钮,点击便可建立图形
定义图形参数,能够将多个项目的值定义在一张图形上面显示出来
设置完成对应的图形参数,不要急着点添加,能够经过预览功能查看,图形是否是本身想要的效果,而后再点添加不迟,下面就是刚刚定义的图形预览图,若是没有问题就点击添加。
二、1 触发器
(1)“监控项”仅负责收集数据,而一般收集数据的目的还包括在 某指标对应的数据超出合理范围时给相关人员发送告警信息, “触发器”正是用于为监控项所收集的数据定义阈值
(2)每个触发器仅能关联至一个监控项,但能够为一个监控项同时使用多个触发器;事实上,为一个监控项定义多个具备不一样阈值的触发器,能够实现不一样级别的报警功能
(3)一个触发器由一个表达式构成,它定义了监控项所采起的数据的一个阈值
(4)一旦某次采集的数据超出了此触发器定义的阈值,触发器状态将会转换为“Problem”;而当采起的数据再次回归至合理范 围内时,其状态将从新返回到“OK”
基本的触发器表达式格式以下所示
{<server>:<key>.<function>(<parameter>)}<operator><constant>
server:主机名称;
key:主机上关系的相应监控项的key;
function:评估采集到的数据是否在合理范围内时所使用的函数,其评估过程能够根据采起的数据、当前时间及其它因素进行;
目前,触发器所支持的函数有avg、count、change、date、dayofweek、delta、diff、iregexp、last、max、min、nodata、 now、sum等
parameter:函数参数;大多数数值函数能够接受秒数为其参数,而若是在数值参数以前使用“#”作为前缀,则表示为最近几回的取值,如sum(300)表示300秒内全部取值之和,而sum(#10)则表示最近10次 取值之和;
此外,avg、count、last、min和max还支持使用第二个参数,用于完成时间限定;例如,max(1h,7d)将返回一周以前的最大值;
Operator:表达式所支持的运算付及其功能以下表所示:
在一个网络中,主机的可用性之间可能存在依赖关系:例如,当某网关主机不可用时,其背后的全部主机都将没法正常访问,若是全部主机都配置了触发器并定义了相关的通知功能,相关人员将会接收到许多告警信息,这既不利于快速定位问题,也会浪费资源,正肯定义的触发器依赖关系能够避免相似状况的发生,它将使 用通知机制仅发送最根本问题相关的告警
注意:目前zabbix不可以直接定义主机间的依赖关系,其依赖关系仅能经过触发器来定义
定义触发器,就须要写表达式及对应的项的值超过了指定标准就报告事件
生成后的表达式,以下所示,只不过添加的时候因为没有“>”因此是将“=”改成的“>”,严重级别定义,能够根据本身设置的值进行判断,这里定义为通常严重
在图形显示中,出现了触发器应该出现的线条,只要流量超过了这个线条,就会进行事件通知(须要定义报警动做)
示警媒介介绍:
在zabbix中,媒介指发送通知信息的通道,其一般有如下几种类型
(1)E-mail:电子邮件,即通知邮件的方式传送通知信息;
(2)SMS:手机短信,即经过链接至zabbix服务器GSM Modem发送通知;
(3)Jabber:jabber消息;Jabber是一个开放的、基于XML的协 议,可以实现基于Internet或LAN的即时通信服务;
(4)自定义的通知脚本:以上方式不能知足需求时,zabbix能够调 用位于其配置文件“AlertScriptsPath”变量所定义的脚本查找 目录中的脚原本完成通知功能;
定义一个示警媒介:
定义一个示警媒介:在管理 -->示警媒介类型 中建立一个类型
定义一个本地发送邮件的示警,这里的示警方式选择邮件,邮件服务器选择本机,发件人设置为zabbix@localhost
这里定义用户主要是定义收件人地址,不作其余说明;邮件接收者是zabbix用户,其通常会有邮箱地址
建立用户:
在 管理-->用户 中选择建立用户
在用户界面填写,用户名,主机组,密码,等相关设置,具体设置看我的喜爱
打开时间示警媒介页面,而后点击添加出现以下页面:定义类型为本身刚刚定义的localsend mail,收集人为root@local,时间7x24小时,接受各类信息的报警
设置完成示警,界面以下所示
许可权,这个界面能够不用管,由于用户的权限是应用与用户组的
二、4 动做
在配置好监控项和触发器以后,一旦正常工做中的某触发器状态发生改变,通常意味着有异常状况发生,此时一般须要 采起必定的动做(action),如告警或者执行远程命令等,并不是全部的触发器状态发生改变的场景都须要对其进行干预, 如转变为“OK”状态时,相应地,若是触发器的状态转变为 “Problem”,就须要告知全部关心其相关监控指标的人员了。
实现zabbix的通知功能,通常须要两个步骤:
(1)定义所需的“媒介(media)”:一般指发送信息的途径,如邮件、Jabber和SMS等;
(2)配置一个“动做(action)”:发送信息至某“媒介”;
动做由“条件”和“操做”组成,它的逻辑为当“条件”知足时,就执行相应的“操做”“发送通知”和“执行远程命令”是两个最基本的操做
在组态-->动做中建立一个动做
定义若是有事件发生:发送邮件的格式,也能够启用恢复信息,表示一旦故障解决再次发送消息
定义触发条件,触发器的名字是指定的触发器时,就知足条件,计算方式与/或 只要A/B/C三个条件同时知足,就触发动做,发送邮件
定义动做操做:定义将邮件发送给那个用户,添加动做操做以后以下所示,若是没有问题,就能够点添加了
添加完成以下所示:
模拟流量的方法可使用hping命令,持续ping上10秒左右流量便可突破触发值
[root@node1 ~]# hping 172.16.4.101 --faster
持续一会就会有事件发生,若是动做为正常,则表达邮件已经发送出去了
登陆zabbix服务器,使用mail命令就能够查看收到的邮件
[root@node1 ~]# mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/root": 2 messages 2 new >N 1zabbix@localhost.loc Tue May 2623:32 23/1046 "PROBLEM: inbound traffic warning" N 2 zabbix@localhost.loc Tue May 26 23:39 23/1046 "PROBLEM: inbound traffic warning" & 1 Message 1: From zabbix@localhost.localdomain Tue May 26 23:32:00 2015 Return-Path: <zabbix@localhost.localdomain> X-Original-To: root@localhost Delivered-To: root@localhost.localdomain From: <zabbix@localhost.localdomain> To: <root@localhost.localdomain> Date: Tue, 26 May 2015 23:31:59 +0800 Subject: PROBLEM: inbound traffic warning Content-Type: text/plain; charset="UTF-8" Status: R Trigger: inbound traffic warning Trigger status: PROBLEM Trigger severity: Average Trigger URL: Item values: 1. inbound traffice (node2:net.if.in[eth0,bytes]):422936 2. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN* 3. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN* Original event ID: 165&
示例:监控web服务器80端口状态,若是检测到端口关闭,则发送启动命令给web服务器,若是仍是没法启动则发送邮件报警。
被监控端须要开启运行服务器端执行远程命令
[root@node2 ~]# vim /etc/zabbix/zabbix_agentd.conf EnableRemoteCommands=1 #表示容许服务器端运行远程命令 LogRemoteCommands=1 #将运行的命令记录到日志中 [root@node2 ~]# service zabbix-agent restart
受权zabbix能够在全部主机运行全部命令
[root@node2 ~]# visudo zabbix ALL=(ALL) NOPASSWD:ALL #Defaults requiretty #默认开启,意思为全部sudo命令必须经过tty进行,而sudo是远程的因此须要关闭
定义一个新的监控项,监控http server
定义触发器
生成的表达式以下
定义完成以后,关闭node2主机的httpd服务,而后再zabbix监控的首页就能够看到相关的报警
建立一个动做
定义触发条件:
定义第一个触发操做为对被监控端发送命令
定义3~5步发送邮件
这个时候就定义好了
添加完成动做以下所示:
验证,关闭httpd服务,过上七八秒在查看状态就自动启动了
[root@node2 ~]# service httpd stop Stopping httpd: [ OK ] [root@node2 ~]# service httpd status httpd (pid 38884) is running...
在维护时间内的服务器发生故障,是不会报警的,定义方式以下
须要在报警条件中添加非在维护期间,不然仍是会报警,不过此项默认就已经添加了
相关内容:
(1)Zabbix2.4.5安装配置:http://ximenfeibing.blog.51cto.com/8809812/1670988
(2)Zabbix客户端监控+报警:http://ximenfeibing.blog.51cto.com/8809812/1670999
(3)Zabbix宏设置:http://ximenfeibing.blog.51cto.com/8809812/1671024
(4)使用zabbix监控web:http://ximenfeibing.blog.51cto.com/8809812/1671032
(4)Zabbix用户参数配置:http://ximenfeibing.blog.51cto.com/8809812/1671039
(6)Zabbix模版+网络发现:http://ximenfeibing.blog.51cto.com/8809812/1671041
(7)Zabbix分布式监控proxy实现:http://ximenfeibing.blog.51cto.com/8809812/1671048