[Zabbix问题解决]自定义脚本获取key失败怎么办?

本文介绍了解决Zabbix自定义监控脚本获取不到数据的问题。通过调整sudoers文件赋予zabbix用户更多权限,成功获取了脚本返回值。

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

之前在http://chenx1242.blog.51cto.com/10430133/1839829 这篇文章里写了如何创建一个自定义的key来让zabbix进行实时的监控。但是也会有这样一种情况,那就是脚本在客户端上是可以跑通而且可以得到结果,但是在zabbix_get却死活无法正确的得到脚本结果,得到的是空值。如下图:

wKiom1e2uHOBFKuKAAArfm11JQc317.png

注意一下,ZBX_NOTSUPPORTED是key不对的意思,而下面那个就是得到空值的意思。


一般来说这种情况非常蛋疼,zabbix就是这么一个缺点:出问题不表现出来,但是zabbix还有一个优点,那就是问题都会在日志文件里,于是我们就在控制端打开zabbix_agentd.log,查看一下情况,结果日志如图:

1.png

看见了吧,在取key的时候,各种权限拒绝。这是因为zabbix_agent是由zabbix这个账户操作的,而这个用户本身是没有很多权限的,所以我们要给zabbix一些权限,让它可以成功的访问文件。于是我们#sudoedit /etc/sudoers,把原来的文件改成这样:

wKioL1e2ubvyQ71wAABBJh05mWk574.png

把zabbix跟root的权限平起平坐,而且还nopasswd,这样sudo的时候就不用每次都输入一次root的密码了,然后在不需要tty,文件改好了之后保存退出。


这个时候我们来写一个小脚本,这个脚本名叫get-payload,目的是要从/tmp/zksync/pms这个文件里取到一个payload的值。我们先看一下/tmp/zksync/pms这个文件内容,以及脚本里要使用的语句:

wKiom1e2upLhFNoDAAA6WomSaNs773.png

可以看到我们可以截取到8这个payload,然后脚本也就很好写了,脚本如下:

1
2
3
#!/bin/bash
payload=$( cat  /tmp/zksync/pms  | perl -n -e '/.*payload\":(\d+)\}\}/ && print $1' #这里我用正则匹配的,不是用上面的cut,效果一样的
echo  $payload

然后把这个脚本的绝对路径放在zabbix_agentd.conf里,如图:

wKioL1e2u0zAEw1-AABlXD6TjKs966.png

注意哦注意哦,脚本的绝对路径前面是有sudo这四个字母的!:wq保存退出,并且重启zabbix_agent之后,来到zabbix_server端去get一下,看一下效果:

wKiom1e2u6Phu-fRAAAvZ61hY60131.png

无论是pid还是payload都能成功获取到数值,成功!!!


问题至此得到了解决,我们就可以在监控奇葩的项目的道路上越走越远了...


 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1840331


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值