Windowsマシンの仮想メモリを監視するNAGIOSチェックがあります。このチェックは、使用されているすべての仮想メモリ(物理+ページファイルの最大サイズ)を返します。
これは私が望んでいることではありません。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
LinuxからPython)経由でWMIにアクセス できます。
[〜#〜] snmp [〜#〜]
SNMPを使用する場合は、メモリやスワップなどのシステム情報を収集できるように、Windowsマシンに SNMP Informant --Advanced のようなWMIからSNMPへのゲートウェイをインストールする必要があります。基本的に、このツールは、システムレベルのWMIインストルメンテーションに SNMP MIB を提供します。これにより、任意のSNMP管理ステーションでWMIデータをクエリできます。 Windows XP/Vista/2000/2003および2008サーバーでサポートされており、すべての(2000を超える)カウンターからのデータにアクセスできます。
NSClient
Windowsで NSClient ++ を使用して、pagefile.sysサイズを監視します。 NSClient ++をサービスとしてインストールする必要があります。 Windowsマシン用のこのプラグインを使用すると、他のすべてのパラメーターも監視できます。たとえば、空きメモリを監視できます。 WindowsマシンのNSC.ini構成ファイルで市長を調整する必要はありません。
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
または、NSClient ++を使用したホスト側の check_paging_file プラグインを使用します。
ええ、悲しいことに、あなたはnsclient ++をインストールすることになると思います。
最初に考えたのは、vbscriptまたはPowerShellスクリプトを記述してページファイルのサイズを確認することでしたが、Windowsがページファイルを管理しているため、最初の試行ではnullの結果が返されました。どうやら、これは一般的なことです。
ただし、 このプラグイン は機能しているようです。また、私が試した簡単な落書きよりもはるかに包括的です。おそらくこれはあなたの問題を解決するでしょう。
使用しているプラグインを指定しませんが、SNMPを使用して「仮想メモリ」の使用状況を確認できない理由はありません。たとえば、SNMPを使用するWindows 2008サーバーに対してこのツリー(1.3.6.1.2.1.25.2
)を歩くと、次のような出力が表示されます。
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
の両方の値を1つのチェックに結合しているようです。
たぶんあなたはただ別のSNMPプラグインが必要です。 Nagios Exchangeのメモリカテゴリ全体 があり、Windowsの使用状況を明示的にリストするものも含まれます。買い物をする。
必要な処理を実行するSNMPプラグインが見つからない場合は、他のオプションがあります...
Nagiosエージェント(nsclient ++)を使用することは不可能であると述べているので、より良い方法はWMIを使用することです。 Microsoftは最低限のSNMPサポートのみを実装していますが、WMIを介してWindowsサーバーに関するすべてを文字通り確認できます。 ページファイルを使用するためのWMIオブジェクト全体があります たとえば。
Nagios Exchangeで利用できるWMIチェックがたくさんあります (またはMonitoring Exchange)、たとえば 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が組み込まれています。