diff --git a/application.py b/application.py index 1393b882f..6fb8039eb 100644 --- a/application.py +++ b/application.py @@ -1,7 +1,20 @@ +import os + +import sentry_sdk from flask import Flask +from sentry_sdk.integrations.flask import FlaskIntegration from app import create_app +sentry_sdk.init( + dsn=os.environ['SENTRY_DSN'], + integrations=[FlaskIntegration()], + environment=os.environ['NOTIFY_ENVIRONMENT'], + attach_stacktrace=True, + traces_sample_rate=0.00005 # avoid exceeding rate limits in Production +) +sentry_sdk.set_level('error') # only record error logs or exceptions + application = Flask('app') create_app(application) diff --git a/requirements.in b/requirements.in index 1150ae49b..4fff805c3 100644 --- a/requirements.in +++ b/requirements.in @@ -41,3 +41,5 @@ cryptography<3.4 # pyup: ignore # version 0.10.0 introduced exceptions when workers crashed due to deprecating lower case `prometheus_multiproc_dir`. prometheus-client>=0.9.0,!=0.10.0 gds-metrics==0.2.4 + +sentry-sdk[flask] diff --git a/requirements.txt b/requirements.txt index fe4e0f9f3..7bbe71e87 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,6 +18,7 @@ blinker==1.4 # via # -r requirements.in # gds-metrics + # sentry-sdk boto3==1.17.84 # via notifications-utils botocore==1.20.84 @@ -31,6 +32,7 @@ certifi==2021.5.30 # via # pyproj # requests + # sentry-sdk cffi==1.14.5 # via cryptography chardet==4.0.0 @@ -65,6 +67,7 @@ flask==1.1.2 # flask-wtf # gds-metrics # notifications-utils + # sentry-sdk flask-login==0.5.0 # via -r requirements.in flask-redis==0.4.0 @@ -198,6 +201,8 @@ s3transfer==0.4.2 # via # awscli # boto3 +sentry-sdk[flask]==1.5.1 + # via -r requirements.in shapely==1.7.1 # via # -r requirements.in @@ -221,6 +226,7 @@ urllib3==1.26.5 # via # botocore # requests + # sentry-sdk webencodings==0.5.1 # via bleach werkzeug==2.0.2