diff --git a/engine/requirements.txt b/engine/requirements.txt index 60a1f135..6751c1ce 100644 --- a/engine/requirements.txt +++ b/engine/requirements.txt @@ -45,3 +45,4 @@ opentelemetry-instrumentation-celery==0.36b0 opentelemetry-instrumentation-pymysql==0.36b0 opentelemetry-instrumentation-wsgi==0.36b0 opentelemetry-exporter-otlp-proto-grpc==1.15.0 +pyroscope-io==0.8.1 \ No newline at end of file diff --git a/engine/settings/base.py b/engine/settings/base.py index 83ac1cc8..fb60c6cb 100644 --- a/engine/settings/base.py +++ b/engine/settings/base.py @@ -648,3 +648,16 @@ if OSS_INSTALLATION: "schedule": crontab(hour="*/12"), # noqa "args": (), } # noqa + +PYROSCOPE_PROFILER_ENABLED = getenv_boolean("PYROSCOPE_PROFILER_ENABLED", default=False) +if PYROSCOPE_PROFILER_ENABLED: + import pyroscope + + pyroscope.configure( + application_name=os.getenv("PYROSCOPE_APPLICATION_NAME", "oncall"), + server_address=os.getenv("PYROSCOPE_SERVER_ADDRESS", "http://pyroscope:4040"), + auth_token=os.getenv("PYROSCOPE_AUTH_TOKEN", ""), + tags={ + "celery_worker": os.getenv("CELERY_WORKER_QUEUE", None), + }, + )