Windows

使用 Nagios 監視 Windows 頁面文件

  • February 7, 2015

我有一個 NAGIOS 檢查來監控 Windows 機器上的虛擬記憶體,這個檢查返回所有使用的虛擬記憶體(物理+頁面文件的最大大小)。

這不是我想要的,我試圖搜尋一些只監視 Windows 機器上的頁面文件使用情況的檢查,但我沒有發現任何有趣的東西。

您是否知道任何監控頁面文件是否被 Windows 使用的 SNMP 檢查?

WMI

您可以使用安裝在 Linux 機器上的 WMI 客戶端直接訪問 WMI 參數:

手動編譯和安裝 wmi-client包或使用來自www.orvant.com的編譯包,它似乎也適用於較新版本的 Ubuntu(14.04 64 位)。

以下是命令行中 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

您可以通過 Python 從 Linux 訪問 WMI

SNMP

如果您更喜歡 SNMP,您需要在您的 Windows 機器上安裝 WMI-to-SNMP 網關,例如SNMP Informant - Advanced,以便能夠收集包括記憶體和交換在內的系統資訊。本質上,此工具為系統級 WMI 工具提供SNMP MIB,這反過來又允許任何 SNMP 管理站查詢 WMI 數據。它在Windows XP/Vista/2000/2003 和 2008 伺服器上受支持,並允許您訪問所有(超過 2000 個)計數器的數據。

NS客戶端

在 Windows 上使用NSClient++來監控pagefile.sys的大小。您需要將 NSClient++ 安裝為服務。使用這個適用於 Windows 機器的外掛,您還可以監控所有其他參數。例如,您可以監視可用記憶體。在 Windows 機器上的NSC.ini配置文件中不需要市長調整。

檢查 pagefile.sys 的大小並確保它保持在 1 GB 以上。範例命令:

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

或者在主機端使用 NSClient++的check_paging_file外掛。

引用自:https://serverfault.com/questions/659176