こんにちはマツダです。
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
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
@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