⬛︎説明

Windowsサーバからping監視を行うプラグインをpowershellで書きました。

⬛︎作成の背景

  • linux用の標準plugin"check_ping"はwindows用には標準ではありません。
  • フリーウェアでwindows用のものがありますがperl製です。
    https://www.itefix.net/check_winping
  • 動かす為にActive Perl等をインストールしたくないケースに対応する為に作成しました。

⬛︎ソースコード

check_pingwin.ps1

param
(
        $check_host_ip
)
try
{
    # "-Count 2 -TimeToLive 1" can not be change,
    #because the processing time of "Test-Connection"
    #over the nrpe timeout period(default 10sec).
    # if you customize "the nrpe timeout period" to 30sec,
    #you can change "-Count" to 6.
        $Result = Test-Connection -ComputerName $check_host_ip -Count 2 -TimeToLive 1 -Quiet
        if($Result)
        {
                write-host "OK - ping check is OK."
                exit 0;
        }
        Else
        {
                write-host "CRITICAL - ping check is NG."
                exit 2;
        }

}
catch
{
        write-host "UNKOWN ERR - $_;"
        exit 3;
}

⬛︎仕様

  • pingを対象IPアドレスに対して2回実行し、一回も成功しなかった場合CRITICALになります。
  • pingを打つ間隔は1秒間です。
  • pingのTTLは1秒です。
  • 上記仕様はnrpeのタイムアウト間隔(10秒)とTest-Connectionコマンドレットの仕様に合わせたものになります。
  • 上記仕様を変更したい(ping回数や打つ間隔、TTLを変更したい)場合はnrpeのタイムアウト間隔を広げる必要があります。

⬛︎使用例

PS C:UsersAdministrator> .check_pingwin.ps1 -check_host_ip 10.0.0.100
OK - ping check is OK.
PS C:UsersAdministrator> .check_pingwin.ps1 -check_host_ip 10.0.0.10
CRITICAL - ping check is NG.

・・・作ったけど結局使うことなくなったのでお蔵入りになりました。よければどなたか使ってやってくださいmm

元記事はこちら

Windowsサーバからping監視を行うプラグイン(powershell製)