Zabbix Agent 自定义脚本监控需开启 UnsafeUserParameters=1,配置 UserParameter 键值对,确保脚本可执行且属主为 zabbix,本地测试 zabbix_agentd -t 验证,再在 Web 端创建对应监控项即可完成上报。

服务器监控配置自定义脚本上报数据,核心是让 Zabbix Agent 能安全执行你的脚本,并把结果准确传给 Server。整个过程不依赖外部调度,全由 Zabbix 自动触发采集,关键在 Agent 端配置和脚本权限控制。
启用 UnsafeUserParameters 并绑定脚本
Zabbix 默认禁用带参数的自定义命令,必须显式开启。编辑 /etc/zabbix/zabbix_agentd.conf(或实际路径如 /usr/local/etc/zabbix_agentd.conf):
- 找到 UnsafeUserParameters=0,去掉注释符 #,改为 UnsafeUserParameters=1
- 在文件末尾新增一行,格式为:UserParameter=key[*],/path/to/script.sh $1 $2
- 其中 key 是监控项唯一标识(如 mysql.slave.delay),[*] 表示支持传参,$1 $2 对应脚本内 $1、$2 变量
编写可执行且权限正确的脚本
脚本输出必须是纯文本(数字或字符串),且 Zabbix Agent 进程用户(通常是 zabbix)必须能运行它:
- 脚本开头加 #!/bin/bash,结尾用 echo 输出单一值(如 echo 32 或 echo "OK")
- 保存后执行:chown zabbix:zabbix /path/to/script.sh,再执行 chmod 755 /path/to/script.sh
- 避免硬编码敏感信息;如需访问数据库,用专用只读账号,密码存配置文件并限制读权限(chmod 600)
验证脚本能否被 Agent 正确调用
别急着进 Web 页面,先在被监控服务器本地测试:
- 运行:zabbix_agentd -t key[param1,param2](例如 zabbix_agentd -t login.user)
- 看到 value=<返回值> 且无报错,说明 Agent 已识别该 key 并成功执行脚本
- 若提示 Unsupported item key,检查配置是否生效(重启 agent)、key 名是否拼写一致、脚本路径是否存在
在 Zabbix Web 中创建监控项并关联主机
Agent 端确认无误后,才进入服务端配置:
- 进入 Web → 配置 → 主机 → 选择目标主机 → 监控项 → 创建监控项
- 名称填业务含义(如“MySQL 主从延迟秒数”),键值严格填写刚才定义的 key(如 mysql.slave.delay)
- 类型选“Zabbix 客户端”,更新间隔按需设(如 30s),历史数据保留建议至少 7 天
- 保存后,等一两个周期,到“监测中 → 最新数据”里搜索该监控项,能看到实时数值即表示上报成功


















