这篇文章将介绍模板中的监控项,包括监控项的配置、Zabbix内置的监控项键值和自定义监控项。

监控项是模板中对于被监控主机的指定对象进行信息收集的配置,只有在模板中配置了监控项,这个模板才能收集到被监控主机的信息。所以监控项是模板中的最重要的项目,是获取监控数据的基础。

1、监控项的配置

点击具体模板中的监控项链接,即可看到该模板中所定义的全部监控项,点击具体监控项的链接,即可修改该监控项。这里查看模板Template OS Linux中的监控项:

zabbix监控项的JavaScript zabbix中什么是监控项_文件系统

点击具体的监控项可修改该监控项;点击“创建监控项”按钮,可以创建新的监控项,创建监控项页面如下:

zabbix监控项的JavaScript zabbix中什么是监控项_自定义_02

  • 名称:自定义的监控项名称
  • 类型:从哪里获得监控项的数据
  • 键值:非常重要,Zabbix Server通过键值收集对应的监控信息;Zabbix内置了非常多的键值,可以满足对主机各方面的监控
  • 信息类型:键值的返回值类型
  • 单位:键值返回值的单位
  • 更新间隔:定义Zabbix间隔多长时间采集一次数据
  • 历史数据保留时长:历史数据保留多长的时间
  • 趋势存储时间:监控数据的趋势存储的时长
  • 新的应用集和应用集:可以为该监控项创建一个新的应用集,也可以加入现有的应用集中

Zabbix内置了非常多的监控键值,点击键值后的“选择”按钮,弹出键值选择界面:

zabbix监控项的JavaScript zabbix中什么是监控项_键值_03

Zabbix标注了键值及键值的功能;在红框处下拉还可以切换不同监控数据来源支持的键值。

2、一些常用的内置键值

Zabbix内置了非常多的键值以供我们获取监控数据,这里仅介绍一些常用的键值。

获取操作系统信息


system.boottime   # 系统启动的时间点
system.uptime     # 系统运行时长
system.localtime  # 系统时间
system.hostname   # 主机名
system.users.num  # 当前登录系统的用户数量
system.uname      # 获取系统uname信息
kernel.maxfiles   # 系统可打开的最大文件数
kernel.maxproc    # 系统支持的最大进程数

获取网络接口信息

# 网络接口入方向的流量
net.if.in[if,<mode>]
# if:网卡名称,可使用LLD中的宏变量{#IFNAME}
# mode:可用的值有 bytes,字节数(默认);packets,包数量;errors,错误数量;dropped,丢包数量

# 网络接口出方向的流量,参数同net.if.in
net.if.out[if,<mode>]

# 网络接口总流量,参数同net.if.in
net.if.total[if,<mode>]

端口检测

# 检测端口是否开启
net.tcp.listen[port]
# 返回值:0 - 未开启;1 - 开启

# 检测是否可以连接到指定端口
net.tcp.port[<ip>,port]
# ip:IP地址,默认为127.0.0.1
# 返回值:0 - 无法连接;1 - 成功连接

服务检测

# 检测服务是否开启,并且端口可用
net.tcp.service[service,<ip>,<port>]
# service:常用服务,SSH、NTP、LDAP、SMTP、FTP、HTTP、POP、NNTP、IMAP、HTTPS、telnet
# ip:默认为127.0.0.1
# port:默认为服务的标准端口号
# 返回值:0 - 服务位运行;1 - 服务正在运行

# 检测服务响应性能
net.tcp.service.perf[service,<ip>,<port>]
# 返回值:返回响应时间,如果为0表示服务未运行

获取处理器信息

system.cpu.switches            # CPU的进程上下文切换
system.cpu.intr                # CPU中断数量
system.cpu.load                # CPU的负载值,进程队列的平均长度
system.cpu.load[percpu,avg1]   # CPU每分钟的负载值,按照核数做平均值
system.cpu.load[percpu,avg5]   # CPU每5分钟的负载值,按照核数做平均值
system.cpu.load[percpu,avg15]  # CPU每15分钟的负载值,按照核数做平均值
system.cpu.util                # CPU的使用率
system.cpu.util[,idle]         # CPU的空闲时间,百分比形式
system.cpu.util[,user]         # CPU的用户态运行时间,百分比形式
system.cpu.util[,system]       # CPU的系统态运行时间,百分比形式
system.cpu.util[,iowait]       # CPU的io等待时间,百分比形式
system.cpu.util[,interrupt]    # CPU的中断时间,百分比形式
system.cpu.util[,nice]         # CPU的nice时间,百分比形式
system.cpu.util[,softirq]      # CPU的软中断时间,百分比形式

# CPU的负载值可以使用uptime命令查看,但是Zabbix所获得到CPU负载值与uptime所显示的结果并不同,它的结果是uptime所显示的负载值除以主机的CPU核数

获取内存信息

system.swap.size           # 系统中swap分区的使用情况
system.swap.size[,total]   # swap分区的总容量
system.swap.size[,free]    # swap分区尚可使用的容量
system.swap.size[,pfree]   # swap分区尚可使用的容量,百分比形式
vm.memory.size             # 获取物理内存的使用情况
vm.memory.size[total]      # 物理内存总量
vm.memory.size[available]  # 物理内存目前可用的容量

获取文件系统信息

vfs.fs.inode                   # 文件系统中的inode的使用情况
vfs.fs.inode[partition,pfree]  # 文件系统的指定分区中尚未使用的inode数量,百分比形式
vfs.fs.size                    # 文件系统中的使用容量详情
vfs.fs.size[partition,free]    # 文件系统中指定分区(目录)中未使用的容量数值
vfs.fs.size[partition,pfree]   # 文件系统中指定分区(目录)中未使用的容量,百分比形式
vfs.fs.size[partition,used]    # 文件系统中指定分区(目录)中已使用的容量
vfs.fs.size[partition,total]   # 文件系统中指定分区(目录)的总容量

获取安全信息

vfs.file.cksum  # 获取指定文件的校验和

获取Zabbix Agent信息

agent.ping      # 获取Zabbix Agent的在线状态
agent.hostname  # 获取Zabbix Agent配置文件中的Hostname值
agent.version   # 获取Zabbix Agent的版本号

3、自定义监控键值

当需要监控的项目在Zabbix中不存在内置键值时,此时可以通过编写Zabbix用户参数的方式来自定义一个监控键值。自定义监控项通过Zabbix Agent配置文件中的Userparameter指令实现。

要使用Userparameter指令,必须在Zabbix Agent中修改如下配置的值:

# UnsafeUserParameters=0

取消该行的注释并将值改为1。

Userparameter指令的语法如下:

# 简单语法
UserParameter=key,command
# key:自定义的键值名称
# command:执行的命令或脚本

# 使key接受参数
UserParameter=key[*],command
# 此时可以通过类似key[xxx]的方式传递参数给key,*代表的是传递的参数,可以在后面的command中通过$1进行调用

可以将UserParameter指令写入单独的一个.conf文件中以供Zabbix Agent引用。

在设置好自定义键值后,就可以在Zabbix Web中通过自定义的键值名称进行调用了。