У меня есть проверка 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, который можно использовать для отслеживания использования файла подкачки.