Обычные плагины связаны с известной статистикой системы, но мы видим действительно странные результаты на некоторых из наших экземпляров vmware с hdparm -t.
Кто-нибудь знает, что тест действительно выполняет запись / чтение на диске или монтируется nfs в nagios?
Я бы выбрал другой подход (если вы используете ESX)
perl -MCPAN -e 'install <pluginname>'
: aptitude install libxml-libxml-perl libclass-methodmaker-perl libcrypt-ssleay-perl libsoap-lite-perl libuuid-perl
'UUID' => '0.03',
к 'UUID' => '0.02',
perl Makefile.PL make make test make install
Создайте эту новую команду:
define command {
command_name check_esx
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ $ARG1$ -u $ARG2$ -p $ARG3$ -w $ARG4$ -c $ARG5$ $ARG6$
}
Теперь добавьте новую услугу, например:
define service {
name esx-io
use generic-service
service_description ESX I/O
check_command check_esx!-l io!$_SERVICEESX_USER$!$_SERVICEESX_PW$!$_SERVICEIO_WARNING$!$_SERVICEIO_CRITICAL$!$_SERVICEESX_VM$
}
Затем используйте эту проверку на хосте:
define service {
use esx-io
host_name <hostname>
servicegroups foo
_ESX_USER <ESX-api check user>
_ESX_PW a-password
_IO_WARNING 70
_IO_CRITICAL 80
}
Может быть, это не совсем то, что вы хотели, но я подумал, что поделюсь этим.
Писать собственные тесты - тривиально. Напишите сценарий, который сделает то, что вы хотите протестировать, и оцените возможные результаты.
В вашем случае вы можете попробовать dd
на nfs-share или диске, чтобы проверить запись и открыть файл, чтобы проверить чтение. Затем вы можете использовать результат dd
возвращать каждый третий статус:
Вы можете добавить дополнительную информацию в строку после статуса. Пример:
OK - Everything went better then expected. Writespeed > 2500kbps
WARNING - Write speed is below treshold: < 500kbps.
CRITICAL - Write Failed!
Добавьте сценарий в свой check_nrpe-config (или что-то еще, что вы используете для запуска удаленных сценариев), и все готово.
Не тестировал это, но если все, что вы хотите сделать, это написать, тогда прочитайте файл, попробуйте небольшой сценарий оболочки, например
#!/bin/bash
DATE=`date`
#Write
echo $DATE > /drive/mount/point/testfile
if [ $? -eq 0 ]; then
echo "Write Successful"
else
echo "Cound not write file"
exit 2
fi
#Read
cat /drive/mount/point/testfile > /dev/null
if [ $? -eq 0 ]; then
echo " - Read Successful"
else
echo " - Cound not read file"
exit 2
fi
exit 0
Этот сценарий можно было бы значительно улучшить, и, вероятно, в нем есть некоторые ошибки, но он записывает в файл, а затем читает его обратно, если эфир из них не работает, он вернется критически. Вероятно, вы могли бы изменить это, чтобы он использовал argv для пути к файлу и мог бы вызвать некоторые нежелательные ошибки в консоли, но это начало
Мониторинг производительности диска может быть намного сложнее, чем просто записать файл и посмотреть, сколько времени это займет. То же самое и с чтением. Как узнать, что происходит во время записи / чтения? Могут быть скачки загрузки процессора, проблемы с сетевым трафиком (особенно, если nfs), короче все виды вещей. По крайней мере, запустите collectl в одном окне, а записать файл в другом. Вот краткий пример того, что он показывает после установки RPM и простого выполнения команды collectl:
[root@poker ~]# collectl
#<--------CPU--------><----------Disks-----------><----------Network---------->
#cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut
0 0 1103 171 0 0 0 0 0 1 0 0
0 0 1120 265 0 0 0 0 0 1 0 1
намного больше переключателей и опций. он даже может отображать статистику nfs в той же строке, если вам интересно.