diff --git a/libra/statsd/drivers/base.py b/libra/statsd/drivers/base.py index f61a4be1..483c19ba 100644 --- a/libra/statsd/drivers/base.py +++ b/libra/statsd/drivers/base.py @@ -13,14 +13,15 @@ known_drivers = { 'dummy': 'libra.statsd.drivers.dummy.driver.DummyDriver', - 'datadog': 'libra.statsd.driver.dummy.driver.DatadogDriver', - 'hp_rest': 'libra.statsd.driver.hp_rest.driver.HPRestDriver' + 'datadog': 'libra.statsd.drivers.datadog.driver.DatadogDriver', + 'hp_rest': 'libra.statsd.drivers.hp_rest.driver.HPRestDriver' } class AlertDriver(object): - def __init__(self, logger): + def __init__(self, logger, args): self.logger = logger + self.args = args def send_alert(self, message, device_id): raise NotImplementedError() diff --git a/libra/statsd/drivers/datadog/driver.py b/libra/statsd/drivers/datadog/driver.py index 3d84431a..1963baea 100644 --- a/libra/statsd/drivers/datadog/driver.py +++ b/libra/statsd/drivers/datadog/driver.py @@ -16,12 +16,15 @@ from dogapi import dog_http_api as api class DatadogDriver(AlertDriver): - def send_alert(self, message): - api.api_key = self.args.datadog_apikey - api.application_key = self.args.datadog_appkey + def send_alert(self, message, device_id): + api.api_key = self.args.datadog_api_key + api.application_key = self.args.datadog_app_key title = 'Load balancer failure' text = 'Load balancer failed with message {0} {1}'.format( message, self.args.datadog_message_tail ) tags = self.args.datadog_tags.split() - api.event_with_response(title, text, tags=tags, alert_type='error') + resp = api.event_with_response( + title, text, tags=tags, alert_type='error' + ) + self.logger.info('Datadog alert response: {0}'.format(resp)) diff --git a/libra/statsd/scheduler.py b/libra/statsd/scheduler.py index 34ed598b..9a051ea4 100644 --- a/libra/statsd/scheduler.py +++ b/libra/statsd/scheduler.py @@ -102,7 +102,12 @@ class Sched(object): ) ) for driver in self.drivers: - instance = driver(self.logger) + instance = driver(self.logger, self.args) + self.logger.info( + 'Sending failure of {0} to {1}'.format( + node, instance.__class__.__name__ + ) + ) instance.send_alert(message, data['id']) def _get_node(self, node, node_list): diff --git a/requirements.txt b/requirements.txt index 049e4796..08b9775b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,3 +5,4 @@ python-daemon>=1.6 python_novaclient>=2.11.1 python_swiftclient>=1.3.0 requests>=1.0.0 +dogapi