lifecycle: send analytics in gunicorn config to decrease outgoing requests when workers get restarted
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
parent
11753c1fe1
commit
0232c4e162
|
@ -19,12 +19,11 @@ from sentry_sdk.integrations.django import DjangoIntegration
|
||||||
from sentry_sdk.integrations.redis import RedisIntegration
|
from sentry_sdk.integrations.redis import RedisIntegration
|
||||||
from sentry_sdk.integrations.threading import ThreadingIntegration
|
from sentry_sdk.integrations.threading import ThreadingIntegration
|
||||||
|
|
||||||
from authentik import ENV_GIT_HASH_KEY, __version__, get_build_hash, get_full_version
|
from authentik import ENV_GIT_HASH_KEY, __version__, get_build_hash
|
||||||
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 before_send
|
||||||
from authentik.lib.utils.http import get_http_session
|
|
||||||
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
|
||||||
|
|
||||||
|
@ -413,29 +412,6 @@ if _ERROR_REPORTING:
|
||||||
"Error reporting is enabled",
|
"Error reporting is enabled",
|
||||||
env=CONFIG.y("error_reporting.environment", "customer"),
|
env=CONFIG.y("error_reporting.environment", "customer"),
|
||||||
)
|
)
|
||||||
if not CONFIG.y_bool("disable_startup_analytics", False):
|
|
||||||
should_send = env not in ["dev", "ci"]
|
|
||||||
if should_send:
|
|
||||||
try:
|
|
||||||
get_http_session().post(
|
|
||||||
"https://goauthentik.io/api/event",
|
|
||||||
json={
|
|
||||||
"domain": "authentik",
|
|
||||||
"name": "pageview",
|
|
||||||
"referrer": get_full_version(),
|
|
||||||
"url": (
|
|
||||||
f"http://localhost/{env}?utm_source={get_full_version()}&utm_medium={env}"
|
|
||||||
),
|
|
||||||
},
|
|
||||||
headers={
|
|
||||||
"User-Agent": sha512(str(SECRET_KEY).encode("ascii")).hexdigest()[:16],
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
timeout=5,
|
|
||||||
)
|
|
||||||
# pylint: disable=bare-except
|
|
||||||
except: # nosec
|
|
||||||
pass
|
|
||||||
|
|
||||||
# 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/
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
"""Gunicorn config"""
|
"""Gunicorn config"""
|
||||||
import os
|
import os
|
||||||
import pwd
|
import pwd
|
||||||
|
from hashlib import sha512
|
||||||
from multiprocessing import cpu_count
|
from multiprocessing import cpu_count
|
||||||
|
|
||||||
import structlog
|
import structlog
|
||||||
from kubernetes.config.incluster_config import SERVICE_HOST_ENV_NAME
|
from kubernetes.config.incluster_config import SERVICE_HOST_ENV_NAME
|
||||||
|
|
||||||
|
from authentik import get_full_version
|
||||||
|
from authentik.lib.config import CONFIG
|
||||||
|
from authentik.lib.utils.http import get_http_session
|
||||||
|
from authentik.lib.utils.reflection import get_env
|
||||||
|
|
||||||
bind = "127.0.0.1:8000"
|
bind = "127.0.0.1:8000"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -69,3 +75,31 @@ def worker_exit(server, worker):
|
||||||
from prometheus_client import multiprocess
|
from prometheus_client import multiprocess
|
||||||
|
|
||||||
multiprocess.mark_process_dead(worker.pid)
|
multiprocess.mark_process_dead(worker.pid)
|
||||||
|
|
||||||
|
|
||||||
|
if not CONFIG.y_bool("disable_startup_analytics", False):
|
||||||
|
env = get_env()
|
||||||
|
should_send = env not in ["dev", "ci"]
|
||||||
|
if should_send:
|
||||||
|
try:
|
||||||
|
get_http_session().post(
|
||||||
|
"https://goauthentik.io/api/event",
|
||||||
|
json={
|
||||||
|
"domain": "authentik",
|
||||||
|
"name": "pageview",
|
||||||
|
"referrer": get_full_version(),
|
||||||
|
"url": (
|
||||||
|
f"http://localhost/{env}?utm_source={get_full_version()}&utm_medium={env}"
|
||||||
|
),
|
||||||
|
},
|
||||||
|
headers={
|
||||||
|
"User-Agent": sha512(str(CONFIG.y("secret_key")).encode("ascii")).hexdigest()[
|
||||||
|
:16
|
||||||
|
],
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
timeout=5,
|
||||||
|
)
|
||||||
|
# pylint: disable=bare-except
|
||||||
|
except: # nosec
|
||||||
|
pass
|
||||||
|
|
Reference in a new issue