root: enable sentry for tests
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
parent
ee36b7f3eb
commit
18f450bd49
|
@ -18,13 +18,22 @@ from redis.exceptions import ConnectionError as RedisConnectionError
|
||||||
from redis.exceptions import RedisError, ResponseError
|
from redis.exceptions import RedisError, ResponseError
|
||||||
from rest_framework.exceptions import APIException
|
from rest_framework.exceptions import APIException
|
||||||
from sentry_sdk import Hub
|
from sentry_sdk import Hub
|
||||||
|
from sentry_sdk import init as sentry_sdk_init
|
||||||
|
from sentry_sdk.api import set_tag
|
||||||
|
from sentry_sdk.integrations.celery import CeleryIntegration
|
||||||
|
from sentry_sdk.integrations.django import DjangoIntegration
|
||||||
|
from sentry_sdk.integrations.redis import RedisIntegration
|
||||||
|
from sentry_sdk.integrations.threading import ThreadingIntegration
|
||||||
from sentry_sdk.tracing import Transaction
|
from sentry_sdk.tracing import Transaction
|
||||||
from structlog.stdlib import get_logger
|
from structlog.stdlib import get_logger
|
||||||
from websockets.exceptions import WebSocketException
|
from websockets.exceptions import WebSocketException
|
||||||
|
|
||||||
from authentik.lib.utils.reflection import class_to_path
|
from authentik import __version__, get_build_hash
|
||||||
|
from authentik.lib.config import CONFIG
|
||||||
|
from authentik.lib.utils.reflection import class_to_path, get_env
|
||||||
|
|
||||||
LOGGER = get_logger()
|
LOGGER = get_logger()
|
||||||
|
SENTRY_DSN = "https://a579bb09306d4f8b8d8847c052d3a1d3@sentry.beryju.org/8"
|
||||||
|
|
||||||
|
|
||||||
class SentryWSMiddleware(BaseMiddleware):
|
class SentryWSMiddleware(BaseMiddleware):
|
||||||
|
@ -43,6 +52,36 @@ class SentryIgnoredException(Exception):
|
||||||
"""Base Class for all errors that are suppressed, and not sent to sentry."""
|
"""Base Class for all errors that are suppressed, and not sent to sentry."""
|
||||||
|
|
||||||
|
|
||||||
|
def sentry_init(**sentry_init_kwargs):
|
||||||
|
"""Configure sentry SDK"""
|
||||||
|
sentry_env = CONFIG.y("error_reporting.environment", "customer")
|
||||||
|
kwargs = {
|
||||||
|
"traces_sample_rate": float(CONFIG.y("error_reporting.sample_rate", 0.5)),
|
||||||
|
"environment": sentry_env,
|
||||||
|
"send_default_pii": CONFIG.y_bool("error_reporting.send_pii", False),
|
||||||
|
}
|
||||||
|
kwargs.update(**sentry_init_kwargs)
|
||||||
|
# pylint: disable=abstract-class-instantiated
|
||||||
|
sentry_sdk_init(
|
||||||
|
dsn=SENTRY_DSN,
|
||||||
|
integrations=[
|
||||||
|
DjangoIntegration(transaction_style="function_name"),
|
||||||
|
CeleryIntegration(),
|
||||||
|
RedisIntegration(),
|
||||||
|
ThreadingIntegration(propagate_hub=True),
|
||||||
|
],
|
||||||
|
before_send=before_send,
|
||||||
|
release=f"authentik@{__version__}",
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
set_tag("authentik.build_hash", get_build_hash("tagged"))
|
||||||
|
set_tag("authentik.env", get_env())
|
||||||
|
set_tag("authentik.component", "backend")
|
||||||
|
LOGGER.info(
|
||||||
|
"Error reporting is enabled",
|
||||||
|
env=kwargs["environment"],
|
||||||
|
)
|
||||||
|
|
||||||
def before_send(event: dict, hint: dict) -> Optional[dict]:
|
def before_send(event: dict, hint: dict) -> Optional[dict]:
|
||||||
"""Check if error is database error, and ignore if so"""
|
"""Check if error is database error, and ignore if so"""
|
||||||
# pylint: disable=no-name-in-module
|
# pylint: disable=no-name-in-module
|
||||||
|
@ -108,6 +147,6 @@ def before_send(event: dict, hint: dict) -> Optional[dict]:
|
||||||
]:
|
]:
|
||||||
return None
|
return None
|
||||||
LOGGER.debug("sending event to sentry", exc=exc_value, source_logger=event.get("logger", None))
|
LOGGER.debug("sending event to sentry", exc=exc_value, source_logger=event.get("logger", None))
|
||||||
if settings.DEBUG or settings.TEST:
|
if settings.DEBUG:
|
||||||
return None
|
return None
|
||||||
return event
|
return event
|
||||||
|
|
|
@ -11,18 +11,13 @@ from urllib.parse import quote_plus
|
||||||
|
|
||||||
import structlog
|
import structlog
|
||||||
from celery.schedules import crontab
|
from celery.schedules import crontab
|
||||||
from sentry_sdk import init as sentry_init
|
from sentry_sdk import set_tag
|
||||||
from sentry_sdk.api import set_tag
|
|
||||||
from sentry_sdk.integrations.celery import CeleryIntegration
|
|
||||||
from sentry_sdk.integrations.django import DjangoIntegration
|
|
||||||
from sentry_sdk.integrations.redis import RedisIntegration
|
|
||||||
from sentry_sdk.integrations.threading import ThreadingIntegration
|
|
||||||
|
|
||||||
from authentik import ENV_GIT_HASH_KEY, __version__, get_build_hash
|
from authentik import ENV_GIT_HASH_KEY, __version__
|
||||||
from authentik.core.middleware import structlog_add_request_id
|
from authentik.core.middleware import structlog_add_request_id
|
||||||
from authentik.lib.config import CONFIG
|
from authentik.lib.config import CONFIG
|
||||||
from authentik.lib.logging import add_process_id
|
from authentik.lib.logging import add_process_id
|
||||||
from authentik.lib.sentry import before_send
|
from authentik.lib.sentry import sentry_init
|
||||||
from authentik.lib.utils.reflection import get_env
|
from authentik.lib.utils.reflection import get_env
|
||||||
from authentik.stages.password import BACKEND_APP_PASSWORD, BACKEND_INBUILT, BACKEND_LDAP
|
from authentik.stages.password import BACKEND_APP_PASSWORD, BACKEND_INBUILT, BACKEND_LDAP
|
||||||
|
|
||||||
|
@ -357,34 +352,13 @@ CELERY_RESULT_BACKEND = (
|
||||||
)
|
)
|
||||||
|
|
||||||
# Sentry integration
|
# Sentry integration
|
||||||
SENTRY_DSN = "https://a579bb09306d4f8b8d8847c052d3a1d3@sentry.beryju.org/8"
|
|
||||||
|
|
||||||
env = get_env()
|
env = get_env()
|
||||||
_ERROR_REPORTING = CONFIG.y_bool("error_reporting.enabled", False)
|
_ERROR_REPORTING = CONFIG.y_bool("error_reporting.enabled", False)
|
||||||
if _ERROR_REPORTING:
|
if _ERROR_REPORTING:
|
||||||
# pylint: disable=abstract-class-instantiated
|
sentry_env = CONFIG.y("error_reporting.environment", "customer")
|
||||||
sentry_init(
|
sentry_init()
|
||||||
dsn=SENTRY_DSN,
|
|
||||||
integrations=[
|
|
||||||
DjangoIntegration(transaction_style="function_name"),
|
|
||||||
CeleryIntegration(),
|
|
||||||
RedisIntegration(),
|
|
||||||
ThreadingIntegration(propagate_hub=True),
|
|
||||||
],
|
|
||||||
before_send=before_send,
|
|
||||||
release=f"authentik@{__version__}",
|
|
||||||
traces_sample_rate=float(CONFIG.y("error_reporting.sample_rate", 0.5)),
|
|
||||||
environment=CONFIG.y("error_reporting.environment", "customer"),
|
|
||||||
send_default_pii=CONFIG.y_bool("error_reporting.send_pii", False),
|
|
||||||
)
|
|
||||||
set_tag("authentik.build_hash", get_build_hash("tagged"))
|
|
||||||
set_tag("authentik.env", env)
|
|
||||||
set_tag("authentik.component", "backend")
|
|
||||||
set_tag("authentik.uuid", sha512(str(SECRET_KEY).encode("ascii")).hexdigest()[:16])
|
set_tag("authentik.uuid", sha512(str(SECRET_KEY).encode("ascii")).hexdigest()[:16])
|
||||||
j_print(
|
|
||||||
"Error reporting is enabled",
|
|
||||||
env=CONFIG.y("error_reporting.environment", "customer"),
|
|
||||||
)
|
|
||||||
|
|
||||||
# Static files (CSS, JavaScript, Images)
|
# Static files (CSS, JavaScript, Images)
|
||||||
# https://docs.djangoproject.com/en/2.1/howto/static-files/
|
# https://docs.djangoproject.com/en/2.1/howto/static-files/
|
||||||
|
|
|
@ -4,6 +4,7 @@ from argparse import ArgumentParser
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from authentik.lib.config import CONFIG
|
from authentik.lib.config import CONFIG
|
||||||
|
from authentik.lib.sentry import sentry_init
|
||||||
from tests.e2e.utils import get_docker_tag
|
from tests.e2e.utils import get_docker_tag
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,6 +33,11 @@ class PytestTestRunner: # pragma: no cover
|
||||||
"outposts.container_image_base",
|
"outposts.container_image_base",
|
||||||
f"ghcr.io/goauthentik/dev-%(type)s:{get_docker_tag()}",
|
f"ghcr.io/goauthentik/dev-%(type)s:{get_docker_tag()}",
|
||||||
)
|
)
|
||||||
|
sentry_init(
|
||||||
|
sample_rate=1.0,
|
||||||
|
environment="testing",
|
||||||
|
send_default_pii=True,
|
||||||
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def add_arguments(cls, parser: ArgumentParser):
|
def add_arguments(cls, parser: ArgumentParser):
|
||||||
|
|
Reference in New Issue