■説明
- WINDOWSサーバの仮想メモリ利用状況を監視するnagiosプラグインをpowershellで書きました。
- 仮想メモリの残量に対して閾値を設定し、閾値以下の残量に達した場合にアラートを検知します。
- 閾値で設定するメモリサイズの単位はMBになります。
- critical,warningの残仮想メモリサイズのみのパラメータ設定が可能で、省略時にはcritical=2,048MB,warning=4,096MBになります。
■ソースコード(check_vmem.ps1)
param([int] $warn=4096, [int] $crit=2048)
try
{
$wmi_win32_os=Get-WmiObject win32_OperatingSystem
$freeSwapSize=([math]::truncate($wmi_win32_os.FreeVirtualMemory / 1024))
$totalSwapSize=([math]::truncate($wmi_win32_os.TotalVirtualMemorySize / 1024))
$usedSwapSize=$totalSwapSize-$freeSwapSize
$usedSwapPercent = ([math]::truncate($usedSwapSize/$freeSwapSize*100))
if ($freeSwapSize -lt $crit)
{
$printLabel="CRITICAL:"
$retcode=2;
}
Elseif ($freeSwapSize -lt $warn)
{
$printLabel="WARNING:"
$retcode=1;
}
Else
{
$printLabel="OK:"
$retcode=0;
}
write-host "$printLabel Free Virtual Memory Size is $freeSwapSize MB; $usedSwapPercent % is used($usedSwapSize MB/$totalSwapSizeMB)"
exit $retcode;
}
catch
{
Write-Output $_;
$_="";
exit 3;
}
■各種設定
command[check_nt_vmem]=cmd /c echo C:nrpebincheck_vmem.ps1 -warn 4096 -crit 2048; exit $($LastExitCode) | powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Unrestricted -command -
define command{
command_name check-nt_vmem
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c check_nt_vmem
}
- nagisサーバ側の監視サーバ用configファイル
define service{
use generic-service
hostgroup_name win-servers
service_description virtual memory
check_command check-nt_vmem
process_perf_data 1
}
■実行例(クライアント側で手打ち実行)
C:>systeminfo
〜中略〜
仮想メモリ: 最大サイズ: 11,892 MB
仮想メモリ: 利用可能: 8,921 MB
仮想メモリ: 使用中: 2,971 MB
〜省略〜
C:>cmd /c echo C:nrpebincheck_vmem.ps1 -warn 4096 -crit 2048; exit $($LastExitCode) | powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Unrestricted -command -
OK: Free Virtual Memory Size is 8789 MB; 35 % is used(3102 MB/11891 MB)
C:>cmd /c echo C:nrpebincheck_vmem.ps1 -warn 9096 -crit 2048; exit $($LastExitCode) | powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Unrestricted -command -
WARNING: Free Virtual Memory Size is 8790 MB; 35 % is used(3101 MB/11891 MB)
C:>cmd /c echo C:nrpebincheck_vmem.ps1 -warn 9096 -crit 8848; exit $($LastExitCode) | powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Unrestricted -command -
CRITICAL: Free Virtual Memory Size is 8790 MB; 35 % is used(3101 MB/11891 MB)
元記事はこちら
「WINDOWSサーバの仮想メモリ利用状況を監視するnagiosプラグイン(powershell製)」