こんにちはマツダです。
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Option Explicit Dim args, objWMI Set args = WScript.Arguments Set objWMI = GetObject("winmgmts:\\.\root\cimv2") if args.Count = 1 then if args.Item(0) = "config" then Print("graph_title IIS requests") Print("graph_category iis") Print("graph_info This graph shows iis requests.") Print("graph_vlabel request/sec") Print("graph_args --alt-autoscale-max --rigid --base 1000 --lower-limit 0") Print("requests.label Total Method Requests") Print("requests.draw LINE") Print("requests.type DERIVE") Print("requests.min 0") Print(".") elseif args.Item(0) = "name" then Print("iis_requests") end if WScript.Quit end if ' Get performance monitor Web Service(_Total)\Total Method Requests Dim Request For Each Request in objWMI.ExecQuery ("Select * from Win32_PerfRawData_W3SVC_WebService where Name='_Total'") Print("requests.value " & Request.TotalMethodRequests) Next Print(".") Sub Print(str) Wscript.StdOut.Write str & vbLf End Sub |
C:\munin\plugins\iis_request.cmd
1 2 3 4 5 |
@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を再起動します。
1 2 3 4 5 6 |
[Plugins] External=1 ExternalTimeout=5 [ExternalPlugin] Plugin01=c:\munin\plugins\iis_request.cmd |
動作確認
グラフが正常に表示されることを確認します。
※参考にしたサイト:https://gist.github.com/moisseev/6026bb2794b33b2488c65aec9a8a5452