URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

ZabbixでUDPポートの監視(Windows)

 ZabbixでWindowsサーバのUDPポートの監視をする要件があったのですが、"net.udp.listen[port]"キーはどうやらLinuxでないと使えないみたい。

 そんなわけで、"netstat"コマンドの結果をUserParameterで渡すことを前提にスクリプトを作ってみました。

 メインのスクリプト"udp_check.vbs"はこんな感じで。

Option Explicit On Error Resume Next Const TargetProto = "udp" Dim objShell, objExec, objRE, strLine, intPort, RetVal If WScript.Arguments.Unnamed.Count = 0 Then WScript.Quit(255) End If intPort = WScript.Arguments.Unnamed(0) RetVal = 0 Set objRE = new RegExp objRE.Pattern = ".\:" & intPort & "\s" Set objShell = WScript.CreateObject("WScript.Shell") Set objExec = objShell.Exec("C:\Windows\System32\netstat.exe -an -p " & TargetProto) Do While objExec.Status = 0 WScript.Sleep 100 Loop Do Until objExec.StdOut.AtEndOfStream strLine = objExec.StdOut.ReadLine If objRE.Test(strLine) Then RetVal = 1 End If Loop WScript.Echo RetVal WScript.Quit(0)

 一応、呼び出し用のバッチファイル"udp_check.bat"も準備。

@ECHO OFF cscript //nologo udp_check.vbs %1

 Zabbix Agentの設定ファイルにUserParamenterを追記してZabbixサーバからアイテムを作成(監視対象ポートを引数で与える)

UserParameter=port.listen.udp[*],udp_check.bat

 こんな感じで大丈夫かな?
 もっとZabbixでスマートにできればいいのですが…。