Por qué adoptar OpenTelemetry en lugar de un agente propietario
OpenTelemetry es un proyecto CNCF graduado que unifica los tres pilares de la observabilidad — trazas, métricas y logs — bajo un estándar vendor-neutral. A diferencia de los agentes de Datadog o New Relic, el OTel Collector recibe, transforma y exporta la telemetría hacia cualquier backend compatible. Usted cambia de almacenamiento sin tocar el código de su aplicación. Los SDK cubren Node.js, Python, Go, Java, PHP, Ruby y la mayoría de los lenguajes modernos, lo que lo convierte en una base de instrumentación duradera sea cual sea su stack.
Lo que le aporta la stack OTel + Grafana Tempo
- Tracing distribuido sin índice externo — Grafana Tempo v2.x almacena las trazas en bloques comprimidos (parquet) en disco local o en object storage, sin Cassandra ni Elasticsearch.
- Consultas TraceQL — el lenguaje propio de Tempo permite filtrar las trazas por duración, servicio, estado de error o atributos personalizados en unos segundos.
- Compatibilidad multiprotocolo — Tempo acepta OTLP, Zipkin y Jaeger: sus aplicaciones existentes se conectan sin volver a instrumentarlas.
- Stack ligera en VPS — 2 GB de RAM bastan para un entorno de desarrollo o de staging; en producción con carga, 4 GB aseguran un margen cómodo.
- Coste controlado — un VPS a 99 DH/mes autoalojado sustituye a una suscripción APM de Datadog facturada en torno a 23 $ por host y por mes.
Requisitos del VPS
Su VPS debe disponer de al menos 2 GB de RAM y de un acceso root o sudo. Docker Engine y Docker Compose v2 deben estar instalados. Prevea un subdominio dedicado (por ejemplo grafana.su-dominio.com) para exponer la interfaz de Grafana detrás de un reverse proxy TLS. Los puertos 4317 (OTLP/gRPC) y 4318 (OTLP/HTTP) deben estar abiertos en su firewall para recibir la telemetría desde sus aplicaciones.
Desplegar la stack OTel en cinco pasos
Crear la estructura Docker Compose
Organice una carpeta
otel-stack/que contenga sus archivos de configuración y undocker-compose.yml. Defina cuatro servicios:otel-collector,tempo,prometheusygrafana. Conéctelos en una red Docker internamonitoring. Monte un volumen con nombretempo-datapara la persistencia de las trazas en el disco del VPS.Configurar el OTel Collector (`otelcol-config.yaml`)
Declare dos receivers:
otlpen los puertos 4317 (gRPC) y 4318 (HTTP). En la secciónexporters, añadaotlp/tempoapuntando atempo:4317yprometheusal puerto 8889. El pipelinetracesconecta el receiver OTLP con el exporter Tempo; el pipelinemetricsconecta el receiver OTLP con el exporter Prometheus.Configurar Grafana Tempo (`tempo-config.yaml`)
Active el receiver OTLP (gRPC en el puerto 4317). Defina el backend de almacenamiento en modo
localcon la ruta/var/tempo. Active la funcionalidadsearchpara permitir las consultas TraceQL desde Grafana. Para un uso en producción, sustituya el backendlocalpors3ogcse indique las credenciales de su proveedor de almacenamiento de objetos.Lanzar Grafana con los datasources Tempo y Prometheus
Monte un archivo de provisioning
datasources.yamlen la carpeta/etc/grafana/provisioning/datasources/. Declare dos datasources: unoTempoapuntando ahttp://tempo:3200y otroPrometheusahttp://prometheus:9090. Lance el conjunto condocker compose up -d. Acceda a Grafana en el puerto 3000 y compruebe que los dos datasources aparecen en verde.Instrumentar una primera aplicación Node.js o Python
Para Node.js, instale
@opentelemetry/sdk-nodey@opentelemetry/auto-instrumentations-node. Inicialice el SDK con el exporter OTLP apuntando ahttp://su-vps:4318y defina la variable de entornoOTEL_SERVICE_NAMEcon el nombre de su servicio. Para Python, utiliceopentelemetry-distroyopentelemetry-exporter-otlp. Reinicie su aplicación y consulte Grafana Explore para ver aparecer sus primeras trazas.
TraceQL es el lenguaje de consulta nativo de Grafana Tempo. Permite filtrar las trazas por duración, servicio, estado HTTP o atributo personalizado. Por ejemplo, la consulta { duration > 500ms && status = error } aísla de inmediato las llamadas lentas en error en el conjunto de su infraestructura. Combine varias condiciones con && o || para afinar el diagnóstico sin recorrer miles de spans manualmente.
Ir más lejos: correlacionar trazas, métricas y logs
Añada Grafana Loki a su stack para centralizar los logs de las aplicaciones en el mismo entorno. Grafana Explore le permite pasar de una traza a sus logs asociados con un solo clic y comprobar después las métricas de Prometheus correspondientes en la misma ventana temporal. Si prefiere un único binario todo en uno, OpenObserve es una alternativa ligera que reúne trazas, métricas y logs en un solo servicio, disponible también en autoalojamiento en VPS.