Herramientas de observabilidad: Grafana, Kibana, profiling, VisualVM, Datadog y New Relic

Herramientas de observabilidad: Grafana, Kibana, profiling, VisualVM, Datadog y New Relic

Cuando una aplicación funciona en producción, no basta con que el código sea correcto. Si la respuesta es lenta, el servidor consume mucha memoria o un usuario deja de recibir datos, necesitamos información externa para entender qué ocurre.

La observabilidad es la capacidad de conocer el estado interno de un sistema a partir de sus salidas, principalmente métricas, logs y trazas. En este artículo revisaremos seis herramientas que cubren esas necesidades: Grafana y Kibana para visualización, VisualVM y profiling para rendimiento, y Datadog y New Relic como plataformas de monitoreo.

¿Qué es la observabilidad?

Observabilidad describe cuán bien se puede entender un sistema a partir de la información que produce. Se apoya en tres pilares:

Metricas: numeros que describen el estado del sistema.
Logs: registros de eventos con contexto.
Trazas: el recorrido de una peticion por los servicios.

Un sistema observable permite responder preguntas como: ¿cuántas peticiones fallan? ¿cuánta memoria consume el proceso? ¿cuál es la latencia de una consulta? ¿dónde se ralentiza una solicitud?

Grafana

Grafana es una herramienta de código abierto para visualizar métricas. No almacena los datos por sí sola; se conecta a fuentes de datos como Prometheus, InfluxDB, Loki o CloudWatch y muestra la información en dashboards.

Sus elementos principales:

  • Dashboards: paneles organizados en una sola vista.
  • Paneles: gráficos de líneas, barras, medias, tablas y otros.
  • Alertas: reglas que notifican cuando una métrica supera un umbral.
  • Variables: permiten cambiar el contexto de un dashboard, por ejemplo el entorno o el servicio.

Un ejemplo de consulta sencilla en Prometheus, una fuente de datos común:

rate(http_requests_total[5m])

Esa consulta muestra la tasa de peticiones por segundo de los últimos cinco minutos.

Kibana

Kibana es la capa de visualización del stack de Elastic. Su función principal es explorar y visualizar logs almacenados en Elasticsearch.

Paneles de Kibana:

  • Discover: donde se buscan y filtran los logs con el lenguaje de consulta de Elasticsearch.
  • Visualize: para crear gráficos a partir de agregaciones.
  • Dashboard: para combinar varias visualizaciones en una vista.
  • Log explorer: vista específica para logs, común en versiones recientes.

Una consulta típica de búsqueda:

status: 500 AND service: payments

Esa consulta devuelve los logs del servicio de pagos que registran un error 500.

Profiling

El profiling es el análisis del comportamiento de un programa en ejecución para entender dónde gasta tiempo y recursos. A diferencia de las métricas del sistema, el profiling se enfoca en el proceso de la aplicación.

Dos tipos principales:

  • CPU profiling: muestra qué funciones consumen más tiempo de ejecución.
  • Heap profiling: muestra qué objetos ocupan más memoria.

Una salida de CPU profiling puede verse así:

Samples: 120
self  total  function
 45%    45%  deserializarJson
 30%    40%  validarDatos
 15%    20%  construirRespuesta

Esa salida permite ver que deserializar el JSON es la operación más costosa.

VisualVM

VisualVM es una herramienta de monitoreo y profiling para aplicaciones que corren en la máquina virtual de Java. Llega con el JDK y permite observar procesos locales o remotos.

Qué permite hacer:

  • Supervisar: CPU, memoria y hilos del proceso.
  • Dumps de heap: capturas del estado de la memoria para analizarlas después.
  • Dumps de hilos: capturas de los hilos y sus call stacks.
  • Sampler y profiler: para medir dónde se gasta el tiempo.

Ejemplo conceptual de un thread dump:

"http-nio-8080-exec-1" daemon prio=5
   java.lang.Thread.State: RUNNABLE
     at com.example.service.parse(Service.java:42)

Un thread dump sirve para ver qué estaba haciendo cada hilo en un momento dado, por ejemplo cuando el servicio deja de responder.

Datadog

Datadog es una plataforma de monitoreo como servicio que integra métricas, logs, trazas y tests en un solo lugar.

Características destacadas:

  • APM: seguimiento de transacciones entre servicios (tracing).
  • Integraciones: conectores listos para infraestructura, bases de datos y librerías populares.
  • Monitores y alertas: reglas con umbrales, ventanas de tiempo y condiciones.
  • Dashboards: combinan información de todo el stack.

La idea de Datadog es unir los tres pilares en un solo lugar para no saltar entre herramientas al investigar un incidente.

New Relic

New Relic también es una plataforma de observabilidad.

Aspectos principales:

  • APM: monitoreo del rendimiento de aplicaciones, con gráficos de transacciones y errores.
  • NRQL: lenguaje de consulta de New Relic para explorar los datos almacenados.
  • Browser: métricas del lado del cliente.
  • Infrastructure: monitoreo de servidores y contenedores.

Un ejemplo de consulta NRQL:

SELECT average(duration) FROM Transaction
WHERE appName = 'tienda' SINCE 1 hour ago

Esa consulta devuelve la duración media de las transacciones de la aplicación tienda en la última hora.

Cómo elegir una herramienta

La elección depende del contexto:

  • Si el equipo ya usa Prometheus y necesita una capa de visualización propia, Grafana encaja.
  • Si el stack se basa en Elasticsearch para logs, Kibana es natural.
  • Si se quiere mejorar el rendimiento de un proceso Java, VisualVM es una opción inmediata y sin costo adicional.
  • Si se necesita una solución completa con soporte y sin mantener la infraestructura, Datadog o New Relic cubren métricas, logs y trazas.

También importan el costo de licencia, el tiempo de integración y si el equipo prefiere herramientas administradas o propias.

Observabilidad en la práctica

Una estrategia real combina varias piezas:

Servicio -> metricas -> Prometheus -> Grafana
Servicio -> logs -> Elasticsearch -> Kibana
Servicio -> trazas -> plataforma de APM

El objetivo no es acumular herramientas, sino responder preguntas cuando algo falla. Un buen flujo es:

  1. Definir métricas relevantes del servicio.
  2. Registrar logs con contexto suficiente.
  3. Crear dashboards para el flujo normal.
  4. Configurar alertas para valores anómalos.
  5. Usar profiling al investigar problemas de rendimiento.

Conclusión

No existe una única herramienta que resuelva todos los casos. Grafana y Kibana destacan en la visualización de métricas y logs con opciones de código abierto. VisualVM y el profiling permiten entender el comportamiento interno de una aplicación. Datadog y New Relic ofrecen plataformas completas cuando se prefiere una solución administrada.

La observabilidad no se construye instalando herramientas. Se construye asegurando que el sistema produzca la información necesaria para entenderlo, y eligiendo las herramientas adecuadas para explorar y actuar sobre esa información.

© Arturo Juárez Monroy