一、Zabbix监控报警过程
在一次完整的Zabbix配置中,需要涉及到的术语有以下几项:
1.host groups:主机组,按生产需求将功能类别相近或相同的主机进行分组,便于管理。
2.host:主机
3.application:应用集,按需求将功能相近的监控项分类管理。
4.item:监控项,最终要的一项配置,监控的数据来源。
5.trigger:触发器,当定义将空项的阈值。当触发器触发后会产生事件(events)并被记录。
6.action:当监控项满足设定的触发条件时,定义Zabbix接下来的动作。在action中包括两类动作(conditions,operations),可以定义告警信道,如选择邮件或短信。
7.graph:图形,将采集的数据以图形的形式直观的表现出来。
二、监控项(item)添加示例
在上一篇Zabbix博客中我们已经成功搭建了一个简单的Zabbix监控架构,并添加了一台名为n1的agent主机,下面来演示如何添加监控项。
1.点击进入要添加监控项的主机选择监控项并创建
net.if.out[]为Zabbix内建的key,意思是指定网络接口接收的某项数据,具体可自定义。中括号内可以根据需要设置参数。net.if.out[]内可填入网卡名称和该网卡中的各指标。
在n1中输入ifconfig命令:
~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.11.136 netmask 255.255.255.0 broadcast 192.168.11.255 inet6 fe80::f591:67e7:4396:df5c prefixlen 64 scopeid 0x20<link> ether 00:0c:29:26:47:40 txqueuelen 1000 (Ethernet) RX packets 1320 bytes 88400 (86.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 249 bytes 23784 (23.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
※标颜色的项便是可填入的参数。以被动监控为例,监控项key的实质就是Zabbix-server端向Zabbix-agent端发送监控请求,Agent获取结果后再返回给Server端。可以将key理解为包含特定指令的函数。功能与zabbix_get命令类似,在Zabbix-server端输入以下命令也能得到想要的值。
~]# zabbix_get -s 192.168.11.136 -p 10050 -k "net.if.out[ens33,bytes]" 2622655
2.配置触发器(trigger)
触发器通常用来定义数据的不合理区间,在Zabbix3.0中,满足条件时状态为PROBLEM,反之状态为OK。
上面例子中每秒上传字节数设置为25,因为太小了看不出效果,我这里改成了350{test:net.if.out[ens33,bytes].last(#1)}>350
如上图,配置完成后就能很直观的看到每秒上传的字节数了,包括最大值、最小值、平均值等,还有触发器阈值。下面在n1主机上发送ping包,增加主机的上传字节数,观察效果。
~]# ping www.baidu.com
3.图形(graph)配置
配置图形是为了直观的观测被监控数据的变化情况,在本示例中的做默认配置。
4.配置动作(action)
Action有两个重要的配置项:条件(conditions)和操作(operations)
在条件(conditions)中定义触发器触发action的条件。默认是在系统处在非维护且触发器值为PROBLEM时激活Action。
在操作(operations)选项中用来定义当Action被激活后Zabbix实施的操作。操作类型有种:远程命令和发送消息,远程命令是指自动在Agent端运行指令或脚本,使系统先自动修复。发送消息是指使用某一通信信道将PROBLEM消息通知给指定用户。在设置时间内修复不成功后进行下一步骤的操作,并持续步进操作等级。