1、Item解析
1.1、item分析
虽然我们可以通过zabbix_agentd和zabbix_get的方式来进行测试,但是它们是如何在zabbix中整合,我们就需要在现有的web界面中进行梳理一下
1.1.1、点击菜单Configuration,点击Hosts,点击node右侧的"item",效果如下

1.1.2、点击监控项

1.1.3、术语翻译
Wizard # 向导 Name 监控项名称
Triggers # 触发器
Key # 监控项的key名
Interval # 监控间隔
History # 历史数据保留时长
Trends # 趋势数据保留时长
Type # item的所属类型
Application # 该监控项所属的应用
Status # 当前状态
tags # 唯一标识 info 备注信息
1.1.4、分析系统内置监控item
随便打开一个监控条目,我们就以截图中的"system.swap.size[,total]"监控项为例,点击其对应的名字"Total swap space",效果如下

结果显示:最上面的信息表明该条item的特性,是自建的还是从哪里集成来的还是自发现的。
1.1.5、属性解析
【英语版才需要解析,中文版直接见字明意】
携带红色"*"的信息属于不可缺少的配置属性,在不同类型中的item必备属性是有稍许不同的。但是一致的属性主要有一下几种:
Name item【名称】 # 也就是item条目列表中Name显示的内容
Key 【键值】 # Key名称是最核心的配置项,用于给zabbix_get命令来使用
Update interval【数据更新的间隔】 # 获取最新数据的间隔,虽然是必选项,如果不设置表示使用默认值。
History storage period 【历史数据保留期】 # 虽然是必选项,如果不设置表示使用默认值。
Trend storage period 【趋势存储时间】 # 虽然是必选项,如果不设置表示使用默认值。
下面三种是根据不同的业务场景所需要特指的属性
Show value # 表示对获取到的数据应该如何处理,我们的这张图中没有
Master item # 表示从其他item中继承的item信息
Formula # 表示自定义一个表达式,对获取的信息进行二次计算分析等
Host interface # 设定一个主机接口,从对应主机中调用指定的key名称的信息
注意:对于Show value来说,一般有如下几种属性
As is – 数据不作处理,默认属性,
Delta (speed per second) – 数据改变的速率
Delta (simple change) – 数据改变的差值
1.1.6、手动获取监控项的数据分析数据
# zabbix_get -s 192.168.10.25 -p 10050 -k "system.swap.size[,total]"
1961881600
# echo $((1961881600/1024/1024))
1870
# zabbix_get -s 192.168.10.25 -p 10050 -k "system.swap.size[,total]"
1961881600
# ssh root@192.168.10.25 "free -m"
root@192.168.10.25's password:
total used free shared buff/cache available
Mem: 1951 364 1280 1 464 1587
Swap: 1870 0 1870
1.2、zabbix-agent自定义监控项
1.2.1、简介
在上面的配置中,最核心的就是Key的确定了,我们这里输入的key名称必须是从被监控节点处设定好的监控item名称,而且可以被zabbix_agentd自动获取,可以被zabbix_get命令执行。所以我们就需要知道这个key是如何设置的。
以"agent.ping"为例,这个key就是我们在安装zabbix-agent软件的时候,自动生效的,如果我们想要自定义一些监控项的话,我们需要编写一个可执行文件,然后加载到被监控端的zabbix_agentd.conf文件中
1.2.2、zabbix_agentd.conf 自定义监控项配置
# vi /etc/zabbix/zabbix_agentd.conf
...
####### USER-DEFINED MONITORED PARAMETERS #######
### Option: UnsafeUserParameters
# Allow all characters to be passed in arguments to user-defined parameters.
# The following characters are not allowed:
# \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
# Additionally, newline characters are not allowed.
# 0 - do not allow
# 1 - allow
#
# Mandatory: no
# Range: 0-1
# Default:
# UnsafeUserParameters=0
### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=<key>,<shell command>
# See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
# UserParameter=
### Option: UserParameterDir
# Directory to execute UserParameter commands from. Only one entry is allowed.
# When executing UserParameter commands the agent will change the working directory to the one
# specified in the UserParameterDir option.
# This way UserParameter commands can be specified using the relative ./ prefix.
#
# Mandatory: no
# Default:
# UserParameterDir=
...
配置解析:
从这里看,我们的监控项条目可以通过两种方式来设置,外置文件和UserParameter
外置文件里面的内容也是UserParameter格式的配置,格式如下:UserParameter=<key>,<shell command>;
1.2.3、UserParameter配置示例
UserParameter=mysql.ping[*], mysqladmin -h"$1"-P"$2" ping
2、创建Item实战
2.1、需求
系统监控需求 - 监控当前系统中性能质量,比如cpu的1分钟、5分钟、15分钟的平均负载
2.2、需求分析
2.2.1、linux的系统命令top来获取这三个需求的值
# uptime
02:24:52 up 10:23, 2 users, load average: 0.22, 0.16, 0.10
注意:
虽然可以通过top + grep + awk 的方式来获取响应的值,但是top命令的效果默认情况下有后遗症,不适合作为监控项命令使用
2.2.2、/etc/zabbix/zabbix_agentd.d/目录下,创建以.conf为后缀的普通文件
根据zabbix_agent.conf中的Include配置,我们需要进入到/etc/zabbix/zabbix_agentd.d/目录下,创建以.conf为后缀的普通文件
2.3、命令获取具体条目
# uptime | awk -F ': |, ' '{print $4}'
0.14
# uptime | awk -F ': |, ' '{print $5}'
0.14
# uptime | awk -F ': |, ' '{print $6}'
0.09
2.4、创建item,我们这里主要是用于CPU的系统负载监控,所以名称为cpu_load.conf
cat << 'CAT_END' >/etc/zabbix/zabbix_agentd.d/cpu_load.conf
UserParameter=cpu.load1,uptime | awk -F ": |, " '{print $4}'
UserParameter=cpu.load5,uptime | awk -F ": |, " '{print $5}'
UserParameter=cpu.load15,uptime | awk -F ": |, " '{print $6}'
CAT_END
2.5、重启zabbix agent服务
systemctl restart zabbix-agent.service
2.6、在zabbix server 使用zabbix_get命令检测效果
# zabbix_get -s 192.168.10.25 -p 10050 -k 'cpu.load1'
0.14
# zabbix_get -s 192.168.10.25 -p 10050 -k 'cpu.load5'
0.14
# zabbix_get -s 192.168.10.25 -p 10050 -k 'cpu.load15'
0.09
2.7、关联item
2.7.1、选择对应的主机,进入监控项

2.7.2、创建监控项

2.7.3、配置监控项

2.7.4、配置属性解析
Name node: cpu.load1 # 自定义名字,名字需要起有意义
Type: Zabbix agent # 选择监控的类型,我们使用默认是Zabbix agent
key: cpu.load1 # 手填我们之前配置好的key名称,select只能选择zabbix默认监控项
Host interface: # 192.168.8.14:10050
Type of information: # 因为我们获取的值是有小数点的,所以我们选择浮点型
Units: # B 输入单位,可以不写
Use custom multiplier: # 该项一般不用,但是在我们需要将展示的图形数据加倍的时候,在此处填写加大的倍数
Update interval (in sec): 60 # 设置监控项的刷新时间,生产中一般不要低于60s
Custom intervals: # 创建自定义监控时间的间隔,我们暂时不用
History storage period(in days): 7 # 历史数据存储的周期,单位 天,默认是90天
Trend storage period(in days):365 # 趋势图数据存储的周期,单位 天,生产上一般是3年
Description: # 描述,该项必要时可以写
2.7.5、测试是否正常

2.7.6、点击增加

2.7.7、查询运行状态

2.7.8、查询自定义监控项的图表

2.7.9、点击【图形】获取查看数据采集的效果图

2.7.10、克隆剩下2个自定义监控项
到现在为止,我们就完成了一个item的完整操作,那么接下来,我们可以以同样的方式增加另外两个cpu.load选项值,但是步骤太繁琐了,而zabbix为每一个现成的item选项增加了一个"clone"选项,我们可以重用部分的配置,大大提高操作效率。

2.7.11、克隆完整的效果

3、总结
创建item
- 在被监控端编写自定义item,生效后进行测试
关联item
- 在指定的Host配置界面中,为指定的host增加item属性
- 配置item属性的时候,最好使用手工编写,因为自定义的item无法通过select选择
- 配置完毕item后,一定要确认能够正常获取数据