上一篇
如何在Zabbix中高效执行自定义监控命令
- 主机动态
- 2025-05-28
- 8
Zabbix可通过自定义监控项或触发器动作执行单独命令,在Agent配置中使用UserParameter定义脚本路径实现命令采集,或通过触发器配置远程命令/脚本实现告警后自动执行特定操作,适用于自动化监控与故障处理场景。
如何在Zabbix中执行独立命令?
在Zabbix监控系统中,执行独立命令是用户实现自定义监控或自动化操作的核心需求之一,通过灵活配置,用户可以直接在Zabbix中调用脚本、触发系统命令或完成特定任务,以下是详细操作指南,涵盖多种场景和注意事项。
准备工作
-
权限配置
- 确保Zabbix服务(zabbix-server/zabbix-agent)的运行用户(默认为zabbix)有权限执行目标命令。
- 如需执行特权命令(如systemctl),需通过visudo为zabbix用户添加免密权限: zabbix ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
- 测试权限是否生效: sudo -u zabbix sudo systemctl restart nginx
-
脚本或命令的安全性

- 避免直接在Zabbix中执行高风险命令(如rm -rf)。
- 建议将命令封装为脚本,并通过Zabbix调用脚本路径。
通过UserParameters自定义监控项执行命令
适用场景:定期执行命令并获取返回值(如检查服务状态、采集数据)。
-
修改Agent配置文件
- 编辑Zabbix Agent配置文件(如/etc/zabbix/zabbix_agentd.conf),添加自定义参数: UserParameter=nginx.status,systemctl status nginx | grep Active | awk '{print $2}'
- nginx.status:自定义监控项键值(Key)。
- 后续命令:通过管道获取Nginx服务的运行状态。
- 编辑Zabbix Agent配置文件(如/etc/zabbix/zabbix_agentd.conf),添加自定义参数: UserParameter=nginx.status,systemctl status nginx | grep Active | awk '{print $2}'
-
重启Agent服务

-
在Zabbix前端创建监控项
- 进入主机配置 → 监控项 → 创建监控项:
- 名称:Nginx服务状态
- 键值:nginx.status
- 更新间隔:根据需要设置(如30秒)
-
启用远程命令功能

- 在Zabbix Agent配置文件中设置: EnableRemoteCommands=1
- 重启Agent服务。
-
配置动作(Action)
- 进入Zabbix前端 → 配置 → 动作 → 创建动作:
- 名称:Auto Restart Nginx
- 条件:设置触发器(如“Nginx服务异常”)
- 操作 → 添加“远程命令”: sudo systemctl restart nginx
- 目标:选择需要执行命令的主机。
- 日志排查
- 查看Zabbix Agent日志(/var/log/zabbix/zabbix_agentd.log),定位权限或命令错误。
- 环境变量问题
- Zabbix Agent执行命令时可能缺少环境变量,建议在脚本中指定绝对路径或通过source加载环境。
- 限制命令范围
- 通过RestrictKey或AllowKey限制可执行的命令类型。
-
创建清理脚本
# /scripts/clean_logs.sh find /var/log -name "*.log" -mtime +7 -exec rm -f {} ;- 赋予执行权限:chmod +x /scripts/clean_logs.sh
-
配置Zabbix触发器与动作
- 触发器条件:{Host:vfs.fs.size[/,pused].last()}>90
- 动作中的远程命令: /scripts/clean_logs.sh
- Zabbix官方文档:https://www.zabbix.com/documentation
- Linux权限管理:https://man7.org/linux/man-pages/man5/sudoers.5.html
安全性和调试建议
实战案例
场景:当磁盘使用率超过90%时,自动清理日志文件。
引用说明
通过以上步骤,用户可以在Zabbix中安全、高效地执行独立命令,满足自定义监控与自动化运维需求。
- 进入Zabbix前端 → 配置 → 动作 → 创建动作:
通过远程命令(Remote Commands)触发操作
适用场景:当触发器条件满足时自动执行命令(如重启服务、发送告警后修复)。
- 进入主机配置 → 监控项 → 创建监控项: