zabbix-Item解析、Item实践
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后,一定要确认能够正常获取数据