Назад | Перейти на главную страницу

как я могу выполнить тест производительности диска, например hdparm -t в nagios?

Обычные плагины связаны с известной статистикой системы, но мы видим действительно странные результаты на некоторых из наших экземпляров vmware с hdparm -t.

Кто-нибудь знает, что тест действительно выполняет запись / чтение на диске или монтируется nfs в nagios?

Я бы выбрал другой подход (если вы используете ESX)

  • Загрузите Плагин ESX Nagios и сохраните его в папке плагинов Nagios
  • Установите необходимые модули Perl с perl -MCPAN -e 'install <pluginname>':
    • Nagios :: Плагин
    • Params :: Validate
    • Math :: Calc :: Units
    • Класс :: Аксессор :: Быстрый
    • Конфиг :: Крошечный
  • Загрузите последний SDK под названием «vSphere SDK for Perl x.x» (требуется регистрация): http://www.vmware.com/support/developer/viperltoolkit/
  • Установите необходимые библиотеки: aptitude install libxml-libxml-perl libclass-methodmaker-perl libcrypt-ssleay-perl libsoap-lite-perl libuuid-perl
  • редактировать Makefile.PL и измените строку '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 в той же строке, если вам интересно.