pg_tracing: Trazabilidad distribuida en PostgreSQL al nivel del servidor

Qué es pg_tracing
pg_tracing es una extensión para PostgreSQL desarrollada por DataDog que introduce trazabilidad distribuida a nivel del servidor. A diferencia de herramientas externas o proxies SQL, esta extensión actúa directamente en el motor de PostgreSQL, generando spans —fragmentos de trazas— asociados a cada operación interna del motor.
Actualmente es compatible con PostgreSQL 14, 15 y 16, y aunque se encuentra en fase temprana de desarrollo, representa un paso importante hacia la observabilidad nativa dentro del propio sistema de bases de datos.
Cómo funciona
Cuando está activa, pg_tracing genera spans de forma automática sobre consultas muestreadas. Cada span describe eventos internos del servidor como:
-
Fases del planificador (
Planner), ejecución (ExecutorRun,ExecutorFinish) -
Sentencias SQL de utilidad (
ALTER,SHOW,TRUNCATE, etc.) -
Nodos del plan de ejecución (
SeqScan,HashJoin,NestedLoop...) -
Consultas anidadas y triggers
-
Procesos en paralelo (Parallel Workers)
-
Commits de transacción y operaciones de sincronización en WAL
El resultado se puede consultar mediante vistas nativas (pg_tracing_consume_spans) o exportar directamente en formato JSON compatible con OTLP, el protocolo estándar para OpenTelemetry.
Integración con OpenTelemetry
Uno de los puntos fuertes de pg_tracing es su integración directa con el ecosistema OpenTelemetry. Al definir un endpoint en la configuración:
pg_tracing.otel_endpoint = 'http://127.0.0.1:4318/v1/traces'
la extensión envía periódicamente los spans a un collector OTEL, sin necesidad de procesos intermedios. Esto permite correlacionar las trazas de base de datos con el resto de servicios de la infraestructura y detectar cuellos de botella de manera transversal.
Además, la extensión admite propagación de contexto de traza mediante SQLCommenter o variables de configuración (pg_tracing.trace_context), asegurando que las operaciones SQL se vinculen con las peticiones de aplicación correctas.
Ventajas para CTOs y equipos técnicos
-
Visibilidad total: cada paso de ejecución SQL queda registrado y relacionable con una transacción distribuida.
-
Menor fricción: no requiere modificar aplicaciones ni proxies; todo ocurre dentro del servidor PostgreSQL.
-
Análisis profundo: conocer el coste interno de
Planner,Executoro triggers facilita optimizar consultas complejas. -
Compatibilidad abierta: exporta en formato estándar OTLP, interoperable con cualquier stack de observabilidad moderno (Grafana Tempo, Jaeger, DataDog, etc.).
Para empresas con arquitecturas distribuidas, incorporar trazabilidad en la base de datos supone cerrar el último eslabón de la observación integral. Ya no basta con medir la latencia de servicios; ahora es posible entender hasta cómo responde el planificador del motor SQL.
Cómo desplegarlo
El despliegue es sencillo para entornos de desarrollo o pruebas:
git clone https://github.com/DataDog/pg_tracing.git
cd pg_tracing
make && make install
Posteriormente, se añade en postgresql.conf:
shared_preload_libraries = 'pg_tracing'
Y tras reiniciar el servidor:
CREATE EXTENSION pg_tracing;
Una vez cargada, los spans comenzarán a generarse y podrán consultarse o enviarse automáticamente al collector configurado.
Conclusión
pg_tracing es un avance relevante en la integración entre bases de datos y observabilidad moderna. Permite a los equipos técnicos cerrar el círculo del distributed tracing sin abandonar PostgreSQL.
En Nelux AI ayudamos a empresas a implementar ecosistemas de observabilidad de alto rendimiento combinando OpenTelemetry, PostgreSQL y entornos cloud escalables. Si tu organización busca entender y optimizar el rendimiento de sus datos en tiempo real, podemos ayudarte a hacerlo con rigor y seguridad.