mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Initial version
This commit is contained in:
parent
bc9442d320
commit
23409cd63a
1 changed files with 61 additions and 0 deletions
61
plugins/other/monit_parser
Executable file
61
plugins/other/monit_parser
Executable file
|
@ -0,0 +1,61 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
# Monit status parser plugin for munin
|
||||||
|
|
||||||
|
# This is very raw, but it should work for you out of the box. You of course
|
||||||
|
# need to have monit configured such that the 'monit status' command works.
|
||||||
|
|
||||||
|
# Todd Troxell <ttroxell@debian.org>
|
||||||
|
|
||||||
|
STATUS_CMD = "monit status"
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
from commands import getstatusoutput
|
||||||
|
|
||||||
|
def sanitize(s):
|
||||||
|
OK_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789"
|
||||||
|
out = str()
|
||||||
|
for char in s:
|
||||||
|
if char.lower() in OK_CHARS:
|
||||||
|
out += char
|
||||||
|
return out
|
||||||
|
|
||||||
|
procs = dict()
|
||||||
|
|
||||||
|
status, output = getstatusoutput(STATUS_CMD)
|
||||||
|
if status != 0:
|
||||||
|
print "Errror running status command: %s" % (output)
|
||||||
|
sys.exit(status)
|
||||||
|
|
||||||
|
output = output.split('\n')
|
||||||
|
cur_proc = None
|
||||||
|
for line in output:
|
||||||
|
m = re.match("^Process '(.*)'.*$", line)
|
||||||
|
if m:
|
||||||
|
cur_proc = sanitize(m.group(1))
|
||||||
|
try:
|
||||||
|
procs[cur_proc]
|
||||||
|
except KeyError:
|
||||||
|
procs[cur_proc] = dict()
|
||||||
|
continue
|
||||||
|
m = re.match(" memory kilobytes total\s+([0-9]+).*$", line)
|
||||||
|
if m:
|
||||||
|
procs[cur_proc]["total_memory"] = m.group(1)
|
||||||
|
continue
|
||||||
|
m = re.match(" cpu percent total\s+([.0-9]+)%.*$", line)
|
||||||
|
if m:
|
||||||
|
procs[cur_proc]["total_cpu"] = m.group(1)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if len(sys.argv) > 1 and sys.argv[1] == 'config':
|
||||||
|
print 'graph_title Per process stats from Monit'
|
||||||
|
print 'graph_vlabel numbers'
|
||||||
|
print 'graph_category monit'
|
||||||
|
for process in procs:
|
||||||
|
for stat in procs[process]:
|
||||||
|
print "monit_%s_%s.label %s.%s" % (process, stat, process, stat)
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
for process in procs:
|
||||||
|
for stat in procs[process]:
|
||||||
|
print "monit_%s_%s.value %s" % (process, stat, procs[process][stat])
|
Loading…
Reference in a new issue