我使用以下命令在 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