diff --git a/.env.example b/.env.example index 13c1e64..58eb7b3 100644 --- a/.env.example +++ b/.env.example @@ -58,3 +58,6 @@ SERVALA_KEYCLOAK_SERVER_URL='' # SERVALA_S3_REGION_NAME='eu-central-1' # SERVALA_S3_ADDRESSING_STYLE='virtual' # SERVALA_S3_SIGNATURE_VERSION='s3v4' + +# Configuration for Sentry error reporting +SERVALA_SENTRY_DSN='' \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 0d9b8fd..8c10259 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ dependencies = [ "pyjwt>=2.10.1", "requests>=2.32.3", "rules>=3.5", + "sentry-sdk[django]>=2.29.1", "urlman>=2.0.2", ] diff --git a/src/servala/settings.py b/src/servala/settings.py index 046c468..42f1021 100644 --- a/src/servala/settings.py +++ b/src/servala/settings.py @@ -10,9 +10,12 @@ Servala is run using environment variables. Documentation: """ import os +import sentry_sdk from pathlib import Path +from sentry_sdk.integrations.django import DjangoIntegration from django.contrib import messages +from servala.__about__ import __version__ as version SERVALA_ENVIRONMENT = os.environ.get("SERVALA_ENVIRONMENT", "development") DEBUG = SERVALA_ENVIRONMENT == "development" @@ -254,3 +257,13 @@ TIME_ZONE = "UTC" if SERVALA_ENVIRONMENT in ("staging", "production"): SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") + +SERVALA_SENTRY_DSN = os.environ.get("SERVALA_SENTRY_DSN") +sentry_sdk.init( + dsn=SERVALA_SENTRY_DSN, + integrations=[DjangoIntegration()], + auto_session_tracking=False, + traces_sample_rate=0.01, + release=version, + environment=SERVALA_ENVIRONMENT, +) diff --git a/uv.lock b/uv.lock index 9bd8b69..148ac2c 100644 --- a/uv.lock +++ b/uv.lock @@ -893,6 +893,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ea/33/16213dd62ca8ce8749985318a966ac1300ab55c977b2d66632a45b405c99/rules-3.5-py2.py3-none-any.whl", hash = "sha256:0f00fc9ee448b3f82e9aff9334ab0c56c76dce4dfa14f1598f57969f1022acc0", size = 25658, upload-time = "2024-09-02T16:01:44.844Z" }, ] +[[package]] +name = "sentry-sdk" +version = "2.29.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/67/d552a5f8e5a6a56b2feea6529e2d8ccd54349084c84176d5a1f7295044bc/sentry_sdk-2.29.1.tar.gz", hash = "sha256:8d4a0206b95fa5fe85e5e7517ed662e3888374bdc342c00e435e10e6d831aa6d", size = 325518, upload-time = "2025-05-19T14:27:38.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/e5/da07b0bd832cefd52d16f2b9bbbe31624d57552602c06631686b93ccb1bd/sentry_sdk-2.29.1-py2.py3-none-any.whl", hash = "sha256:90862fe0616ded4572da6c9dadb363121a1ae49a49e21c418f0634e9d10b4c19", size = 341553, upload-time = "2025-05-19T14:27:36.882Z" }, +] + +[package.optional-dependencies] +django = [ + { name = "django" }, +] + [[package]] name = "servala" version = "0.0.0" @@ -913,6 +931,7 @@ dependencies = [ { name = "pyjwt" }, { name = "requests" }, { name = "rules" }, + { name = "sentry-sdk", extra = ["django"] }, { name = "urlman" }, ] @@ -948,6 +967,7 @@ requires-dist = [ { name = "pyjwt", specifier = ">=2.10.1" }, { name = "requests", specifier = ">=2.32.3" }, { name = "rules", specifier = ">=3.5" }, + { name = "sentry-sdk", extras = ["django"], specifier = ">=2.29.1" }, { name = "urlman", specifier = ">=2.0.2" }, ]