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

Мониторинг файлов подкачки Windows с помощью Nagios

У меня есть проверка NAGIOS, которая отслеживает виртуальную память на машине Windows, эта проверка возвращает всю используемую виртуальную память (физический + максимальный размер файла подкачки).

Это не то, что я хочу, я попытался найти несколько проверок, которые отслеживают только использование файла подкачки на машине с Windows, но я не нашел ничего интересного.

Знаете ли вы о какой-либо проверке SNMP, которая отслеживает, используется ли файл подкачки окнами?

WMI

Вы можете получить доступ к параметрам WMI напрямую с помощью клиента WMI, установленного на машине Linux:

Скомпилируйте и установите wmi-client пакет вручную или используйте скомпилированные пакеты из www.orvant.com похоже, он работает и с более новыми версиями Ubuntu (14.04 64bit).

Вот пример использования wmic из командной строки:

wmic -Uuser%pass //192.168.0.2 "SELECT FileSize FROM Win32_PageFile WHERE Path=c:\"

Теперь создайте плагин Nagios. Примеры использования wmic это здесь. Вот это руководство по созданию собственного плагина Nagios, поменяйте для работы с wmic. У вас будет что-то вроде этого:

if [ "$1" = "-w" ] && [ "$2" -gt "0" ] && \
[ "$3" = "-c" ] && [ "$4" -gt "0" ] && [ "$5" = "-h" ] && [ "$6" != "" ] && [ "$7" = "-u" ] && [ "$8" != "" ] && [ "$9" = "-p" ]; then

memPfSize=`wmic -U$8%$10 //$6 "SELECT FileSize FROM Win32_PageFile WHERE Path=c:\" | grep AllocatedBaseSize | awk -F'=' '{print $2}'`

if [ "$memPfSize" -ge "$4" ]; then
  echo "Memory: CRITICAL Pagefile: $memPfSize MB - RES: $memPfSize= MB used!|VIRT=$(($memPfSize*1024*1024));;;; RES=$(($memPfSize=*1024*1024));;;;"
$(exit 2)
elif [ "$memPfSize" -ge "$2" ]; then
  echo "Memory: WARNING Pagefile: $memPfSize MB - RES: $memPfSize= MB used!|VIRT=$(($memPfSize*1024*1024));;;; RES=$(($memPfSize=*1024*1024));;;;"
$(exit 1)
else
  echo "Memory: OK Pagefile: $memPfSize MB - RES: $memPfSize= MB used!|VIRT=$(($memPfSize*1024*1024));;;; RES=$(($memPfSize=*1024*1024));;;;"
$(exit 0)
fi
else
  echo "check_memPfSize v1.0"
  echo "check_memPfSize -w Warning -c Critical -h Host -u Win-User -p Password"
  echo "example of usage:"
  echo "check_memPfSize -w 1024 -c 2048 -h 192.168.0.2 -u Administrator -p adminpassword"
exit
fi

Ты можешь доступ к WMI через Python из Linux.

SNMP

Если вы предпочитаете SNMP, вам необходимо установить шлюз WMI-to-SNMP, например Информатор SNMP - Расширенный на вашем компьютере с Windows, чтобы иметь возможность собирать системную информацию, включая память и файл подкачки. По сути, этот инструмент предоставляет SNMP MIB для инструментария WMI системного уровня, который, в свою очередь, позволяет запрашивать данные WMI любой станцией управления SNMP. Поддерживается Серверы Windows XP / Vista / 2000/2003 и 2008 и позволяет получать доступ к данным со всех (более 2000) счетчиков.

NSClient

Использовать NSClient ++ в Windows для мониторинга pagefile.sys размер. Вам необходимо установить NSClient ++ как службу. С помощью этого плагина для компьютеров Windows вы также можете контролировать все другие параметры. Например, вы можете контролировать свободную память. Нет необходимости в адаптации мэра в NSC.ini config на компьютере с Windows.

Проверьте размер pagefile.sys и убедитесь, что он превышает 1 гигабайт. Пример команды:

CheckFileSize ShowAll MinWarn=1G  MinCrit=512M File=c:/pagefile.sys

Конфигурация Nagios:

define command {
  command_name <<CheckFileSize>>
  command_line check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckFileSize -a ShowAll MinWarn=$ARG2$  MinCrit=$ARG1$ File=c:/pagefile.sys
}

Из командной строки (с NRPE):

check_nrpe -H IP -p 5666 -c CheckFileSize -a ShowAll MinWarn=1G  MinCrit=512M File=c:/pagefile.sys

Или с check_paging_file плагин на стороне хоста с NSClient ++.

Да, к сожалению, я думаю, что вы в конечном итоге установите nsclient ++.

Моя первая мысль заключалась в том, чтобы просто написать сценарий vbscript или powershell для проверки размера файла подкачки, но мои первые попытки вернули нулевые результаты, потому что Windows управляет моим файлом подкачки. Видимо, это обычное дело.

Тем не мение, этот плагин похоже, работает. Кроме того, он намного более подробный, чем тот быстрый набросок, который я пытался сделать. Возможно, это решит вашу проблему.

Вы не указываете, какой плагин вы используете, но нет причин, по которым вы не можете использовать SNMP для проверки использования «виртуальной памяти». Например, когда вы ходите по этому дереву (1.3.6.1.2.1.25.2) против сервера Windows 2008 с SNMP, вы увидите вывод, который включает что-то вроде этого:

HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: Virtual Memory
HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: Physical Memory
<snip>
HOST-RESOURCES-MIB::hrStorageSize.4 = INTEGER: 449485
HOST-RESOURCES-MIB::hrStorageSize.5 = INTEGER: 392141
<snip>
HOST-RESOURCES-MIB::hrStorageUsed.4 = INTEGER: 85263
HOST-RESOURCES-MIB::hrStorageUsed.5 = INTEGER: 104233

Кажется, что, возможно, плагин, который вы используете, объединяет оба physical memory и virtual memory стоимость в один чек?

Может быть, вам просто нужен другой плагин SNMP. Есть вся категория памяти на Nagios Exchange, включая те, в которых явно указано использование Windows. Присмотритесь к магазинам.

Если вы не можете найти плагин SNMP, который делает то, что вы хотите, есть другие варианты ...

Поскольку вы заявляете, что использование агента Nagios (nsclient ++) невозможно, лучшим методом было бы использование WMI. Microsoft реализует только самый минимум поддержки SNMP, но вы можете проверить буквально все о сервере Windows через WMI. У них есть целый объект WMI для использования файла подкачки, например.

На Nagios Exchange доступно множество проверок WMI. (или мониторинг обмена), например checkwmiplus, check_wmic, или (если вы имеете дело с большим количеством окон Windows) возможно Nagios-WSC.

А вот некоторая информация о правильной настройке WMI для удаленного доступа.

Вы можете прочитать этот вопрос; кажется, что числа, которые вы получаете от SNMP, могут быть неточными в этом случае.

Это нормально для тебя?

Команда:

define command{
    command_name    check_win_memusage
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c checkMem -a MaxWarn=$ARG1$ MaxCrit=$ARG2$ ShowAll type=$ARG3$
    }

Обслуживание:

check_win_memusage!90%!95%!paged

NSClient ++ 0.4.3 имеет встроенный check_pagefile, который можно использовать для отслеживания использования файла подкачки.