1. Zabbix及监控项添加简介
Zabbix是一个开源的网络监控工具,可以监视网络设备和服务器的性能,检测并记录任何故障,并在事件发生时发送邮件或短信通知。Zabbix非常灵活、通用,可以适应各种应用场景,因此在全球范围受到广泛欢迎。
利用Zabbix web,可以轻松地创建所需的Zabbix监控项,一般来说,创建监控项可以按如下步骤进行:
- 创建主机群组
- 创建主机、选择主机群组
- 创建监控项
创建监控项时,可以选择不同类型,例如“Zabbix 客户端”,“Zabbix采集器”等。
“键值”是监控采集时真正使用的数据字段。点击“选择”,会展示Zabbix的标准检测器,可以选择自己需要的;也可以直接输入自己自定义的键值。
通过以上方法,能够简单轻松地为主机添加静态监控项。借助zabbix提供的模板机制,也能方便地为同类主机批量添加监控项。
2. 动态添加监控项的必要性及方法
然而,在实际应用过程中,当所需的监控项数量较多时,手动通过web去添加和维护这些监控项可能会变得非常繁琐和费时。此外,静态监控项不能自动适应应用程序或系统的变化,因此需要手动更新和修改监控项。
比如某个系统监控的主机需要探测多个客户指定的地址,以获取链路连通性;而每台主机需要探测的地址不同,且随时可能进行增删。在这种情况下,简单通过模板的方式,无法满足需要,此时我们需要动态创建监控项。
在Zabbix上,一般来说,有两种方法可以动态创建监控项。一种方法是,上层应用直接调用zabbix API,按照客户需求为每个主机自动创建和删除监控项。这种方式简单直接,也比较灵活,就是需要一定开发量。
下面,本文介绍另外一种方法,即利用自动发现规则,来实现监控项的动态创建。
3. 利用自动发现规则动态创建监控项
首先我们创建一个主机群组 test_group,并在此群组下创建主机test_host,主机链接到模板 test_template。
在模板 test_template中,我们添加自动发现规则:
示例:名称: 自动发现规则
类型:为了演示方便,这里选择了zabbix采集器作为监控项类型,您可以根据自身需要进行选择。
键值:test.autodis
资源周期不足:代表的是该监控项无法发现了,监控数据需要保存的时长。
点击“添加”按钮
创建好该自动发现规则后,我们进一步添加监控项原型:
【注】: 键值里头{}中的字母一定都要大写
在server端web配置好以上规则后,在client端 通过zabbix_sender命令(因为发现规则的监控项类型为zabbix采集器),即可自动创建监控项。如以下命令可实现创建2个监控项:test.item[float_item1]和test.item[float_item2]:
zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -k "test.autodis" -o "[{"{#CTCC_ITEM_FLOAT}":"float_item1"}, {"{#CTCC_ITEM_FLOAT}":"float_item2"}]
创建好的监控项如下所示:
创建监控项后,可再通过zabbix_sender命令(因为监控项原型里类型为zabbix采集器),为新创建的监控项上报监控数据。
需注意的是,第一次上报有可能失败。这是因为刚刚添加好的监控项,需要时间来生效并同步到客户端。过一会儿再上报就可以成功了。
综上,采用该方法可以在上层应用不变的情况下,由监控设备自身决定要添加/删除哪些监控项。