有人可以为我解决以下问题:
我有ESXi 4.0企业版(旧的,但不能更改)。 我想从Nagios服务器监控ESXi。 我使用Nagios exchabge页面的check_esx3-0.5.pl插件http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=2154&cf_id=29 。
从Nagios服务器input命令时,用于在Nagios服务器上监控ESXi的插件可以正常工作。 这是我有什么:
./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用户并通过login到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页面上所拥有的function:
ESXi VMFS Free Space UNKNOWN 03-08-2012 13:56:34 ..... Usage: check_esx.pl -D <data_center>
user3和user4是ESXi上resources.cfg的login和通行证我没有安装Center服务器 – 对于6个ESXi服务器不是必需的。 那么,有人可以帮我解决这个问题吗?
你的命令定义是期待ARG1和ARG2(分别用于-w和-c),但是你没有在你的service def的命令行check_vmfs之后传入它们。
因此,由Nagios执行的结果命令类似于“/path/to/check_esx3-0.5.pl -H 172.32.3.3 -u用户-p passwd -l vmfs -w -c”,这就是为什么它返回“error:这里的使用帮助“,而不是你所期望的。
您应该从命令定义中删除-w和-c部分,或者将一些(我假设)阈值添加到您的服务定义中。 例如,“check_vmfs!10!20”或类似的。