Add automatic instrumentation to Postgres queries

This enables automatic instrumentation of Postgres queries when
OpenTelemetry instrumentation is enabled, which will help with debugging
performance problems.
This commit is contained in:
Wesley Aptekar-Cassels 2023-04-07 01:58:49 -04:00
parent 4b1012b185
commit 61453d48e6
4 changed files with 9 additions and 0 deletions

View file

@ -40,6 +40,7 @@ class BookwyrmConfig(AppConfig):
from bookwyrm.telemetry import open_telemetry
open_telemetry.instrumentDjango()
open_telemetry.instrumentPostgres()
if settings.ENABLE_PREVIEW_IMAGES and settings.FONTS:
# Download any fonts that we don't have yet

View file

@ -22,6 +22,12 @@ def instrumentDjango():
DjangoInstrumentor().instrument()
def instrumentPostgres():
from opentelemetry.instrumentation.psycopg2 import Psycopg2Instrumentor
Psycopg2Instrumentor().instrument()
def instrumentCelery():
from opentelemetry.instrumentation.celery import CeleryInstrumentor
from celery.signals import worker_process_init

View file

@ -11,3 +11,4 @@ class CelerywyrmConfig(AppConfig):
from bookwyrm.telemetry import open_telemetry
open_telemetry.instrumentCelery()
open_telemetry.instrumentPostgres()

View file

@ -29,6 +29,7 @@ opentelemetry-api==1.16.0
opentelemetry-exporter-otlp-proto-grpc==1.16.0
opentelemetry-instrumentation-celery==0.37b0
opentelemetry-instrumentation-django==0.37b0
opentelemetry-instrumentation-psycopg2==0.37b0
opentelemetry-sdk==1.16.0
protobuf==3.20.*
pyotp==2.8.0