Может ли кто-нибудь предоставить мне решение следующей проблемы:
У меня ESXi 4.0 Enterprise Edition (старая, но ее нельзя изменить). Я хочу контролировать ESXi с сервера Nagios. И я использую плагин check_esx3-0.5.pl http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=2154&cf_id=29 со страницы обмена Nagios.
Этот плагин для мониторинга ESXi на сервере Nagios действительно работает при вводе команды с сервера 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 - это логин и пароль для ESXi на resources.cfg. У меня не установлен Center Server - это не обязательно для 6 серверов ESXi. Итак, может ли кто-нибудь помочь мне решить эту проблему?
Определение вашей команды ожидает ARG1 и ARG2 (для -w и -c соответственно), но вы не передаете их после check_vmfs в командной строке def вашей службы.
Таким образом, результирующая команда, выполняемая 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» или подобное.