こんにちはマツダです。

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

TOP
TOP