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后,一定要确认能够正常获取数据

 

posted @ 2023-05-26 11:09  小粉优化大师  阅读(199)  评论(0编辑  收藏  举报