「Zabbix」- 监控项(Items) @20210403
内容简介
在很多情况下,我们需要更加复杂的监控方式、监控指标,这时候就需要自定义监控项。
本文件简单介绍了在Zabbix中有关监控项(Item)添加及监控项管理相关内容。
什么是监控项?
监控项是要获取的指标。由要获取的数据、获取频率、数据类型保存时间等等组成。检测周期影响了数据获取,可影响Zabbix Server的频率。
如何添加监控项?
监控项可以在「Host」中添加,也可以在「Template」中添加。在「Template」中添加的监控项可以复用。
# 第一步、添加监控项
这里演示在Template中添加。依次找到「Configuration - Templates - Items - Create Item」后,进入监控项的创建页面:
**# Name** - 监控项的名称。 **# Key **- 监控项的值。(1)可以自行选择,但是“自定义KEY”(后面介绍)需要手动填入。(2)然后,将''[<xxx>]''中的值修改为特定参数(参考「[[https://www.zabbix.com/documentation/4.2/manual/config/items/itemtypes|4.2/Item types]]」手册)。比如要统计内存总大小,在选择''vm.memory.size[<mode>]''之后,修改为''vm.memory.size[total]''既可(当然除了''total''还有其他的参数可选择)。
在页面中的其他输入框,如字面含义一样,详细可以参考「4.2/2 Items」文档。下面只简单列举一部分:
Name | 监控项名称 |
Type | 监控项的类型 |
Key | 该监控项对应的KEY名 |
Type of information | 所获取到的信息的类型 |
Update interval | 数据的获取频率 |
Custom intervals | 自定义频率,可以重定义Update interval的规则 |
关于「KEY」格式
(1)在页面中的KEY字段,它的值可以有KEY或者KEY[PARAM]两种格式,即“有参数”与“无参数”两种。
(2)其中KEY的合法命名使用正则表示为:[a-zA-z0-9-_.]
(3)其中PARAM为参数,格式可以是“引号字符串”,“非引号字符串”,“数组”这三种。“引号字符串”形如:vm.memory.size["total"];“非引号字符串”形如:vm.memory.size[total],如果有引号则要使用反斜线转义,不能使用逗号及方括号;“数组”形如:icmping[,,200,,500],多个参数之间使用逗号分隔,没有可不填写,表示采用默认值。
# 第二步、检查监控项
在配置结束之后,可以使用zabbix_get命令进行验证。这个验证是检查KEY配置是否正确。
执行zabbix_get --host 'agent_ip_addr' -k vm.memory.size[total]命令,如果由正常的返回值,则表示KEY的配置是正常的,也表示Zabbix Server能够访问Zabbix Agent来或者值。
注意,命令zabbix_get命只能用于验证Type为Zabbix agent的监控项,不能用于Simple Check、JMX等等这些类型的监控项。
自定义监控项
由Zabbix自带的监控项可能并不能满足我们的需求,我们需要自定义监控项。
# 如何自定义监控项?
自定义的“监控项”目前只支持Zabbix agent类型,也就是说需要修改Zabbix Agent服务的/etc/zabbix/zabbix_agentd.conf配置文件(或者在/etc/zabbix/zabbix_agentd.d/中自定义配置,然后在zabbix_agentd.conf中引入该配置)。
配置文件格式如下:
# 不传递参数 UserParameter=key,command # 传递参数 UserParameter=key[*],command $1 $2 $3... # 例如,如下自定义监控项 UserParameter=redis.standalone.info[*],redis-cli -h $1 -p $2 -a $3 INFO # 在使用该KEY时 redis.standalone.info[127.0.0.1,6379,123456]
# 监控项的注意事项
(1)自定义参数中的KEY必须是唯一的,否则在启动Zabbix Agent时会出现错误,在日志中会显示错误消息。
(2)传递给KEY的参数,会被依次传递给命令。第一个参数对应命令中的$1,第二个参数对应命令中的$2,以此类推。
(3)如果参数中需要使用某些特殊字符(例如*、&、"等等,这些符号会造成命令注入),需要开启UnsafeUserParameters=1设置。
(4)如果命令中要使用$符号,应该进行“双写”转义。例如:awk '{print $$1}'
(5)返回值类型可以是字符、文本等等,如果返回的是无效值,则会显示ZBX_NOTSUPPORTED消息。
# 检查新的监控项
依旧可以使用zabbix_get命令查看配置的KEY是否正确,或者使用zabbix_agentd -p命令查看所有支持的监控项。
监控项类型
# 不同的类型
在Zabbix中,它支持多种类型的监控项,比如Zabbix agent,Simple check等等,还可以对日志、数据库进行监控。
监控项类型不同代表着:数据收集方式不同、数据处理方式不同。
而在现实场景中,具体使用那种类型视情况而定。这里不再列举,详细参考「4.2/2 Item types」手册。
# 常用类型
下面列举了某些监控项类型及作用:
类型 | 作用 |
---|---|
Zabbix internal | 对自身进行检测,自身监控。 |
Zabbix agent | 最常用的模式,被动获取数据。 |
Zabbix agent (active) | 主动模式。日志的监控需要使用该模式。 |
Simple check | 简单检查,在没有运行Zabbix Agent时,检查远程主机。 |
Zabbix aggregate | 聚合操作,将一定时间内的数据进行聚合(有平均、最大、最小等等)。 |
Calculated | 可以根据多个监控项进行计算,由Zabbix Server进行。并且可自定义KEY名,然后被其他监控项引用。 |
Dependent items | 该类性的监控项,依赖于某个监控项,可以从其他监控项的结果中获取值。 |
这里不再一一列举,详细可以参考「4.2/2 Item types」手册。
关于「Dependent items」类型
-「zabbix UserParameter return 2 or more values」
该类型值得一提。可以创建一个监控项,该监控项一次请求获取很多值(比如REDIS INFO获取信息)。然后,其他多个监控项都依赖于该监控项,从前面的监控项的结果中过滤值。这样在数据量不变的情况下,可以减少网络压力,同时也降低了zabbix_agentd.conf配置文件的复杂度,但是可能增加了模板或者主机的配置。
维护时间
可以设置维护时间(Configuration - Maintance)。还要配置Action(Configuration - Actions - Action),在维护时间内不告警。
事件确认
事件发生后,可以手动进行确认。
数据导入与配置导出
配置文件可以从Zabbix中导出,也可以导入到Zabbix中。导入在页面右上角,导出在页面最下面。