I've posted v1.5 of Munin Node for Windows.
Summary
Munin Node for Windows AKA munin-node-win32, is a Windows client for the Munin monitoring system.
It is written in C++ with most plugins built into the executable. Which is different from the standard munin-node client, which only uses external plugins written as shell and Perl scripts.
Change Log for v1.5
+ Added readme documentation
+ Updated -install / -uninstall switches to handle Window Firewall exceptions
+ Added SpeedFan plugin
+ Added External Plugins plugin, external plugins are now supported
+ Added Generic Performance Counter plugin
+ Removed Uptime, Disktime plugins. Replaced with the Generic Performance Counter plugin
+ Improved error handling in Cpu plugin
+ Now Unicode compatible
+ Fixed memory leaks
+ Improved multi-thread safety
+ Added better Event Log support
Download
MSI Installer (225KB)
Binary (135KB)
Source Code (423KB)
Tuesday, June 3. 2008 at 05:36 (Reply)
Tuesday, June 3. 2008 at 06:01 (Reply)
Tuesday, June 3. 2008 at 06:29 (Link) (Reply)
munin-update.log:
Unable to update xxx -> xxx -> memory -> swap: No such field (no "label" field defined when running plugin with "config").
A fix would be great!
Thanks,
der flo
Wednesday, June 18. 2008 at 11:56 (Reply)
swap: No such field (no "label" field defined when running plugin with "config").
Tuesday, July 15. 2008 at 19:49 (Reply)
//"swap.label swap\n"
//"swap.draw STACK\n"
//"swap.info Swap space used.\n"
it was comment out!
Monday, October 20. 2008 at 21:04 (Reply)
memory.swap.label swap
memory.swap.draw STACK
memory.swap.info Swap memory used.
Monday, August 17. 2009 at 16:10 (Reply)
Friday, December 18. 2009 at 06:38 (Reply)
-----------------------
memory.swap.label swap
memory.swap.draw STACK
memory.swap.info Swap memory used
-----------------------
for windows node....
but i am facing the same problem with
Disk Time
Processor Time
any suggestion.
thanks
Wednesday, July 14. 2010 at 03:29 (Reply)
Tuesday, June 10. 2008 at 03:28 (Link) (Reply)
Tell me please - how i can enable SMART monitoring? This not work by default
Friday, June 20. 2008 at 16:40 (Link) (Reply)
Thanks,
Jory
Tuesday, June 10. 2008 at 04:25 (Link) (Reply)
And feature requests...
CPU usage per processor
max memmory line in memory usage (oh, onto my server installed 4Gb, but memmory usage show 1G as apps and 1G as unused o0)
Thanks.
______
sorry for badly english....
Friday, November 7. 2008 at 04:02 (Reply)
Thursday, February 18. 2010 at 06:32 (Reply)
Tuesday, June 10. 2008 at 06:50 (Link) (Reply)
Can you revove version info from windows service name? Hardly to monitoring service status with Nagios. On every version changing administrators must rewrite their Nagios config files...
Monday, June 16. 2008 at 09:55 (Reply)
(Now what's wrong with memory status, munin-update.log says:
...
Jun 16 16:45:01 [26759] - Unable to update domain.local -> computer.domain.local -> memory -> swap: No such field
(no "label" field defined when running plugin with "config").
...
and telnet to 4949 on client gives
...
config memory
graph_args --base 1024 -l 0 --vertical-label Bytes --upper-limit 329342976
graph_title Memory usage
graph_category system
graph_info This graph shows what the machine uses its memory for.
graph_order apps free swap
apps.label apps
apps.draw AREA
apps.info Memory used by user-space applications.
free.label unused
free.draw STACK
free.info Wasted memory. Memory that is not used for anything at all.
...
)
Thursday, July 10. 2008 at 04:06 (Reply)
maybe uncommenting these lines memory graph can work, but I can't try it since I have no visual studio
Cheers!
Lluís
Thursday, October 16. 2008 at 08:01 (Reply)
Friday, July 18. 2008 at 03:56 (Link) (Reply)
but i would like to know where i can post bugs?
i have a one.
on some machines image of HDD sensors are corrupted.
i'm think that it depend from motherboard - but if on next releases there will be a right workaround =)
Friday, July 18. 2008 at 05:40 (Link) (Reply)
how to disable munin logging in event viewer?
Monday, July 21. 2008 at 08:54 (Link) (Reply)
A couple of our servers run win64 so I compiled a version for this flavour. It spills out a couple of warnings but essentially it works fine. Just to let you know. I've put the binary and src at the homepage address (http://dev.thebookingroom.com/files/)
I did not change anything in the source, just VS config and of course I don't have access to your svn repo.
Sunday, October 19. 2008 at 09:15 (Reply)
"...lines 43-45 commented at src/plugins/memory/MemoryMuninNodePlugin.cpp..."
Thanks, PEter
Wednesday, October 28. 2009 at 05:43 (Reply)
Thursday, July 24. 2008 at 06:18 (Reply)
However, some little issues...
- in the default-configuration there are some statements GraphDraw=LINE. My munin/rrdtool-setup didn't like that and I had to change it to LINE1. Not sure wheter the reason was munin or rrdtool.
- I have trouble limiting access to the munin-node-port so that only my munin-server can access it. I'll have to discuss this with my local windows-admin. Personally, I'm a linux guy.
- I love the perfmon-Plugin, but I'd really really love to have several values in one graph. Is there a way to accomplish that? Something like network in and out in a single graph? (yes, there is already a network-plugin, take this just as an example).
But hey, I love it anyway.
Tuesday, July 29. 2008 at 00:20 (Reply)
I setup the tomcat_access plugin and added the following entry in the [ExternalPlugin] section
Plugin01=c:\munin_plugins\tomcat_access.pl
Running the node with the console option, I see a message that the external plugin failed to load. Assuming that perhaps perl couldn't be invoked by the node, I created a simple batch file to invoke it, and changed the config entry to read:
Plugin01=c:\munin_plugins\tomcat_access.bat
However, the same error appeared.
Tuesday, July 29. 2008 at 01:09 (Reply)
My last comment was based on the misapprehension that standard plugins could be dropped into this node. Now that I added a section in the perl script to respond with tomcat_access when the command-line argument 'name' is passed in, the plugin loads. However, I have a subsequent problem...
When I telnet to port 4949, I see the plugin with the correct name in response to a list command. However, the commands "fetch tomcat_access" or "config tomcat_access" are replied to with "Unknown service".
Tuesday, August 19. 2008 at 05:00 (Reply)
I had the same problem with an external plugin I've written in vbs called by a wrapper .bat. The problem are linebreaks, especially when munin-node builds its list of plugins, it calls file.bat name. If the output of this contains a \r\n or just an \n it fails to recognise the name when it calls file.bat config
Here are my sample files
munin-plugin-template.bat:
@echo off
call %windir%\system32\cscript.exe /nologo FULLPATH\munin-plugin-template.vbs %1
munin-plugin-template.vbs:
set args = WScript.Arguments
num = args.Count
if num = 0 then
' Fetch statistics from SQLServer
WScript.StdOut.Write("statistics.value " & statistics & vbLf & "." & vbLf)
end if
if num = 1 then
if args.Item(0) = "config" then
WScript.StdOut.Write("graph_title Statistics" & vbLf)
' ....
WScript.StdOut.Write("statistics.label 0" & vbLf & "." & vbLf)
elseif args.Item(0) = "name" then
WScript.StdOut.Write("statistics")
end if
end if
Hope that helps
Thursday, October 2. 2008 at 08:45 (Reply)
I am trying to monitor memory and cpu utilization of Win server 2003, per single process, and I am getting the “Failed to load External plugin” error when I try to load the plugin written in vbs. Plugin is called by the batch file, and the contents of both files for the memory plugin, are given below.
Plugin.bat:
@echo off
call %windir%\system32\cscript.exe //nologo plugin.vbs %1
Plugin.vbs
Option Explicit
Dim strComputer, strProcessName
Dim ObjWMIService, objRefresher, objProcess
Dim strArgument, i, strValue
strComputer = "."
strProcessName = "acrobat"
strProcessName = LCase(strProcessName)
Set ObjWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objRefresher = CreateObject("WbemScripting.SwbemRefresher")
Set objProcess = objRefresher.Add(ObjWMIService, "Win32_PerfFormattedData_PerfProc_Process.Name='" & strProcessName & "'").Object
If WScript.Arguments.Count = 0 Then
Counter
WScript.Quit
Else
strArgument = lcase(WScript.Arguments.Item(0))
End If
Select Case strArgument
Case "name"
Wscript.Echo "WorkingSet"
Case "config"
Wscript.Echo"graph_title ProcessWorkingSet"
Wscript.Echo "graph_category Process"
Wscript.Echo "graph_info Info"
Wscript.Echo "graph_args --upper-limit 100 -l 0"
Wscript.Echo"graph_vlabel %"
Wscript.Echo "strValue.label Acrobat"
Wscript.Echo(".")
Case Else
Counter
End Select
Sub Counter
objRefresher.Refresh
For i = 0 to 1
Select Case i
Case 0
strValue = objProcess.WorkingSet
Wscript.Sleep 1000
objRefresher.Refresh
Case 1
strValue = objProcess.WorkingSet
Wscript.Echo"WorkingSet " & strValue
Wscript.Echo(".")
End Select
Next
All default Munin plugins including Performance counters work fine. I was playing with different script outputs using Wscript.Echo and Wscript.StdOut.Write, with no help.
Could anybody help please?
Thanks.
Tuesday, March 17. 2009 at 09:56 (Reply)
Thursday, July 31. 2008 at 06:11 (Reply)
along with the others in this thread: did anyone get the node running on windows 2000 german? It works, but the memory graph is empty and the system events are telling, that the generic plugins were'nt loaded (uptime etc.). Tryed to recompile but I don't have a working VC++ (the express 2008 does not compile as it seems to miss a stdafx.h file)
Christian
Saturday, November 29. 2008 at 12:15 (Reply)
http://pastebin.ca/1270396
Tuesday, August 19. 2008 at 00:28 (Reply)
i have 8GB+ memory machine which doen't visualize memory status.
so, please fix MemoryMuninNodePlugin::GetConfig() method like blow:
_snprintf(buffer, len,
"graph_args --base 1024 -l 0 --vertical-label Bytes --upper-limit %I64u\n"
"graph_title Memory usage\n"
"graph_category system\n"
"graph_info This graph shows what the machine uses its memory for.\n"
"graph_order apps free swap\n"
"apps.label apps\n"
"apps.draw AREA\n"
"apps.info Memory used by user-space applications.\n"
"swap.label swap\n"
"swap.draw STACK\n"
"swap.info Swap space used.\n"
"free.label unused\n"
"free.draw STACK\n"
"free.info Wasted memory. Memory that is not used for anything at all.\n"
//"committed.label committed\n"
//"committed.draw LINE2\n"
//"committed.warn 625410048\n"
//"committed.info The amount of memory that would be used if all the memory that's been allocated were to be used.\n"
".\n", mem.ullTotalPhys);
and also fix MemoryMuninNodePlugin::GetValues() method like blow:
_snprintf(buffer, len, "apps.value %I64u\n"
"swap.value %I64u\n"
"free.value %I64u\n"
//"committed.value %u\n"
".\n", mem.ullTotalPhys-mem.ullAvailPhys, mem.ullTotalPageFile-mem.ullAvailPageFile, mem.ullAvailPhys);
Friday, August 22. 2008 at 15:09 (Reply)
I tried to get MS SQL server performance counters like so:
Object=SQL Server:General Statistics
Counter=User Sessions
However the event log says this plugin fails to load.
Do I need any particular syntax because of that ":" in the object name? (It's really there according to perfmon).
Any hints appreciated!
Wednesday, August 27. 2008 at 00:06 (Reply)
Surprisingly memory works or works not on xp-boxes.
Since it works on certain machines, i guess i don't have to change munin-node. Looks as it is a config-deal of xp.
Any hints appreciated
Wednesday, August 27. 2008 at 04:25 (Reply)
It's a great piece of software.
After removing the comments. memory worked.
sorry for disturbing
Wednesday, December 17. 2008 at 13:39 (Reply)
Monday, January 26. 2009 at 19:33 (Reply)
I have just installed this and do not have any memory plugin code in the config (ini) file.
Are you or someone else able to post the required pluging code for this please?
Other than that this is working a treat..
Bruski.
Tuesday, September 9. 2008 at 00:46 (Reply)
Tuesday, September 9. 2008 at 01:53 (Reply)
I've got a PC with 4 NICs in it (with 3 disabled) and I would obviously like that the one that I use to be monitored
Monday, September 15. 2008 at 14:55 (Link) (Reply)
Tuesday, September 23. 2008 at 15:54 (Link) (Reply)
the 2 bits of information it is not collecting are:
HDD temperature
and
Memory Usage
I've read comment above about Memory usage. Is there another version around that has been compiled with swap not commented out?
and how do I resolve the HDD temperature missing data?
Thanks
Monday, October 6. 2008 at 03:30 (Reply)
im interested - how to use speed fan to monitor temperatures and other sensors?
Monday, October 6. 2008 at 04:38 (Reply)
when i'm trying to star from services, this appears:
Couldn't start the munin node for windoews 1.5.1942 service on Local Computer.
Error 193: 0xc1
this is when im starting binary file:
C:\Program Files\Munin Node for Windows>munin-node.exe
Service started
Loaded plugin [class DiskMuninNodePlugin]
Loaded plugin [class MemoryMuninNodePlugin]
Loaded plugin [class ProcessesMuninNodePlugin]
Loaded plugin [class NetworkMuninNodePlugin]
Loaded plugin [class MBMMuninNodePlugin]
Loaded plugin [class MBMMuninNodePlugin]
Loaded plugin [class MBMMuninNodePlugin]
Loaded plugin [class MBMMuninNodePlugin]
Loaded plugin [class CpuMuninNodePlugin]
Loaded plugin [class HDMuninNodePlugin]
Error in SpeedFanNodePlugin at JCSocket::Bind(): 10049
Loaded plugin [class SpeedFanNodePlugin]
Failed to load External plugin: C:\TMPDir\plugins\temperature.bat
Loaded plugin [class PerfCounterMuninNodePlugin]
Loaded plugin [class PerfCounterMuninNodePlugin]
Loaded plugin [class PerfCounterMuninNodePlugin]
Starting Server Thread
Server Thread Started
Stopping Server Thread
Tuesday, October 7. 2008 at 03:44 (Reply)
what i need to do?
Thursday, October 9. 2008 at 02:03 (Reply)
i need a litle help!
How to write a plugin which is send to the munin server the win 2003 vpn connect number?
thanks
I can write in linux/unix but the windows can't
Friday, October 31. 2008 at 06:10 (Reply)
Friday, August 7. 2009 at 01:23 (Link) (Reply)
Friday, August 7. 2009 at 05:50 (Reply)
Error Event ID 32 and 59 from SidebySide.
Saturday, August 8. 2009 at 20:10 (Link) (Reply)
Monday, December 1. 2008 at 12:10 (Reply)
Tuesday, December 16. 2008 at 18:20 (Reply)
Monday, December 22. 2008 at 06:09 (Reply)
but i have a problem with the speedfan plugin:
when i normally starts the pc, munin-node starts as as service and speedfan is in my autostart folder.
In this case, munin-node dont works together with speedfan.
But when i restart the munin-node Service all works fine...
I think munin-node test ony once it there is a speedfan client, and at start there is no speedfan client (it starts later)
(Excuse my bad English, normally i speaks German)
Wednesday, January 7. 2009 at 09:16 (Reply)
Wednesday, January 14. 2009 at 08:22 (Reply)
Does anyone can help me makes work the counterPerformance working because i try with french words of counter but it doesn't work
Does anyone can give me an exemple of ini's file working for uptime for example ?
Thnaks a lot ;
Aymeric
Tuesday, May 5. 2009 at 16:49 (Reply)
Question 1
My 2k3 server is not showing HDD?
I have installed the DLL files in the directory of the munin-node.exe file. And when I did LARS per node memory recommendation, memory started to show up. Telnet Fetch only receives a "." for hdd. If this is a incompatibility with the server, that is ok.
Question 2
It looks like "apps" is memory usage and "unused" is page file usage...
Instead of "STACK" ing them, can you "LINE1,2,3" them not stacked?
And naming? apps? unused? Edit for windows to be memory and pagefile...
Any direction would be appreciated
Monday, May 11. 2009 at 23:04 (Reply)
I suspect that the cpu graph isn't looking at all processors (or perhaps is just scaled incorrectly?)
It only goes up to 100 on a quad core, whereas for my other nodes a graph for a quad would go to 400 and a dual to 200.
I also couldn't see how to configure 'allow' lists for the source IP of the munin collector. It seems the install program attempts to configure a windows firewall - but this shouldn't always be assumed to be present on the local machine. The daemon itself should have some connection rejection capability.
Thursday, July 23. 2009 at 02:57 (Reply)
I tried to use exactly our standard line, but nothing happend, system is still open to the rest of the world.
Any Ideas?
Monday, August 24. 2009 at 09:28 (Reply)
many thanks for that tool. It's great!
The first steps are working fine and we are monitoring a lot of except the disks. Our servers are in German and I have problems with the LogicalDisk (in German Logischer Datenträger). I think munin-node is not accepting the ä. Do you have any solution for that?
Many thanks,
Christian
Friday, September 25. 2009 at 10:31 (Reply)
Is this a limitation in the munin node, or can i fix it in the config somehow?
pete
Tuesday, September 29. 2009 at 02:14 (Reply)
The trivial sample I'm trying as a starting point is based on Tilmann's template above -- see http://pastebin.ca/1583890
It would be awesome if someone could post a working example plugin; this is driving me batty. The actual script I'm trying to use calls on Powershell; if I could get the basic sample corrected I should be able to make that work and post it as another example.
Tuesday, September 29. 2009 at 02:24 (Reply)
Thursday, November 5. 2009 at 08:09 (Reply)
the link is broken. Somebody can send it again?
Thanks in advanced.
Ricardo
Monday, April 12. 2010 at 03:47 (Reply)
Can you please show me the example working munin plugin for windows. or any working tutorial where i can able to work on munin. I use powershell and also python which is best to use..
Please give me any working example link.
Thursday, August 5. 2010 at 16:09 (Reply)
import sys
import wmi
import os, msvcrt
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
if len(sys.argv) > 1:
if sys.argv[1] == 'config':
sys.stdout.write("graph_title Number of Notepads\n")
sys.stdout.write("graph_category processes\n")
sys.stdout.write("graph_vlabel Number of Notepads\n")
sys.stdout.write("graph_category User processes\n")
sys.stdout.write("notepad.label Number of Notepads\n")
sys.stdout.write(".\n")
elif sys.argv[1] == 'name':
sys.stdout.write("notepad\n")
else:
c = wmi.WMI()
processes = c.Win32_Process (name="notepad.exe")
sys.stdout.write("notepad.value %d\n" % len(processes))
sys.stdout.write(".\n")
sys.exit(0)
Cheers,
Jorrit
Friday, November 27. 2009 at 02:36 (Reply)
Adrian
Thursday, February 18. 2010 at 03:54 (Reply)
it started, server shows all categories: [ Disk Network Processes Sensors System ]
but NO data on graphs
http://clip2net.com/clip/m3653/1266486739-clip-208kb.jpg
Thursday, February 18. 2010 at 09:43 (Reply)
but NO grahp for memory.
is memjry plugin support removed from binary packeges?? i cant compile in from sources.
Friday, February 19. 2010 at 00:00 (Reply)
This causes the graphing to drop off with "nan" being recorded at the bottom of the graph.
Thursday, July 22. 2010 at 13:31 (Reply)
\\\\Process(sqlservr)% Processor Time
It would be very useful to be able to trend when a know process starts to peak out the boxes capacity
Any suggestions on getting it to work.
----- BEG CONFIG -----
[PerfCounterPlugin_procsqlserver]
DropTotal=1
Object=Process"sqlservr"
Counter=% Processor Time
CounterFormat=double
CounterMultiply=1.000000
GraphTitle=SQLSERVER %Processor Time
GraphCategory=procs
GraphArgs=--base 1000 -l 0
GraphDraw=LINE
----- END CONFIG -----
Wednesday, August 4. 2010 at 10:40 (Link) (Reply)
Just to test it, i made a very simple plugin (.bat) without other usage:
------------------------------------------
@echo off
if "%1"=="name" (
echo vpsx
exit 0
) else if "%1"=="config" (
echo "graph_title vpsx load"
echo "graph_category vpsx"
echo "graph_info This graph shows what the machine uses its memory for."
echo "graph_args --base 1024 -l 0 --vertical-label Bytes --upper-limit 329342976"
echo "vpsx.label vpsx"
echo "vpsx.draw AREA"
echo "citrix.label citrix"
echo "citrix.draw STACK"
echo "graph_vlabel %"
echo "."
exit 0
) ELSE echo vpsx.value 20
---------------------------------
My munin-node.conf:
----------------------------------
[ExternalPlugin]
; For External Plugins just add an entry with the path to the program to run
; It doesn't matter what the name of the name=value pair is
;Plugin01=C:\Program Files\Munin Node for Windows\apache-status.py
;Plugin02=C:\Program Files\Munin Node for Windows\nginx-status.py
vpsx=C:\LRSROOT\vpsxroot\tools\blubb.bat
------------------------------
I can run the Plugin over telnet without problems. I can get the config and fetch for the value.
Now what isn't working is the communication with the munin master:
-bash-3.2$ /usr/share/munin/munin-update --debug --nofork --host emmisrv12105.emmi.ch --service vpsx > /tmp/munin-cron.debug
2010/08/04 17:37:23 [DEBUG] Lock /var/run/munin/munin-update.lock already exists, checking process
2010/08/04 17:37:23 [DEBUG] Lock contained pid '5258'
2010/08/04 17:37:23 [INFO] Process 5258 is dead, stealing lock, removing file
2010/08/04 17:37:23 [DEBUG] Creating new lock file /var/run/munin/munin-update.lock
2010/08/04 17:37:23 [DEBUG] Creating lock : /var/run/munin/munin-update.lock succeeded
2010/08/04 17:37:23 [INFO]: Starting munin-update
2010/08/04 17:37:23 [DEBUG] Lock /var/run/munin/munin-OutputManagement-emmisrv12105.emmi.ch.lock already exists, checking process
2010/08/04 17:37:23 [DEBUG] Lock contained pid '5258'
2010/08/04 17:37:23 [INFO] Process 5258 is dead, stealing lock, removing file
2010/08/04 17:37:23 [DEBUG] Creating new lock file /var/run/munin/munin-OutputManagement-emmisrv12105.emmi.ch.lock
2010/08/04 17:37:23 [DEBUG] Creating lock : /var/run/munin/munin-OutputManagement-emmisrv12105.emmi.ch.lock succeeded
2010/08/04 17:37:23 [DEBUG] Reading from socket to emmisrv12105.emmi.ch: "# munin node at emmisrv12105".
2010/08/04 17:37:23 TLS set to "disabled".
2010/08/04 17:37:23 [DEBUG] Negotiating capabilities
2010/08/04 17:37:23 [DEBUG] Writing to socket: "cap multigraph
".
2010/08/04 17:37:23 [DEBUG] Reading from socket to emmisrv12105.emmi.ch: "# Unknown command. Try list, nodes, config, fetch, version or quit".
2010/08/04 17:37:23 [DEBUG] Writing to socket: "list emmisrv12105.emmi.ch
".
2010/08/04 17:37:23 [DEBUG] Reading from socket to emmisrv12105.emmi.ch: "vpsx disktime processor uptime networkestablished ".
2010/08/04 17:37:23 [DEBUG] Fetching service configuration for 'vpsx'
2010/08/04 17:37:23 [DEBUG] Writing to socket: "config vpsx
and there is not coming any answer until timeout.
Any ideas?