- Repository
- Munin (contrib)
- Last change
- 2020-11-26
- Graph Categories
- Family
- auto
- Capabilities
- Keywords
- Language
- Python (3.x)
- Authors
nova_services
Name
nova_services - report nova service status
Configuration
Needs following minimal configuration in plugin-conf.d/nova:
[nova_*]
user nova
Authors
Copyright 2012 Mehdi Abaakouk sileht@sileht.net
Magic Markers
#%# capabilities=autoconf
#%# family=auto
#!/usr/bin/env python3
"""
=head1 NAME
nova_services - report nova service status
=head1 CONFIGURATION
Needs following minimal configuration in plugin-conf.d/nova:
[nova_*]
user nova
=head1 AUTHORS
Copyright 2012 Mehdi Abaakouk <sileht@sileht.net>
=head1 MAGIC MARKERS
#%# capabilities=autoconf
#%# family=auto
=cut
"""
import sys
try:
from nova import context, db, flags, utils
except ImportError:
successful_import = False
else:
successful_import = True
services = [
'nova-compute',
'nova-volume',
'nova-scheduler',
'nova-vncproxy',
'nova-network',
'nova-cert',
'nova-console',
'nova-consoleauth',
]
def print_config():
print('graph_title Nova Services')
print('graph_vlabel qty')
print('graph_args --base 1000 --lower-limit 0')
print('graph_category cloud')
print('graph_scale no')
print('graph_info Nova services - alive and active')
for service in services:
print('%s_alive.label %s alive' % (service, service))
print('%s_alive.draw LINE2' % service)
print('%s_alive.info seen in last 30 seconds' % service)
print('%s_active.label %s active' % (service, service))
print('%s_active.draw LINE2' % service)
print('%s_active.info alive and enabled' % service)
def get_status():
global services
alive = {}
active = {}
for k in services:
alive[k] = 0
active[k] = 0
ctxt = context.get_admin_context()
now = utils.utcnow()
services = db.service_get_all(ctxt)
for svc in services:
delta = now - (svc['updated_at'] or svc['created_at'])
if (delta.seconds <= 30):
alive[svc['binary']] += 1
if not svc['disabled']:
active[svc['binary']] += 1
return {'alive': alive, 'active': active}
def print_values():
status = get_status()
for (state, value) in status['alive'].items():
print("%s_alive.value %s" % (state, value))
for (state, value) in status['active'].items():
print("%s_active.value %s" % (state, value))
if __name__ == '__main__':
if len(sys.argv) > 1:
if sys.argv[1] == "config":
print_config()
elif sys.argv[1] == "autoconf":
if not successful_import:
print('no (failed import nova module]')
else:
print('yes')
elif successful_import:
utils.default_flagfile()
flags.FLAGS(sys.argv)
print_values()