zabbix远程执行shell脚本没有被触发执行

本文介绍了解决Zabbix远程执行脚本未真正运行的问题。通过排查发现,是因为sudoers配置文件中未注释掉requiretty参数。注释此参数后,远程执行功能恢复正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

zabbix远程执行脚本未执行

前言

今天处理一个zabbix收到磁盘容量不足的报警时,远程到agent执行脚本的问题。

跟着官方文档做完之后,发现在web页面中显示「远程命令已执行」,但是在agent服务器中查看时,实际上该脚本未被执行。

通过排查和测试所有步骤,最后发现其实是少注释一个参数导致。

解决

编辑sudoer文件,注释掉以下参数即可。

[root@test /root]#visudo 
……
#Defaults    requiretty
……
### Zabbix 中使用 Shell 脚本 #### 启用自定义监控功能 为了在Zabbix中利用Shell脚本执行特定的监控任务,在Zabbix Agent的配置文件(通常位于`/etc/zabbix/zabbix_agentd.conf`)里需要开启UserParameter这一选项来支持用户自定义键值。这允许管理员向Zabbix agent添加新的检查项目,从而可以调用外部命令脚本获取数据[^3]。 ```bash # 在zabbix_agentd.conf中加入如下行以启动自定义参数 UnsafeUserParameters=1 ``` #### 创建并测试Shell脚本 对于想要监测百度是否正常的服务可用性场景下,可以通过编写简单的PHP或者Shell脚本来完成HTTP请求,并返回状态码给Zabbix server作为健康指标的一部分。下面是一个基于curl工具的小型Shell脚本例子用于探测网站响应情况: ```bash #!/bin/bash url="http://www.baidu.com" response=$(curl -o /dev/null --silent --head --write-out '%{http_code}\n' "$url") echo $response if [ $response -eq 200 ]; then echo "Website is up and running." else echo "Error occurred, website returned HTTP status code: ${response}" fi exit $response ``` 此脚本会尝试访问指定URL并将HTTP响应代码打印出来;如果返回的状态码不是200,则认为该站点不可达[^1]。 #### 将Shell脚本集成到Zabbix Web界面 一旦创建好了上述类型的脚本,下一步就是在Zabbix前端设置相应的监控项(Item),以便定期收集由这些脚本产生的输出结果。具体操作是在Web UI中的相应位置输入之前设定好的Key名称以及路径指向本地磁盘上保存的实际可执行程序的位置。 #### 设置告警机制 除了主动轮询式的性能统计外,还可以借助于AlertScriptsPath配置项让Zabbix能够在满足某些条件时触发预设的动作——比如发送邮件通知相关人员处理问题。这里提到的例子是放置了一个名为`mail.sh`的通知脚本至`/etc/zabbix/alertscripts/`目录内,它会在接收到事件详情后负责向外发出警告信息[^2]。 #### 自动化报警流程 更进一步地讲,当某个阈值被跨越或者其他异常状况发生之时,Zabbix能够即时激活预先编写的Shell脚本来自动生成多样化的警示手段,如通过API接口对接第三方平台推送消息或是控制物理设备做出反应等行为都是可行的选择之一[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值