上一篇 下一篇 分享链接 返回 返回顶部

Zabbix自定义监控项编写实战指南

发布人: 发布时间:3小时前 阅读量:0

前言

Zabbix作为主流开源监控平台,默认模板可覆盖常见指标,但在IDC运维场景中常需采集业务自定义数据(如应用层响应时间、特定进程状态或磁盘I/O排队数)。通过编写自定义监控项,运维团队可精准获取所需指标,避免依赖第三方工具。本文以监控主机上某个特定进程的存活状态为例,演示完整流程。

第一步:编写监控脚本

自定义监控项基于Zabbix Agent执行外部命令或脚本。推荐使用Shell或Python编写,确保返回结果符合Zabbix格式(仅输出数值或字符串)。

示例脚本:check_process.sh,用于检测Nginx进程是否存在,存在返回1,否则返回0。

#!/bin/bash
COUNT=$(ps -C nginx --no-headers | wc -l)
if [ $COUNT -ge 1 ]; then
    echo "1"
else
    echo "0"
fi

将该脚本放置于Agent可执行目录(如/etc/zabbix/scripts/),并赋予执行权限:chmod +x /etc/zabbix/scripts/check_process.sh

第二步:配置UserParameter

编辑Zabbix Agent配置文件(通常位于/etc/zabbix/zabbix_agentd.confinclude目录),新增条目:

UserParameter=process.nginx.status,/etc/zabbix/scripts/check_process.sh

参数process.nginx.status为监控项key,后续在Zabbix Server页面添加监控项时使用。重启Agent服务:systemctl restart zabbix-agent

第三步:在Zabbix Server上测试

使用zabbix_get命令验证Agent能否返回正确值(需在Zabbix Server或Proxy主机执行):

zabbix_get -s 192.168.1.100 -k process.nginx.status

如返回1则表示配置成功。若返回ZBX_NOTSUPPORTED,请检查脚本路径、权限或Zabbix Agent日志。

第四步:创建监控项并关联模板

登录Zabbix Web前端,进入“配置”→“主机”,选择目标主机,点击“监控项”→“创建监控项”:

  • 名称:Nginx进程存活状态
  • 类型:Zabbix Agent(主动式或被动式取决于环境)
  • 键值process.nginx.status
  • 信息类型:数字(无符号整数)
  • 更新间隔:30s

保存后,等待第一个数据采集。建议将自定义监控项加入自定义模板,便于批量应用相同配置。

第五步:配置触发器与告警

创建触发器,当Nginx进程不存活(即值为0)时触发告警:

  • 名称:Nginx进程宕机
  • 严重性:严重
  • 表达式{模板名称:process.nginx.status.last()}=0

保存后,可在“监测”→“问题”中看到告警。结合动作发送邮件、钉钉或短信通知,实现自动化响应。

进阶扩展:带参数自定义监控项

若需监控多个进程,可将进程名作为参数传入。修改UserParameter:

UserParameter=process.check[*],/etc/zabbix/scripts/check_process.sh $1

脚本内通过$1接收参数。监控项键值可写为process.check[nginx]process.check[mysql],一个规则即可覆盖多种进程。

总结

通过以上步骤,Zabbix自定义监控项可快速适配IDC运维中的特殊需求。关键在于保证脚本输出符合预期且Agent配置正确。实际生产环境中,建议对自定义脚本添加入参校验与错误处理(如返回非零值),避免监控中断。灵活运用UserParameter与宏变量,可大幅降低重复配置成本。

目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com