Skip to content
Snippets Groups Projects
Commit 1ffb347b authored by Erik Reid's avatar Erik Reid
Browse files

draft eumet-mc check provisioning (untested)

parent 68644b57
No related branches found
No related tags found
No related merge requests found
...@@ -36,12 +36,19 @@ _DEFAULT_CONFIG = { ...@@ -36,12 +36,19 @@ _DEFAULT_CONFIG = {
'gws-direct-interface-check': { 'gws-direct-interface-check': {
'script': '/var/lib/sensu/bin/poll-gws-direct.sh', 'script': '/var/lib/sensu/bin/poll-gws-direct.sh',
'measurement': 'gwsd_counters', 'measurement': 'gwsd_counters',
'command': '{script} {measurement} {nren} {isp} {hostname} {tag}' 'command': '{script} --inventory http://localhost:18080'
' {measurement} {nren} {isp} {hostname} {tag}'
}, },
'dscp32-service-check': { 'dscp32-service-check': {
'script': '/var/lib/sensu/bin/poll-gws-indirect.sh', 'script': '/var/lib/sensu/bin/poll-gws-indirect.sh',
'measurement': 'dscp32_counters', 'measurement': 'dscp32_counters',
'command': '{script} {measurement} {service}' 'command': '{script} {measurement} {service}'
},
'eumetsat-multicast-check': {
'script': '/home/brian_checks/venv/eumetsat-multicast',
'measurement': 'multicast',
'command': '{script} --inventory http://localhost:18080'
' --measurement {measurement} --hostname {hostname}'
} }
}, },
'statedir': '/tmp/', 'statedir': '/tmp/',
...@@ -75,16 +82,21 @@ CONFIG_SCHEMA = { ...@@ -75,16 +82,21 @@ CONFIG_SCHEMA = {
'minItems': 1 'minItems': 1
}, },
'api-key': {'type': 'string'}, 'api-key': {'type': 'string'},
'interface-check': {'$ref': '#/definitions/influx-check'}, 'interface-check':
{'$ref': '#/definitions/influx-check'},
'gws-direct-interface-check': 'gws-direct-interface-check':
{'$ref': '#/definitions/influx-check'}, {'$ref': '#/definitions/influx-check'},
'dscp32-service-check': {'$ref': '#/definitions/influx-check'}, 'dscp32-service-check':
{'$ref': '#/definitions/influx-check'},
'eumetsat-multicast-check':
{'$ref': '#/definitions/influx-check'},
}, },
'required': [ 'required': [
'api-base', 'api-key', 'api-base', 'api-key',
'interface-check', 'interface-check',
'gws-direct-interface-check', 'gws-direct-interface-check',
'dscp32-service-check'], 'dscp32-service-check',
'eumetsat-multicast-check'],
'additionalProperties': False 'additionalProperties': False
}, },
'statsd': { 'statsd': {
......
from brian_polling_manager import sensu
def load_eumetsat_multicast_checks(sensu_params):
def _is_eumetsat_multicast_check(check):
name = check['metadata']['name']
return name.startswith('eumetmc')
ifc_checks = filter(
_is_eumetsat_multicast_check, sensu.load_all_checks(sensu_params))
return {c['metadata']['name']: c for c in ifc_checks}
class EUMETSATMulticastHostCheck(sensu.AbstractCheck):
def __init__(self, check_config, hostname):
super().__init__()
self.check_config = check_config
self.hostname = hostname
@sensu.AbstractCheck.name.getter
def name(self):
return f'eumetmc-{self.hostname}'
@sensu.AbstractCheck.command.getter
def command(self):
return self.check_config['command'].format(
script=self.check_config['script'],
measurement=self.check_config['measurement'],
hostname=self.hostname)
@sensu.AbstractCheck.proxy_entity_name.getter
def proxy_entity_name(self):
return self.hostname
def refresh(sensu_params, eumetsat_multicast_config):
# one check per unique host
all_routers = {x['router'] for x in eumetsat_multicast_config}
required_checks = [
EUMETSATMulticastHostCheck(
sensu_params['eumetsat-multicast-check'], hostname)
for hostname in all_routers]
return sensu.refresh(
sensu_params,
required_checks,
load_eumetsat_multicast_checks(sensu_params))
...@@ -30,7 +30,7 @@ import jsonschema ...@@ -30,7 +30,7 @@ import jsonschema
from statsd import StatsClient from statsd import StatsClient
from brian_polling_manager import inventory, configuration, \ from brian_polling_manager import inventory, configuration, \
interfaces, gws_direct, gws_indirect, sensu interfaces, gws_direct, gws_indirect, eumetsat_multicast, sensu
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -90,6 +90,9 @@ def refresh(config, force=False): ...@@ -90,6 +90,9 @@ def refresh(config, force=False):
'gws_direct': gws_direct.refresh(config['sensu'], state.gws_direct), 'gws_direct': gws_direct.refresh(config['sensu'], state.gws_direct),
'gws_indirect': gws_indirect.refresh( 'gws_indirect': gws_indirect.refresh(
config['sensu'], state.gws_indirect), config['sensu'], state.gws_indirect),
'eumetsat_multicast': eumetsat_multicast.refresh(
config['sensu'], state.eumetsat_multicast),
} }
jsonschema.validate(result, REFRESH_RESULT_SCHEMA) # sanity jsonschema.validate(result, REFRESH_RESULT_SCHEMA) # sanity
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment