使用 Nagios 监控 Windows 页面文件

ob_*_*dev 3 windows monitoring nagios pagefile

我有一个 NAGIOS 检查来监控 Windows 机器上的虚拟内存,这个检查返回所有使用的虚拟内存(物理+页面文件的最大大小)。

这不是我想要的,我试图搜索一些只监视 Windows 机器上页面文件使用情况的检查,但我没有找到任何有趣的东西。

您是否知道任何监控页面文件是否被 Windows 使用的 SNMP 检查?

BBK*_*BBK 5

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:\"
Run Code Online (Sandbox Code Playgroud)

现在创建 Nagios 插件。使用 wmic 的示例是here。这是如何创建自己的 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
Run Code Online (Sandbox Code Playgroud)

您可以从 Linux 通过 Python 访问 WMI

网络管理协议

如果您更喜欢 SNMP,您需要在您的 Windows 机器上安装 WMI-to-SNMP 网关,如SNMP Informant - Advanced,以便能够收集系统信息,包括内存和交换。本质上,该工具为系统级 WMI工具提供SNMP MIB,从而允许任何 SNMP 管理站查询 WMI 数据。它在Windows XP/Vista/2000/2003 和 2008 服务器上受支持,并允许您访问所有(超过 2000 个)计数器的数据。

客户端

在 Windows 上使用NSClient++来监控pagefile.sys大小。您需要将 NSClient++ 安装为服务。使用此适用于 Windows 机器的插件,您还可以监控所有其他参数。例如,您可以监控空闲内存。Windows 机器上的NSC.ini配置文件中不需要市长修改。

检查 pagefile.sys 的大小并确保它保持在 1 GB 以上。示例命令:

CheckFileSize ShowAll MinWarn=1G  MinCrit=512M File=c:/pagefile.sys
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)

从命令行(使用 NRPE):

check_nrpe -H IP -p 5666 -c CheckFileSize -a ShowAll MinWarn=1G  MinCrit=512M File=c:/pagefile.sys
Run Code Online (Sandbox Code Playgroud)

check_paging_file主机端插件与NSClient ++。