无法使用 nrpe 检查获取 KVM 的 vm-list

无法使用 nrpe 检查获取 KVM 的 vm-list

我使用以下命令在 KVM 虚拟化主机中创建检查以获取 KVM 管理程序中可用 VM 的列表。

$ cat /usr/local/nagios/libexec/check_kvm
#!/bin/sh
val=`virsh list --all | sed '1,2d' | sed '/^$/d'| awk '{print $2":"$3}'`
echo "VM List is" - $val
exit 0

在本地执行脚本获取数据,如下所示。

# sh /usr/local/nagios/libexec/check_kvm

VM List is - oy06b:running .......

使用 nrpe 从 nagios 服务器获取数据时,我无法获取虚拟机列表。我得到如下信息“虚拟机列表是”,但 $val 没有显示。

/usr/local/nagios/libexec/check_nrpe -H <Host IP> -c check_kvm

VM List is -

请指教....

答案1

执行该工具virsh需要 root 权限,这正是您直接从 shell 执行该工具时实际执行的操作。

但是,nagios通过 NRPE 守护进程运行时,它会以用户身份执行。要解决此问题,您需要sudo在以下位置添加命令定义nrpe.cfg

command[check_kvm]=sudo /usr/local/nagios/libexec/check_kvm

并将nagios用户添加到 sudoers 文件以允许执行此命令/脚本而无需输入密码:

nagios  ALL = NOPASSWD: /usr/local/nagios/libexec/check_kvm

相关内容