こんにちはマツダです。
Windows用のmuninプラグインを作成する機会があったので共有します。
今回はIISのアクセス数を表示するプラグインを作成したいと思います。
対象バージョン
- Windows Server 2016
プラグイン本体
プラグインはIISのアクセス数を返すVBScript(iis_request.vbs)とそれを呼び出すcmdファイル(iis_request.cmd)になります。
プラグインの作成
IISのアクセス数はパフォーマンスモニタの「Web Service(_Total)\Total Method Requests」の値を取ってきて表示します。
また第一引数にconfigを指定された場合は、グラフ(RRDtool)の設定を返すようにします。
C:\munin\plugins\iis_request.vbs
01: Option Explicit 02: Dim args, objWMI 03: Set args = WScript.ArgumentsSet 04: objWMI = GetObject("winmgmts:\\.\root\cimv2") 05: if args.Count = 1 then 06: if args.Item(0) = "config" 07: then Print("graph_title IIS requests") 08: Print("graph_category iis") 09: Print("graph_info This graph shows iis requests.") 10: Print("graph_vlabel request/sec") 11: Print("graph_args --alt-autoscale-max --rigid --base 1000 --lower-limit 0") 12: Print("requests.label Total Method Requests") 13: Print("requests.draw LINE") 14: Print("requests.type DERIVE") 15: Print("requests.min 0") 16: Print(".") 17: elseif args.Item(0) = "name" then 18: then Print("iis_requests") 19: end if 20: WScript.Quit 21: end if 22: ' Get performance monitor Web Service(_Total)\Total Method Requests 23: Dim Request 24: For Each Request in objWMI.ExecQuery ("Select * from Win32_PerfRawData_W3SVC_WebService where Name='_Total'") 25: Print("requests.value " & Request.TotalMethodRequests) 26: Next 27: Print(".") 28: Sub Print(str) 29: Wscript.StdOut.Write str & vbLf 30: End Sub
C:\munin\plugins\iis_request.cmd
@echo off
rem Munin Node for Windows external plugin wrapper
call %windir%\system32\cscript.exe //NoLogo "C:\munin\plugins\iis_request.vbs" %1
作成したプラグインの設定
c:\munin\munin-node.ini に下記を追記し、munin-nodeを再起動します。
[Plugins]
External=1
ExternalTimeout=5
[ExternalPlugin]
Plugin01=c:\munin\plugins\iis_request.cmd
動作確認
グラフが正常に表示されることを確認します。
※参考にしたサイト:https://gist.github.com/moisseev/6026bb2794b33b2488c65aec9a8a5452