From 0bc48897f31024fa679d0190937e5de7bc02d8fa Mon Sep 17 00:00:00 2001 From: Martyn Inglis Date: Thu, 1 Dec 2016 17:21:06 +0000 Subject: [PATCH] Adds statsd to the application - statsd client from utils - adds to logger an get same method based reporting as we do for the API. --- app/__init__.py | 6 +++++- config.py | 16 ++++++++++++++++ environment_test.sh | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/__init__.py b/app/__init__.py index d6e37e6a4..77a471f95 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -26,6 +26,7 @@ from functools import partial from notifications_python_client.errors import HTTPError from notifications_utils import logging, request_id +from notifications_utils.clients.statsd.statsd_client import StatsdClient from notifications_utils.recipients import validate_phone_number, InvalidPhoneError from pygments import highlight from pygments.formatters.html import HtmlFormatter @@ -63,6 +64,7 @@ events_api_client = EventsApiClient() provider_client = ProviderClient() organisations_client = OrganisationsClient() asset_fingerprinter = AssetFingerprinter() +statsd_client = StatsdClient() # The current service attached to the request stack. current_service = LocalProxy(partial(_lookup_req_object, 'service')) @@ -76,7 +78,8 @@ def create_app(): application.config.from_object(configs[os.environ['NOTIFY_ENVIRONMENT']]) init_app(application) - logging.init_app(application) + statsd_client.init_app(application) + logging.init_app(application, statsd_client) init_csrf(application) request_id.init_app(application) @@ -164,6 +167,7 @@ def init_app(application): @application.before_request def record_start_time(): g.start = monotonic() + g.endpoint = request.endpoint @application.context_processor def inject_global_template_variables(): diff --git a/config.py b/config.py index 0eaea31c4..9dfaa0d5c 100644 --- a/config.py +++ b/config.py @@ -9,6 +9,8 @@ class Config(object): DANGEROUS_SALT = os.environ['DANGEROUS_SALT'] DESKPRO_API_HOST = os.environ['DESKPRO_API_HOST'] DESKPRO_API_KEY = os.environ['DESKPRO_API_KEY'] + # Hosted graphite statsd prefix + STATSD_PREFIX = os.getenv('STATSD_PREFIX') DESKPRO_DEPT_ID = 5 DESKPRO_ASSIGNED_AGENT_TEAM_ID = 5 @@ -43,6 +45,11 @@ class Config(object): ACTIVITY_STATS_LIMIT_DAYS = 7 TEST_MESSAGE_FILENAME = 'Test message' + STATSD_ENABLED = False + STATSD_HOST = "statsd.hostedgraphite.com" + STATSD_PORT = 8125 + NOTIFY_ENVIRONMENT = 'development' + EMAIL_DOMAIN_REGEXES = [ r"gov\.uk", r"mod\.uk", @@ -71,32 +78,41 @@ class Development(Config): SESSION_COOKIE_SECURE = False WTF_CSRF_ENABLED = False SESSION_PROTECTION = None + STATSD_ENABLED = True CSV_UPLOAD_BUCKET_NAME = 'development-notifications-csv-upload' class Test(Development): DEBUG = True + STATSD_ENABLED = True CSV_UPLOAD_BUCKET_NAME = 'test-notifications-csv-upload' + NOTIFY_ENVIRONMENT = 'test' class Preview(Config): HTTP_PROTOCOL = 'https' HEADER_COLOUR = '#F499BE' # $baby-pink + STATSD_ENABLED = True CSV_UPLOAD_BUCKET_NAME = 'preview-notifications-csv-upload' + NOTIFY_ENVIRONMENT = 'preview' class Staging(Config): SHOW_STYLEGUIDE = False HTTP_PROTOCOL = 'https' HEADER_COLOUR = '#6F72AF' # $mauve + STATSD_ENABLED = True CSV_UPLOAD_BUCKET_NAME = 'staging-notify-csv-upload' + NOTIFY_ENVIRONMENT = 'staging' class Live(Config): SHOW_STYLEGUIDE = False HEADER_COLOUR = '#005EA5' # $govuk-blue HTTP_PROTOCOL = 'https' + STATSD_ENABLED = True CSV_UPLOAD_BUCKET_NAME = 'live-notifications-csv-upload' + NOTIFY_ENVIRONMENT = 'live' configs = { diff --git a/environment_test.sh b/environment_test.sh index 0e781fb34..18f0add28 100644 --- a/environment_test.sh +++ b/environment_test.sh @@ -5,3 +5,4 @@ export DANGEROUS_SALT='dev-notify-salt' export SECRET_KEY='dev-notify-secret-key' export DESKPRO_API_HOST="" export DESKPRO_API_KEY="" +export STATSD_PREFIX="stats-prefix"