Conceptos de telemetría¶
La telemetría permite recopilar información sobre el estado y el comportamiento de sistemas, aplicaciones y servicios.
Estos datos pueden utilizarse para:
- Detectar problemas.
- Analizar tendencias.
- Validar cambios.
- Investigar incidentes.
- Crear alertas.
- Planificar la capacidad futura.
- Mejorar la operación de una infraestructura.
El recorrido general de la telemetría es:
Sistema monitorizado
↓
Agente o exporter
↓
Sistema de recopilación
↓
Almacenamiento
↓
Consultas
↓
Visualización y alertas
En este curso utilizaremos principalmente:
- Node Exporter expone métricas del sistema operativo.
- Prometheus recopila y almacena esas métricas.
- Grafana consulta y representa los datos visualmente.
Objetivos¶
Al finalizar esta sesión podrás:
- Explicar qué es la telemetría.
- Diferenciar métricas, logs, trazas y eventos.
- Identificar ejemplos de telemetría en un sistema Ubuntu.
- Consultar información básica desde la terminal.
- Relacionar los datos recopilados con Prometheus y Grafana.
- Diferenciar un valor puntual de una tendencia temporal.
- Interpretar el papel de Node Exporter dentro de una arquitectura de monitorización.
1. ¿Qué es la telemetría?¶
La telemetría es el conjunto de técnicas y herramientas utilizadas para recopilar, transmitir, almacenar y analizar información sobre un sistema.
Un sistema monitorizado puede ser:
- Un servidor.
- Una máquina virtual.
- Un contenedor.
- Una aplicación.
- Una base de datos.
- Un dispositivo de red.
- Un servicio web.
La telemetría permite responder preguntas como:
- ¿Está funcionando el sistema?
- ¿Cuánta CPU está utilizando?
- ¿Cuánta memoria queda disponible?
- ¿Cuánto espacio libre tiene el disco?
- ¿Cuántas peticiones recibe una aplicación?
- ¿Cuánto tardan las respuestas?
- ¿Cuándo comenzó un problema?
- ¿Qué componente puede estar provocando un error?
Sin telemetría¶
Sin datos históricos, solo podemos observar el estado actual:
Este dato no permite saber:
- Cuándo comenzó el incremento.
- Si se trata de un pico puntual.
- Si ocurre periódicamente.
- Si está relacionado con un cambio reciente.
- Si otros componentes también están afectados.
Con telemetría¶
Con una secuencia de valores podemos observar la evolución:
En este caso se observa una tendencia ascendente que podría indicar una sobrecarga progresiva.
Una métrica aislada muestra un estado. Una serie de valores permite analizar una evolución.
2. Tipos principales de telemetría¶
En observabilidad suelen distinguirse cuatro tipos principales de información:
| Tipo | Qué representa | Ejemplo | Pregunta principal |
|---|---|---|---|
| Métrica | Un valor numérico | CPU al 75 % | ¿Cuánto? |
| Log | Un mensaje registrado | Error de conexión | ¿Qué ocurrió? |
| Traza | El recorrido de una petición | API → base de datos | ¿Dónde se produjo la demora? |
| Evento | Una acción puntual | Reinicio de un servicio | ¿Qué cambió? |
3. Métricas¶
Una métrica es un valor numérico que describe el estado o la actividad de un sistema.
Ejemplos:
Uso de CPU: 73 %
Memoria disponible: 2,4 GiB
Espacio libre: 38 GiB
Peticiones por segundo: 125
Temperatura: 48 °C
Tiempo de respuesta: 240 ms
Las métricas tienen normalmente estas características:
- Son valores numéricos.
- Se pueden recopilar periódicamente.
- Se pueden representar mediante gráficos.
- Permiten establecer umbrales.
- Son adecuadas para observar tendencias.
- Pueden utilizarse para crear alertas.
Estructura de una métrica¶
Una métrica puede representarse de forma conceptual así:
Ejemplo:
Esta línea contiene:
- Nombre de la métrica:
cpu_usage_percent. - Etiqueta
host:ubuntu-01. - Valor:
73. - Unidad conceptual: porcentaje.
El valor aislado representa el estado en un instante determinado:
Una secuencia de valores permite analizar la evolución:
En este caso se observa una tendencia ascendente.
Consultar métricas básicas en Ubuntu¶
Consultar la carga media del sistema:
Ejemplo de salida:
La salida incluye:
- Hora actual.
- Tiempo desde el último arranque.
- Número de usuarios conectados.
- Carga media durante 1 minuto.
- Carga media durante 5 minutos.
- Carga media durante 15 minutos.
Consultar la memoria:
Consultar el espacio de disco:
Consultar las interfaces de red:
Actividad: consultar el estado del sistema¶
Ejecuta:
Completa la siguiente información:
Carga media de 1 minuto:
Memoria total:
Memoria disponible:
Espacio total de /:
Espacio disponible en /:
Porcentaje utilizado:
Estos comandos muestran el estado en un instante. Para realizar monitorización necesitamos recopilar los valores periódicamente y almacenarlos.
Un ejemplo sencillo sería:
Para detener el bucle:
Este ejemplo no sustituye a Prometheus, pero ayuda a comprender el concepto de muestreo.
4. Logs¶
Un log es un registro textual generado por una aplicación, un servicio o el sistema operativo.
Ejemplos:
Usuario autenticado correctamente
Conexión aceptada desde 192.168.1.25
ERROR: no se pudo conectar con la base de datos
Servicio reiniciado correctamente
Archivo de configuración cargado
Un log suele incluir:
- Fecha y hora.
- Nivel de severidad.
- Servicio o componente.
- Mensaje.
- Identificador de proceso.
- Información adicional.
Niveles habituales¶
| Nivel | Significado |
|---|---|
DEBUG |
Información detallada para diagnóstico |
INFO |
Información normal de funcionamiento |
WARNING |
Situación anómala que no impide continuar |
ERROR |
Error que afecta a una operación |
CRITICAL |
Problema grave que puede detener el servicio |
Consultar logs en Ubuntu¶
Ubuntu utiliza habitualmente systemd-journald para gestionar los registros de los servicios.
Consultar los últimos registros del sistema:
Consultar los registros de Grafana:
Consultar los registros de Prometheus:
Consultar los registros de Node Exporter:
El nombre del servicio puede variar según el método de instalación. Si
node-exporterno existe, consulta las unidades disponibles consystemctl list-units --type=service | grep -i exporter.
Ver los registros en tiempo real:
Para salir:
Filtrar errores:
Consultar los registros desde el último arranque:
Actividad: analizar logs¶
Ejecuta:
Busca:
- La hora de cada mensaje.
- El nombre del servicio.
- Mensajes de inicio.
- Advertencias.
- Errores.
Responde:
1. ¿A qué hora se inició el servicio?
2. ¿Aparece algún mensaje de error?
3. ¿Qué componente genera los registros?
4. ¿Qué diferencia hay entre estos registros y una métrica?
Diferencia entre una métrica y un log¶
Una métrica podría indicar:
Un log podría indicar:
La métrica responde principalmente:
El log aporta contexto:
5. Trazas¶
Una traza representa el recorrido de una petición a través de distintos componentes.
Es especialmente útil en aplicaciones distribuidas y arquitecturas de microservicios.
Ejemplo:
Una petición podría tener estos tiempos:
La traza permite observar qué parte de la petición produce la mayor demora.
Ejemplo con identificadores¶
trace_id: 8f3a2c
span: api-gateway
duración: 20 ms
trace_id: 8f3a2c
span: users-service
duración: 45 ms
trace_id: 8f3a2c
span: orders-service
duración: 180 ms
Todos los fragmentos pertenecen a la misma petición porque comparten el mismo identificador de traza.
Una métrica puede indicar:
Una traza ayuda a responder:
Actividad de análisis¶
Analiza este ejemplo:
Petición: GET /api/orders/42
API Gateway 12 ms
Servicio usuarios 25 ms
Servicio pedidos 310 ms
Base de datos 280 ms
Responde:
- ¿Qué componente consume más tiempo?
- ¿Qué componente investigarías primero?
- ¿Qué métrica complementaria consultarías?
- ¿Qué log buscarías?
Respuestas esperadas:
- El servicio de pedidos y la base de datos.
- La consulta o conexión con la base de datos.
- Latencia de consultas, conexiones activas o errores de base de datos.
- Los logs del servicio de pedidos y de la base de datos.
6. Eventos¶
Un evento representa una acción o un cambio ocurrido en un instante concreto.
Ejemplos:
El servicio Grafana se ha reiniciado.
Se ha creado un nuevo usuario.
Se ha desplegado una nueva versión.
Se ha agotado el espacio disponible.
Se ha modificado la configuración.
Los eventos suelen ser puntuales, mientras que las métricas describen valores que pueden cambiar continuamente.
Consultar eventos en Ubuntu¶
Ver servicios fallidos:
Consultar el estado de un servicio:
Consultar los últimos reinicios:
Consultar los usuarios conectados:
Consultar servicios activos:
Actividad: comprobar servicios fallidos¶
Ejecuta:
Si no hay servicios fallidos, puedes obtener una salida similar a:
Responde:
1. ¿Hay algún servicio fallido?
2. ¿Esta información es una métrica, un log o un evento?
3. ¿En qué momento sería importante consultar este dato?
7. Comparación entre métricas, logs, trazas y eventos¶
| Tipo | Representa | Ejemplo | Pregunta principal |
|---|---|---|---|
| Métrica | Un valor medible | CPU al 75 % | ¿Cuánto? |
| Log | Un mensaje registrado | Error de conexión | ¿Qué ocurrió? |
| Traza | El recorrido de una petición | API → base de datos | ¿Dónde se produjo la demora? |
| Evento | Una acción puntual | Reinicio de un servicio | ¿Qué cambió? |
Ejemplo integrado¶
Supongamos que una aplicación responde lentamente.
Métricas¶
Indican que:
- Las peticiones tardan 2,4 segundos.
- La carga del sistema es elevada.
- Queda poca memoria disponible.
Logs¶
Indican que se ha producido un problema de conexión.
Traza¶
Indica que la mayor parte del tiempo se consume en la base de datos.
Evento¶
Puede explicar el inicio de la degradación.
Conclusión¶
Ningún tipo de dato proporciona por sí solo toda la información necesaria.
Una investigación completa combina:
8. Arquitectura del laboratorio¶
En el entorno del curso utilizaremos principalmente esta arquitectura:
El flujo completo es:
Node Exporter
↓
Expone métricas en /metrics
↓
Prometheus las recopila
↓
Grafana ejecuta consultas
↓
El usuario observa gráficos
9. Node Exporter¶
Node Exporter recopila información del sistema operativo y la expone en un formato compatible con Prometheus.
El endpoint habitual es:
Comprobar el servicio¶
Resultado esperado:
Comprobar el endpoint¶
La respuesta esperada contiene:
Consultar las primeras métricas¶
Buscar métricas de CPU¶
Buscar métricas de memoria¶
Buscar métricas de disco¶
Contar métricas expuestas¶
Actividad¶
Selecciona tres métricas y documenta:
Ten en cuenta que no todas las métricas representan porcentajes.
Ejemplos:
Es un contador acumulado en segundos.
Representa memoria disponible en bytes.
Representa la carga media del sistema durante un minuto.
10. Prometheus¶
Prometheus recopila, almacena y permite consultar métricas.
Comprobar si está preparado¶
Respuesta esperada:
Consultar su API¶
La consulta up permite comprobar si los objetivos monitorizados están disponibles.
Interpretación:
El objetivo está disponible.
El objetivo está configurado, pero no responde correctamente.
11. Grafana¶
Grafana consulta las fuentes de datos y representa los resultados mediante paneles y dashboards.
Grafana permite:
- Ejecutar consultas.
- Crear gráficos.
- Crear tablas.
- Configurar dashboards.
- Analizar tendencias.
- Representar alertas.
Comprobar el acceso¶
La respuesta esperada contiene:
Configurar la fuente de datos¶
En Grafana:
- Accede a la interfaz web.
- Abre Connections.
- Selecciona Data sources.
- Abre la fuente de datos de Prometheus.
- Comprueba la URL configurada.
- Pulsa Save & test.
La URL puede ser:
o:
12. Práctica guiada¶
Práctica 1: identificar el estado del sistema¶
Ejecuta:
Completa la tabla:
| Dato | Resultado |
|---|---|
| Nombre del equipo | |
| Tiempo encendido | |
| Carga del sistema | |
| Memoria total | |
| Memoria disponible | |
Espacio libre en / |
|
| Dirección IP |
Responde:
- ¿Cuánto tiempo lleva encendido el sistema?
- ¿La carga parece elevada?
- ¿Cuánta memoria está disponible?
- ¿Qué porcentaje del disco está ocupado?
- ¿Qué datos son métricas?
- ¿Qué datos son información de configuración?
Práctica 2: consultar Node Exporter¶
Comprueba el servicio:
Comprueba el endpoint:
Busca métricas concretas:
Documenta tres métricas con esta plantilla:
Práctica 3: consultar Prometheus¶
Accede a:
Ejecuta estas consultas:
Responde:
- ¿Cuántos objetivos están activos?
- ¿Qué valor tiene la carga de un minuto?
- ¿Cuánta memoria está disponible?
- ¿Qué sistemas de ficheros aparecen?
- ¿Cuántas series de CPU existen?
Práctica 4: crear un dashboard en Grafana¶
Crea un dashboard con los siguientes paneles.
Panel 1: carga media¶
Consulta:
Título:
Visualización recomendada:
Panel 2: uso estimado de CPU¶
Consulta:
Título:
Panel 3: memoria utilizada¶
Consulta:
Título:
Configura la unidad del panel como porcentaje cuando corresponda.
13. Comprobación del entorno¶
Antes de realizar las prácticas, comprueba los servicios:
Los tres deberían devolver:
Comprueba los puertos:
Deberían aparecer:
Comprueba los endpoints:
14. Resolución de problemas¶
Node Exporter no responde¶
Comprueba el servicio:
Comprueba el puerto:
Consulta los logs:
Prometheus muestra up = 0¶
Comprueba el endpoint del exporter:
Revisa la configuración:
Valida el fichero:
Reinicia Prometheus después de modificar la configuración:
Grafana no muestra datos¶
Comprueba:
- Que Prometheus está activo.
- Que Node Exporter responde.
- Que
updevuelve1. - Que la URL de la fuente de datos es correcta.
- Que el intervalo temporal incluye datos recientes.
- Que la consulta no contiene etiquetas incorrectas.
15. Práctica de investigación¶
Situación¶
Un usuario informa:
La aplicación responde lentamente desde hace unos minutos.
Investiga el sistema y recopila evidencias.
Paso 1: comprobar la carga¶
Paso 2: comprobar la memoria¶
Paso 3: comprobar el disco¶
Paso 4: comprobar servicios fallidos¶
Paso 5: buscar errores recientes¶
Paso 6: consultar Node Exporter¶
curl -s http://127.0.0.1:9100/metrics \
| grep -E '^node_load|^node_memory_MemAvailable_bytes|^node_filesystem_avail_bytes' \
| head -20
Informe¶
Completa:
## Incidencia
Descripción:
## Métricas observadas
Carga del sistema:
Memoria disponible:
Espacio libre:
## Logs observados
¿Hay errores recientes?
¿Qué servicios aparecen?
## Eventos observados
¿Se ha reiniciado algún servicio?
¿Hay unidades fallidas?
## Hipótesis
¿Cuál puede ser la causa del problema?
## Evidencias
¿Qué comandos y resultados apoyan la hipótesis?
## Siguiente comprobación
¿Qué consultarías a continuación?
16. Errores frecuentes¶
Confundir una métrica con un log¶
Esto es una métrica:
Esto es un log:
La métrica tiene una estructura numérica y puede representarse en una serie temporal. El log es un mensaje descriptivo.
Interpretar un valor sin conocer su unidad¶
Estos valores no significan lo mismo:
Antes de interpretar una métrica hay que conocer:
- Nombre.
- Unidad.
- Tipo de dato.
- Etiquetas.
- Momento de recopilación.
Confundir estado con tendencia¶
Un comando puede mostrar:
Pero no sabemos si:
- Acaba de subir.
- Lleva una hora alta.
- Está descendiendo.
- Es un pico puntual.
Para conocer la tendencia necesitamos varios valores a lo largo del tiempo.
Consultar una única fuente¶
Un gráfico puede mostrar que la latencia es alta, pero no explicar la causa.
Por eso conviene combinar:
17. Puntos clave¶
- La telemetría recopila información sobre sistemas, aplicaciones y servicios.
- Las métricas son valores numéricos que pueden observarse a lo largo del tiempo.
- Los logs son mensajes generados por aplicaciones y servicios.
- Las trazas muestran el recorrido de una petición entre componentes.
- Los eventos representan acciones o cambios puntuales.
- Una métrica aislada ofrece menos información que una serie temporal.
- El nombre, el valor, la unidad y las etiquetas son necesarios para interpretar una métrica.
- Node Exporter expone métricas del sistema operativo.
- Prometheus recopila y almacena métricas.
- Grafana consulta y visualiza esas métricas.
- Una ausencia de datos también puede ser una señal importante.
- Un valor numérico sin contexto puede interpretarse incorrectamente.
- La investigación de un problema suele requerir combinar varias fuentes de telemetría.
18. Preguntas de comprobación¶
- ¿Qué es la telemetría?
- ¿Para qué sirve recopilar datos de un sistema?
- ¿Qué diferencia existe entre una métrica y un log?
- ¿Qué información proporciona una traza?
- ¿Qué es un evento?
- Clasifica este dato:
node_load1 0.85. - Clasifica este mensaje:
ERROR: database connection timeout. - ¿Qué comando permite consultar la carga media de Ubuntu?
- ¿Qué comando permite consultar la memoria disponible?
- ¿Qué comando permite consultar los logs del sistema?
- ¿Qué comando permite consultar los logs de un servicio?
- ¿Qué endpoint expone normalmente Node Exporter?
- ¿Qué indica una respuesta HTTP
200 OKen/metrics? - ¿Qué función cumple Prometheus?
- ¿Qué función cumple Grafana?
- ¿Por qué no basta con observar un único valor?
- ¿Qué información aportan las etiquetas?
- ¿Por qué es útil combinar métricas y logs?
- ¿Qué puede indicar que una métrica deje de actualizarse?
- ¿Qué investigarías si una aplicación responde lentamente?
Soluciones orientativas¶
- La recopilación y análisis de información sobre el estado y comportamiento de sistemas.
- Para detectar problemas, observar tendencias, investigar incidentes y tomar decisiones.
- Una métrica es un valor numérico; un log es un mensaje registrado.
- El recorrido y la duración de una petición entre diferentes componentes.
- Una acción o cambio ocurrido en un instante concreto.
- Métrica.
- Log.
uptime.free -h.journalctl.journalctl -u nombre-del-servicio.http://127.0.0.1:9100/metrics.- Que el endpoint responde correctamente.
- Recopilar, almacenar y consultar métricas.
- Consultar y visualizar datos mediante paneles y dashboards.
- Porque no permite conocer la evolución ni detectar tendencias.
- Identifican la serie temporal y permiten filtrar o agrupar datos.
- Las métricas muestran la magnitud del problema y los logs aportan contexto.
- Que el exporter, el servicio, la red o el sistema de recopilación puede tener un problema.
- La carga, la memoria, el disco, la red, los logs, las trazas y los eventos recientes.