From a8582c52b58c64233c2ce004554fa05801489579 Mon Sep 17 00:00:00 2001 From: Krystle Salazar Date: Tue, 10 Dec 2024 13:08:28 -0400 Subject: [PATCH 1/4] Set up Sentry profiling --- api/conf/settings/sentry.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/api/conf/settings/sentry.py b/api/conf/settings/sentry.py index dfaf7db7c7e..06d390a9b5b 100644 --- a/api/conf/settings/sentry.py +++ b/api/conf/settings/sentry.py @@ -8,7 +8,10 @@ SENTRY_DSN = config("SENTRY_DSN", default="") -SENTRY_SAMPLE_RATE = config("SENTRY_SAMPLE_RATE", default=0, cast=float) +SENTRY_TRACES_SAMPLE_RATE = config("SENTRY_TRACES_SAMPLE_RATE", default=0, cast=float) +SENTRY_PROFILES_SAMPLE_RATE = config( + "SENTRY_PROFILES_SAMPLE_RATE", default=0, cast=float +) # SECURITY WARNING: don't run with debug turned on in production! DEBUG = config("DJANGO_DEBUG_ENABLED", default=False, cast=bool) @@ -26,7 +29,8 @@ sentry_sdk.init( dsn=SENTRY_DSN, integrations=INTEGRATIONS, - traces_sample_rate=SENTRY_SAMPLE_RATE, + traces_sample_rate=SENTRY_TRACES_SAMPLE_RATE, + profiles_sample_rate=SENTRY_PROFILES_SAMPLE_RATE, send_default_pii=False, environment=ENVIRONMENT, ) From 55661b8a2208d482f97db25894078421cad4a91c Mon Sep 17 00:00:00 2001 From: Krystle Salazar Date: Tue, 10 Dec 2024 13:10:31 -0400 Subject: [PATCH 2/4] Add variables to env.template --- api/env.template | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/env.template b/api/env.template index aa920195a27..284a9796f10 100644 --- a/api/env.template +++ b/api/env.template @@ -51,8 +51,9 @@ SEMANTIC_VERSION=1.0.0 IS_PROXIED=False -#SENTRY_SAMPLE_RATE=1.0 #SENTRY_DSN= +#SENTRY_TRACES_SAMPLE_RATE=0 +#SENTRY_PROFILES_SAMPLE_RATE=0 FILTER_DEAD_LINKS_BY_DEFAULT=False ENABLE_FILTERED_INDEX_QUERIES=True From dbf2a9530bc47575c5d4872f5e68bcdeb5da409d Mon Sep 17 00:00:00 2001 From: Krystle Salazar Date: Tue, 10 Dec 2024 13:26:03 -0400 Subject: [PATCH 3/4] Make LOG_LEVEL env var more specific to Django --- api/conf/settings/logging.py | 8 ++++---- api/env.template | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/api/conf/settings/logging.py b/api/conf/settings/logging.py index 0e1b598a625..7f70e9a821e 100644 --- a/api/conf/settings/logging.py +++ b/api/conf/settings/logging.py @@ -20,7 +20,7 @@ def health_check_filter(record: LogRecord) -> bool: MIDDLEWARE.insert(0, "django_structlog.middlewares.RequestMiddleware") -LOG_LEVEL = config("LOG_LEVEL", default="INFO").upper() +DJANGO_LOG_LEVEL = config("DJANGO_LOG_LEVEL", default="INFO").upper() DJANGO_DB_LOGGING = config("DJANGO_DB_LOGGING", cast=bool, default=False) LOG_PROCESSOR = config( "LOG_PROCESSOR", @@ -118,7 +118,7 @@ def suppress_unwanted_logs(record: LogRecord) -> bool: }, "handlers": { "console_structured": { - "level": LOG_LEVEL, + "level": DJANGO_LOG_LEVEL, "class": "logging.StreamHandler", "formatter": "structured", "filters": ["suppress_unwanted_logs"], @@ -126,7 +126,7 @@ def suppress_unwanted_logs(record: LogRecord) -> bool: }, "root": { "handlers": ["console_structured"], - "level": LOG_LEVEL, + "level": DJANGO_LOG_LEVEL, "propagate": False, }, "loggers": { @@ -139,7 +139,7 @@ def suppress_unwanted_logs(record: LogRecord) -> bool: }, "uvicorn": { "handlers": ["console_structured"], - "level": LOG_LEVEL, + "level": DJANGO_LOG_LEVEL, }, }, } diff --git a/api/env.template b/api/env.template index 284a9796f10..defbb36cbbf 100644 --- a/api/env.template +++ b/api/env.template @@ -3,6 +3,7 @@ PYTHONUNBUFFERED=0 DJANGO_SETTINGS_MODULE=conf.settings DJANGO_SECRET_KEY=example_key DJANGO_DEBUG_ENABLED=True +DJANGO_LOG_LEVEL=INFO CANONICAL_DOMAIN=localhost:50280 ENVIRONMENT=local From e0d9420db3ebe637f5a6d5258c941c2df1c0cf5e Mon Sep 17 00:00:00 2001 From: Krystle Salazar Date: Tue, 10 Dec 2024 13:35:03 -0400 Subject: [PATCH 4/4] Update other variables --- api/conf/settings/logging.py | 8 ++++---- api/conf/settings/security.py | 2 +- api/env.template | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/api/conf/settings/logging.py b/api/conf/settings/logging.py index 7f70e9a821e..3593ab7bcb5 100644 --- a/api/conf/settings/logging.py +++ b/api/conf/settings/logging.py @@ -21,7 +21,7 @@ def health_check_filter(record: LogRecord) -> bool: MIDDLEWARE.insert(0, "django_structlog.middlewares.RequestMiddleware") DJANGO_LOG_LEVEL = config("DJANGO_LOG_LEVEL", default="INFO").upper() -DJANGO_DB_LOGGING = config("DJANGO_DB_LOGGING", cast=bool, default=False) +DJANGO_DATABASE_LOGGING = config("DJANGO_DATABASE_LOGGING", cast=bool, default=False) LOG_PROCESSOR = config( "LOG_PROCESSOR", default="console" if ENVIRONMENT == "local" else "json", @@ -158,9 +158,9 @@ def suppress_unwanted_logs(record: LogRecord) -> bool: cache_logger_on_first_use=(ENVIRONMENT == "production"), ) -if DJANGO_DB_LOGGING: - # Behind a separate flag as it's a very noisy debug logger - # and it's nice to be able to enable it conditionally within that context +if DJANGO_DATABASE_LOGGING: + # Behind a separate flag as it's a very noisy debug logger, and it's nice to be + # able to enable it conditionally within that context LOGGING["loggers"]["django.db.backends"] = { "level": "DEBUG", "handlers": ["console_structured"], diff --git a/api/conf/settings/security.py b/api/conf/settings/security.py index f14c97f2240..9700a26396c 100644 --- a/api/conf/settings/security.py +++ b/api/conf/settings/security.py @@ -67,7 +67,7 @@ ] # Proxy handling, for production -if config("IS_PROXIED", default=True, cast=bool): +if config("DJANGO_IS_PROXIED", default=True, cast=bool): # https://docs.djangoproject.com/en/4.0/ref/settings/#secure-proxy-ssl-header SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") diff --git a/api/env.template b/api/env.template index defbb36cbbf..4021ed5f361 100644 --- a/api/env.template +++ b/api/env.template @@ -5,6 +5,7 @@ DJANGO_SECRET_KEY=example_key DJANGO_DEBUG_ENABLED=True DJANGO_LOG_LEVEL=INFO +DJANGO_IS_PROXIED=False CANONICAL_DOMAIN=localhost:50280 ENVIRONMENT=local @@ -26,6 +27,7 @@ ENVIRONMENT=local #DJANGO_DATABASE_PASSWORD=deploy #DJANGO_DATABASE_NAME=openledger #DJANGO_DATABASE_APPLICATION_NAME=openverse-api +#DJANGO_DATABASE_LOGGING=False SEMANTIC_VERSION=1.0.0 @@ -50,8 +52,6 @@ SEMANTIC_VERSION=1.0.0 #DEBUG_SCORES=False #USE_RANK_FEATURES=True -IS_PROXIED=False - #SENTRY_DSN= #SENTRY_TRACES_SAMPLE_RATE=0 #SENTRY_PROFILES_SAMPLE_RATE=0