Changeset - dd8aa60ca857
[Not reviewed]
0 1 0
HanzZ - 13 years ago 2012-09-11 10:29:28
hanzz.k@gmail.com
Updated munin
1 file changed with 5 insertions and 0 deletions:
0 comments (0 inline, 0 general)
munin/spectrum2_
Show inline comments
 
modified file chmod 100755 => 100644
 
@@ -65,96 +65,101 @@
 
#%# capabilities=autoconf suggest
 

	
 
import sys
 
from subprocess import *
 

	
 
# autoconf and suggest handling:
 
if len( sys.argv ) > 1:
 
	if sys.argv[1] == 'autoconf':
 
		print( 'yes' )
 
		sys.exit( 0 )
 
	elif sys.argv[1] == 'suggest':
 
		print( """uptime
 
registered
 
online
 
contacts_total
 
contacts_online
 
messages
 
messages_sec
 
memory""" )
 
		sys.exit(0)
 

	
 
import os, re
 

	
 
# filter forbidden characters for munin fieldnames
 
def handle_field( string ):
 
	for regexp in [ '^[^A-Za-z_]', '[^A-Za-z0-9_]' ]:
 
		string = re.compile( regexp ).sub( '_', string )
 
	return string
 

	
 
# get runtime variables
 
suffix = sys.argv[0].partition('_')[2]
 
verbose = os.environ.get( 'verbose' )
 
proc = Popen(['spectrum2_manager', 'list'], stdout=PIPE, stderr=PIPE)
 
out, err = proc.communicate()
 
jids = out.split('\n')[:-1]
 

	
 
# set variables based on wildcard 
 
if suffix == 'uptime':
 
	stat = { 'uptime': None }
 
	title = "Uptime"
 
	vlabel = "days"
 
	info = ''
 
	transformer = lambda value: float(value)/60.0/60.0/24.0
 
elif suffix == 'backends_count':
 
	stat = { "backends_count": None }
 
	title = "Backends count"
 
	vlabel = "backends"
 
	info = 'Total number of backends.'
 
elif suffix == 'crashed_backends_count':
 
	stat = { "crashed_backends_count": None }
 
	title = "Crashed backends count"
 
	vlabel = "backends"
 
	info = 'Total number of backends.'
 
elif suffix == 'online':
 
	stat = { 'online_users_count': None }
 
	title = "Online users"
 
	vlabel = "users"
 
	info = 'Number of users that currently use the spectrum transports.'
 
elif suffix == 'messages':
 
	stat = { 'messages_from_xmpp': 'from_xmpp', 'messages_to_xmpp': 'to_xmpp' }
 
	title = "Messages send over transport"
 
	vlabel = "messages"
 
	info = 'Total messages send over spectrum since the last restart.'
 
elif suffix == 'messages_sec':
 
	stat = { 'messages_from_xmpp': 'from_xmpp', 'messages_to_xmpp': 'to_xmpp' }
 
	title = "Messages send over transport per second"
 
	vlabel = "messages/sec"
 
	info = 'Messages send per second over spectrum transports.'
 
elif suffix == 'memory':
 
	stat = { 'used_memory': None }
 
	title = "Memory usage of transports"
 
	vlabel = "megabytes"
 
	transformer = lambda value: float(value)/1024.0
 
	info = 'Memory usage of spectrum transports.'
 
elif suffix == 'average_memory_per_user':
 
	stat = { 'average_memory_per_user': None }
 
	title = "Average memory usage per user"
 
	vlabel = "kilobytes"
 
	#transformer = lambda value: float(value)/1024.0
 
	info = 'Memory usage of spectrum transports.'
 

	
 
# handle config
 
if len( sys.argv ) > 1 and sys.argv[1] == 'config':
 
	print( """graph_title %s
 
graph_args --base 1000 -l 0
 
graph_scale no
 
graph_vlabel %s
 
graph_category spectrum2
 
graph_info %s""" %(title, vlabel, info) )
 
	for jid in jids:
 
		if len(stat) > 1: 
 
			# plugin monitors more than one field
 
			label = jid + ' total'
 
			fieldname = handle_field( label )
 
			print( '%s.label %s' %(fieldname, label) )
 
			if suffix == 'messages_sec':
 
				print( '%s.type DERIVE' %(fieldname) )
 
				print( '%s.min 0' %(fieldname) )
 

	
 
			# to not print individual fields if verbose is not set:
 
			if not verbose: 
0 comments (0 inline, 0 general)