mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-21 18:41:03 +00:00
Add nova and keystone plugin for openstack essex
This commit is contained in:
parent
bda7b6ea64
commit
22fbe167af
6 changed files with 452 additions and 0 deletions
91
plugins/keystone/keystone_stats
Executable file
91
plugins/keystone/keystone_stats
Executable file
|
@ -0,0 +1,91 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# Plugin to monitor status of Keystone
|
||||
#
|
||||
# Needs following minimal configuration in plugin-conf.d/keystone:
|
||||
# [keystone_*]
|
||||
# user keystone
|
||||
#
|
||||
# Magic markers
|
||||
#%# capabilities=autoconf
|
||||
#%# family=keystone
|
||||
|
||||
import sys
|
||||
|
||||
from keystone.common import utils
|
||||
from keystone import config
|
||||
from keystone import exception
|
||||
from keystone import identity
|
||||
|
||||
CONF = config.CONF
|
||||
|
||||
stats = ['users', 'tenants']
|
||||
|
||||
|
||||
def print_config():
|
||||
global states
|
||||
print 'graph_title Keystone Stats'
|
||||
print 'graph_vlabel count'
|
||||
print 'graph_args --base 1000 --lower-limit 0'
|
||||
print 'graph_category keystone'
|
||||
print 'graph_scale no'
|
||||
print 'graph_info This graph shows stats about keystone: ' + (', ').join(stats)
|
||||
for field in stats:
|
||||
print '%s_enabled.label enabled %s' % (field, field)
|
||||
print '%s_enabled.draw LINE2' % field
|
||||
print '%s_enabled.info %s enabled' % (field, field)
|
||||
print '%s_total.label total %s' % (field, field)
|
||||
print '%s_total.draw LINE2' % field
|
||||
print '%s_total.info %s total' % (field, field)
|
||||
|
||||
|
||||
def get_status():
|
||||
enabled = {}
|
||||
total = {}
|
||||
for k in stats:
|
||||
enabled[k] = 0
|
||||
total[k] = 0
|
||||
|
||||
identity_api = identity.Manager()
|
||||
|
||||
for user in identity_api.list_users(None):
|
||||
total['users'] += 1
|
||||
if user['enabled']:
|
||||
enabled['users'] += 1
|
||||
|
||||
# Ldap and pam driver don't support get_all_tenants()
|
||||
# kvs and sql implement get_tenants() instead of get_all_tenants()
|
||||
# Whoo: None of backend implements the correct function
|
||||
tenants = []
|
||||
for api_func in [ 'get_all_tenants', 'get_tenants']:
|
||||
try:
|
||||
tenants = getattr(identity_api, api_func)(None)
|
||||
except exception.NotImplemented, NotImplementedError:
|
||||
pass
|
||||
|
||||
|
||||
for tenant in tenants:
|
||||
total['tenants'] += 1
|
||||
if tenant['enabled']:
|
||||
enabled['tenants'] += 1
|
||||
|
||||
return {'enabled': enabled, 'total': total}
|
||||
|
||||
|
||||
def print_values():
|
||||
stats = get_status()
|
||||
for state in stats.keys():
|
||||
for (field, value) in stats[state].iteritems():
|
||||
print "%s_%s.value %s" % (field, state, value)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) > 1:
|
||||
if sys.argv[1] == "config":
|
||||
print_config()
|
||||
elif sys.argv[1] == "autoconf":
|
||||
print "yes"
|
||||
else:
|
||||
CONF(config_files=[utils.find_config('keystone.conf')])
|
||||
print_values()
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue