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

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

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

Известно ли вам о проверке SNMP этого монитора, если файл подкачки используется Windows или нет?

5 ответов

Решение

WMI

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

Скомпилируйте и установите пакет wmi-client вручную или используйте скомпилированные пакеты с https://www.orvant.com/packages/, он также работает с более новыми версиями 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 Informant - Advanced, на свой компьютер с Windows, чтобы иметь возможность собирать системную информацию, включая память и подкачку. По сути, этот инструмент предоставляет MIB SNMP для инструментария WMI системного уровня, который, в свою очередь, позволяет запрашивать данные WMI любой станцией управления SNMP. Он поддерживается на серверах Windows XP/Vista/2000/2003 и 2008 и позволяет получить доступ к данным со всех (более 2000) счетчиков.

NSClient

Используйте NSClient++ в Windows, чтобы отслеживать размер pagefile.sys. Вам необходимо установить NSClient++ как сервис. С помощью этого плагина для Windows-машин вы также можете отслеживать все остальные параметры. Например, вы можете контролировать свободную память. Нет необходимости в адаптации мэра в конфигурационном файле NSC.ini на компьютере с 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 (или Monitoring 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, который можно использовать для мониторинга использования файла подкачки.

Другие вопросы по тегам