有人可以为我提供以下问题的解决方案吗:
我有 ESXi 4.0 企业版(旧版,但无法更改)。我想从 Nagios 服务器监控 ESXi。我使用 check_esx3-0.5.pl 插件http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=2154&cf_id=29来自 Nagios 交易页面。
在 Nagios 服务器上监控 ESXi 的插件在从 Nagios 服务器输入命令时确实有效。这是我所拥有的:
./check_esx3-0.5.pl -H 172.32.3.3 -u user -p password -l vmfs
结果是:
{CHECK_ESX3-0.5.PL OK - Storages : iSCSI ibm storage=219492.00 MB (23.02%)
, datastore esxi04=60704.00 MB (93.36%), Storage Backup=853604.69 MB (60.13%)
| 'iSCSI ibm storage'=219492.00MB;; 'datastore esxi04'=60704.00MB;; '
Storage Backup'=853604.69MB;;}
以上是完全正确的答案。
这是我的设置-命令定义:
define service{
use local-service ; Name of service template
to use
host_name esxi03.troxo.net
service_description PING
check_command check_ping!100.0,20%!500.0,60%
contact_groups admins
}
VMWare check cpu
define service{
use local-service
host_name esxi03.troxo.net
service_description ESXi CPU Load
check_command check_esx_cpu!80!90
}
Define a service to check the Memory Usage on the remote machine.
Warning if > 80%, critical if > 90%.
check memory usage
define service{
use local-service
host_name esxi03.troxo.net
service_description ESXi Memory usage
check_command check_esx_mem!80!90
}
Define a service to check RunTime Status on the remote machine.
check runtime status
define service{
use local-service
host_name esxi03.troxo.net
service_description ESXi Runtime status
check_command check_esx_runtime
}
check io read
define service{
use local-service
host_name esxi03.troxo.net
service_description ESXi IO read
check_command check_esx_ioread!40!90
}
check io write
define service{
use local-service
host_name esxi03.troxo.net
service_description ESXi IO write
check_command check_esx_iowrite!40!90
}
Define a service to check vmfs free space on the remote machine.
check io write
define service{
use local-service
host_name esxi03.troxo.net
service_description ESXi VMFS Free Space
check_command check_vmfs
}
}
我向 resources.cfg 添加了用户和密码以登录 ESXi。commands.cfg 文件如下所示:
check io write
define command{
command_name check_esx_iowrite
command_line $USER1$/check_esx3-0.5.pl -D $HOSTADDRESS$ -u $USER3$ -p $USER4$
-l io -s write -w $ARG1$ -c $ARG2$
}
check vmfs
define command{
command_name check_vmfs
command_line $USER1$/check_esx3-0.5.pl -H $HOSTADDRESS$ -u $USER3$ -p $USER4$ -l vmfs
-w $ARG1$ -c $ARG2$
}
只有 ping 命令正常。其他命令均被声明为未知。以下是 Nagios 页面上的内容:
ESXi VMFS Free Space
UNKNOWN 03-08-2012 13:56:34 ..... Usage: check_esx.pl -D <data_center>
user3 和 user4 在 resources.cfg 上登录并通过了 ESXi 我没有安装 Center Server - 6 个 ESXi 服务器不需要。那么,有人能帮我解决这个问题吗?
答案1
您的命令定义需要 ARG1 和 ARG2(分别用于 -w 和 -c),但是您没有在服务定义的命令行中的 check_vmfs 之后传入它们。
因此,Nagios 执行的结果命令类似于“/path/to/check_esx3-0.5.pl -H 172.32.3.3 -u user -p passwd -l vmfs -w -c”,这就是它返回“错误:这是使用帮助”而不是您所期望的原因。
您应该从命令定义中删除 -w 和 -c 部分,或者在服务定义中添加一些(我假设的)阈值。例如,“check_vmfs!10!20”或类似内容。