首页
/ Zabbix Agent自定义监控项配置详解

Zabbix Agent自定义监控项配置详解

2025-07-08 03:59:30作者:俞予舒Fleming

什么是Zabbix Agent自定义监控项

Zabbix Agent的自定义监控项(UserParameter)功能允许管理员扩展Zabbix的监控能力,通过自定义命令或脚本获取系统特定的监控数据。这种机制极大地增强了Zabbix的灵活性,使其能够监控几乎任何系统指标。

自定义监控项的基本语法

自定义监控项的基本语法格式为:

UserParameter=<key>,<command>

其中:

  • <key>是监控项的键名,在Zabbix服务器上配置监控项时需要引用
  • <command>是实际执行的命令或脚本

常见自定义监控项示例解析

1. 模拟系统用户数监控

UserParameter=system.test,who | wc -l

这个示例模拟了内置的system.users.num参数,使用who命令列出当前登录用户,然后通过wc -l统计行数。

应用场景:当需要自定义用户数统计逻辑时,可以修改此命令。

2. 目录大小监控

UserParameter=vfs.dir.size[*],dir="$1"; du -s -B 1 "${dir:-/tmp}" | cut -f1

这个监控项可以获取指定目录的大小:

  • 支持参数传递,如vfs.dir.size[/var/log]
  • 默认监控/tmp目录
  • du -s -B 1以字节为单位显示总大小
  • cut -f1提取第一列(大小值)

注意事项:确保Zabbix Agent有权限访问目标目录。

3. 进程CPU使用率监控

UserParameter=proc.cpu[*],proc="$1"; ps -o pcpu= -C "${proc:-zabbix_agentd}" | awk '{sum += $$1} END {print sum}'

这个监控项可以:

  • 监控指定进程名的所有进程的CPU使用率总和
  • 默认监控zabbix_agentd进程
  • 使用ps -o pcpu=获取CPU百分比
  • 通过awk累加所有同名进程的CPU使用率

典型应用:监控关键服务的CPU资源占用情况。

4. 邮件队列监控

UserParameter=unix_mail.queue,mailq | grep -v "Mail queue is empty" | grep -c '^[0-9A-Z]'

这个监控项:

  • 使用mailq命令获取邮件队列
  • 过滤掉空队列提示
  • 统计实际待处理邮件数量

适用系统:主要适用于使用传统sendmail/postfix等邮件系统的服务器。

5. 分区发现(自动发现规则)

Linux版本:

UserParameter=vfs.partitions.discovery.linux,for partition in $(awk 'NR > 2 {print $4}' /proc/partitions); do partitionlist="$partitionlist,"'{"{#PARTITION}":"'$partition'"}'; done; echo '{"data":['${partitionlist#,}']}'

Solaris版本:

UserParameter=vfs.partitions.discovery.solaris,/somewhere/solaris_partitions.sh

这些是自动发现(Low-Level Discovery)规则的示例:

  • Linux版本直接从/proc/partitions读取分区信息
  • Solaris版本使用iostat命令获取分区信息
  • 输出符合Zabbix自动发现要求的JSON格式

重要提示:自动发现规则需要配合Zabbix的发现功能使用,可以自动创建监控项、触发器等。

自定义监控项最佳实践

  1. 参数化设计:尽可能使用[*]语法使监控项可配置,如vfs.dir.size[*]

  2. 默认值处理:使用${param:-default}语法提供合理的默认值

  3. 性能考虑:复杂的监控脚本应考虑执行效率,避免影响系统性能

  4. 错误处理:脚本中应包含适当的错误处理逻辑

  5. 权限管理:确保Zabbix Agent有执行命令和访问数据的权限

  6. 日志记录:对于复杂脚本,建议添加适当的日志记录功能

调试自定义监控项

可以使用以下命令测试自定义监控项:

zabbix_agentd -t "userparameter.key"

对于带参数的监控项:

zabbix_agentd -t "userparameter.key[param]"

总结

Zabbix Agent的自定义监控项功能为系统监控提供了极大的灵活性。通过合理设计自定义监控项,可以监控几乎任何系统指标。本文介绍了几种典型的自定义监控项示例,涵盖了从简单的命令执行到复杂的自动发现等各种场景。在实际应用中,应根据具体需求和安全考虑,设计适当的监控项。