■説明

  • 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;
}

■各種設定

  • nrpe.cfg
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 -
  • command.cfg
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製)