| Works
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でスマートにできればいいのですが…。