Added statsd integration into the API

- new client for statsd, follows conventions used elsewhere for configuration
- client wraps underlying library so we can use a config property to send/not send statsd

Added statsd metrics for:
- count of API successful calls SMS/Email
- count of successful task execution for SMS/Email
- count of errors from Client libraries
- timing of API calls to third party clients
- timing of how long messages live on the SQS queue
This commit is contained in:
Martyn Inglis
2016-05-13 17:15:39 +01:00
parent 3c8e45093c
commit 3f7559b286
17 changed files with 234 additions and 74 deletions
+4 -1
View File
@@ -39,11 +39,12 @@ class MMGClient(SmsClient):
MMG sms client
'''
def init_app(self, config, *args, **kwargs):
def init_app(self, config, statsd_client, *args, **kwargs):
super(SmsClient, self).__init__(*args, **kwargs)
self.api_key = config.get('MMG_API_KEY')
self.from_number = config.get('MMG_FROM_NUMBER')
self.name = 'mmg'
self.statsd_client = statsd_client
def get_name(self):
return self.name
@@ -78,8 +79,10 @@ class MMGClient(SmsClient):
api_error.message
)
)
self.statsd_client.incr("notifications.clients.mmg.error")
raise api_error
finally:
elapsed_time = monotonic() - start_time
self.statsd_client.timing("notifications.clients.mmg.request-time", elapsed_time)
current_app.logger.info("MMG request finished in {}".format(elapsed_time))
return response