通过 NRPE 运行 check_vmfs.sh 时权限被拒绝

通过 NRPE 运行 check_vmfs.sh 时权限被拒绝

我们有一个正在运行的 nagios 监控系统,之后我使用下面的命令监控我们的 vmware 数据存储插入 我安装了 vmware cli 并测试没有问题:

[root@nrpe-relay ~]# /usr/lib64/nagios/plugins/check_vmfs.sh -C /usr/lib64/nagios/plugins/vmware_esxi_conf.txt -S 192.168.20.241 -V /vmfs/volumes/LocalSlot45S6 -w 75 -c 90 -u Gb
WARNING - /vmfs/volumes/LocalSlot45S6 - total: 931.25 Gb - used: 800.95 Gb (86%)- free: 130.29 Gb (14%) | /vmfs/volumes/LocalSlot45S6=800.95Gb;698.43;838.12;;931.25

[root@nrpe-relay ~]# ps auxww|grep nrpe
nagios    1463  0.0  0.1  41468  1364 ?        Ss   21:24   0:00 nrpe -c /etc/nagios/nrpe.cfg -d
root      2261  0.0  0.0 103304   876 pts/0    S+   22:00   0:00 grep nrpe

但是,当命令远程运行时,我没有得到相同的值:

[root@nagios nagios]# /usr/lib64/nagios/plugins/check_nrpe -H <hostname> -c 'check_datastore_LocalSlot45S6'
CRITICAL -

这是我的 cfg 文件中的内容

command[check_datastore_LocalSlot45S6]=/usr/lib64/nagios/plugins/check_vmfs.sh -C /usr/lib64/nagios/plugins/vmware_esxi_conf.txt -S 192.168.20.241 -V /vmfs/volumes/LocalSlot45S6 -w 75 -c 90 -u Gb

我的服务器配置如下:

define service{
    use                     generic-service 
    host_name               <hostname>
    service_description     datastore-LocalSlot45S6
    check_command           check_nrpe!check_datastore_LocalSlot45S6
    }

这是我从 /var/log/message 中看到的内容:

nagios nagios: EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;<hostname>;datastore-LocalSlot1-2S3;1441798845

问题:有人知道问题出在哪里吗?或者我该如何追踪这个问题?

答案1

您的问题是 NRPE 守护进程以用户身份运行nagios,而该用户没有权限运行相关命令。

你会任何一个必须开放权限,以便用户可以运行它(顺便说一句,你最后的评论表明你没有完全注意输出;它是/usr/lib64/nagios/plugins/check_vmfs.err被拒绝权限的文件,而不是check_vmfs.sh),或者修改 NRPEd 以使用无密码 sudo,例如

command[check_datastore_LocalSlot45S6]=sudo /usr/lib64/nagios/plugins/check_vmfs.sh -C /usr/lib64/nagios/plugins/vmware_esxi_conf.txt -S 192.168.20.241 -V /vmfs/volumes/LocalSlot45S6 -w 75 -c 90 -u Gb

加上sudoers类似于

nagios  ALL=(root) NOPASSWD: /usr/lib64/nagios/plugins/check_vmfs.sh

如果你选择后者,你还需要

Defaults    !requiretty

在您的sudoers文件中,如果它还不存在的话。

相关内容