mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-20 14:29:25 -04:00
add more prometheus metrics
Two new metrics: auth_db_connection_duration_seconds (histogram) wraps the first DB call of post notifications. This includes waiting to get a connection from the pool, and also making the actual request to the db to retrieve the service and api keys. (i'm not sure there's an easy way to separate these two things) post_notification_json_parse_duration_seconds wraps parsing the v2 post notifications json parsing and schema validation. Shouldn't include any async code
This commit is contained in:
@@ -7,6 +7,7 @@ from boto.exception import SQSError
|
||||
from flask import request, jsonify, current_app, abort
|
||||
from notifications_utils.postal_address import PostalAddress
|
||||
from notifications_utils.recipients import try_validate_and_format_phone_number
|
||||
from gds_metrics import Histogram
|
||||
|
||||
from app import (
|
||||
api_user,
|
||||
@@ -74,6 +75,12 @@ from app.v2.notifications.notification_schemas import (
|
||||
from app.v2.utils import get_valid_json
|
||||
|
||||
|
||||
POST_NOTIFICATION_JSON_PARSE_DURATION_SECONDS = Histogram(
|
||||
'post_notification_json_parse_duration_seconds',
|
||||
'Time taken to parse and validate post request json',
|
||||
)
|
||||
|
||||
|
||||
@v2_notification_blueprint.route('/{}'.format(LETTER_TYPE), methods=['POST'])
|
||||
def post_precompiled_letter_notification():
|
||||
request_json = get_valid_json()
|
||||
@@ -116,16 +123,17 @@ def post_precompiled_letter_notification():
|
||||
|
||||
@v2_notification_blueprint.route('/<notification_type>', methods=['POST'])
|
||||
def post_notification(notification_type):
|
||||
request_json = get_valid_json()
|
||||
with POST_NOTIFICATION_JSON_PARSE_DURATION_SECONDS.time():
|
||||
request_json = get_valid_json()
|
||||
|
||||
if notification_type == EMAIL_TYPE:
|
||||
form = validate(request_json, post_email_request)
|
||||
elif notification_type == SMS_TYPE:
|
||||
form = validate(request_json, post_sms_request)
|
||||
elif notification_type == LETTER_TYPE:
|
||||
form = validate(request_json, post_letter_request)
|
||||
else:
|
||||
abort(404)
|
||||
if notification_type == EMAIL_TYPE:
|
||||
form = validate(request_json, post_email_request)
|
||||
elif notification_type == SMS_TYPE:
|
||||
form = validate(request_json, post_sms_request)
|
||||
elif notification_type == LETTER_TYPE:
|
||||
form = validate(request_json, post_letter_request)
|
||||
else:
|
||||
abort(404)
|
||||
|
||||
check_service_has_permission(notification_type, authenticated_service.permissions)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user