Como monitorear y aprender como funcionan sistemas usando series de tiempo, usado herramientas como Telegraf, InfluxDB y Grafana.
Presentación de 2019 por lo que hay mas herramientas disponibles, pero el enfoque sigue siedo valido.
2. Pulso
● Medición no intrusiva
● Puede dar una idea de salud, estado
emocional, actividad física, etc
● Partiendo de una estado estable
(saludable y en reposo) podría dar
pistas de otras cosas ocurriendo en
el mismo entorno
● No es un número, es cómo cambia
una serie de valores en el tiempo
3. Series de tiempo
● Métricas asociadas a un momento del tiempo
● Muestra X cambiando en el tiempo, no como X se relaciona con Y
● Muestra datos como una película, no como foto estática
● Cuentan una historia sobre el presente y el pasado
● Permiten ver, explorar y descubrir de forma intuitiva
● Cómo se ve cuando está bien? mal? ahora?
● Umbrales de seguridad
● Correlación con eventos de la “vida real”
● Hacer predicciones
● Patrones
● Tendencias
● Anomalías
● Correlaciones entre métricas
4. Algunas decisiones de diseño
● No interferencia: Medir no tiene que afectar al sistema medido.
● Frecuencia: Mayor granularidad deja ver cambios repentinos
● Flexible: Cada componente puede reemplazarse o complementarse por
alternativas más adecuadas para lo que se quiere ver.
● Multiplataforma: obtener métricas de muchos sistemas, incluyendo obsoletos.
● Distribuido: La recolección de métricas puede distribuirse.
● Diverso: Métricas de muchos tipos distintos de fuentes
● Abierto: Modificar, inspeccionar, replicar
● Seguro: cada uno define lo que es razonable en esto
5. Componentes
Colectores
de métricas
Time
Series DB
➢ Telegraf
➢ Prometheus
➢ Beats/Logstash
➢ statsd
➢ Scripts/crons
➢ etc
➢ InfluxDB
➢ Prometheus
➢ Graphite
➢ VictoriaMetrics
➢ ElasticSearch
➢ etc
Dashboards (Grafana)
Detección anomalías
Alertas
6. ● Agente de recolección de métricas genérico
○ Hecho por la misma empresa que hace InfluxDB, pero puede enviar métricas a muchas otras
DBs, actuar como cliente Prometheus y mucho más.
○ toma métricas de 200+ fuentes, incluyendo nativas del equipo (cpu, disco, red, etc), genéricas
de red (snmp, logs, servicios http json, etc) o específicas de plataformas (VMWare, JVM,
Docker, Kubernetes, etc)
● Funcionalidades extra útiles
○ filtros
○ transformaciones
○ agrupaciones
7. ● DB orientada/optimizada para series de tiempo
○ puede guardar/procesar miles de métricas por segundo en hardware modesto
● Lenguaje de consulta parecido a SQL
● Emula interfaces de otras TSDBs populares
○ puede recibir métricas de agentes para graphite, statsd y otros
● Muchos sistemas soportan nativamente enviar métricas a InfluxDB
● Sintaxis de alimentación de datos simple
○ es simple enviar datos desde nuestro propio código o shell scripts
● Políticas de retención y downsampling
○ cuanta historia quiero? necesito la misma granularidad para lo viejo?
8. ● Interfaz web de consulta/visualización de bases de series de tiempo
● Permite hacer dashboards combinando muchas gráficas de métricas, todas
sincronizadas en el tiempo y navegables
● se le pueden configurar alertas y notificaciones
● variables para parametrizar gráficas
● puede recibir y desplegar eventos asociadas a las gráficas
● “Viva”, puede hacer autorefresco de gráficas con frecuencia ajustable
● Fácil e intuitiva para definir gráficas y dashboards, grafana.net tiene plugins y
dashboards ya hechos
● Soporta consultar muchos tipos de fuentes de datos (SQLs, nube, etc)
13. Qué entendemos por sistema?
● “Mi aplicación”
● Computadora donde corre
● Servicios de los que depende
● Red?
● Usuarios?
● Internet?
Todo lo que puede influenciar su funcionamiento correcto y entender porqué se
comporta como lo hace. O el punto donde decidimos dejar de analizar.
14. Implementación
● Una instalación de InfluxDB en una VM recibe bien variedad de datos de
150+ máquinas cada 30 segundos/1 minuto
● Un Grafana puede manejar varias organizaciones y fuentes de datos
● 1 telegraf por equipo fisico o VM para datos internos (cpu, disco, algunas de
las aplicaciones locales soportadas, etc)
○ Algunos de esos telegraf pueden tomar roles de colectores de métricas de servicios de red
○ Algunos telegraf (con configuraciones alternativas) pueden enviar datos a otros tipos de bases
de datos más adecuados para algunas métricas o analíticas (p/ej logs para Loki o
Elasticsearch)
15. Implementación (II)
● Algunas aplicaciones pueden enviar métricas (por tiempo o evento)
directamente a Influxdb, o exponerlas en una interfaz REST para Telegraf
● Procesos batch/crons/etc pueden enviar métricas de datos que recolectan o
resultados de ejecución con curl o usando librerías de influxdb.
● Lógica de negocio, deploys en producción, o menciones podrían seguirse y
correlacionarse con otras métricas.
● Dashboards por aplicación, máquina/VM, y por sistema (paneles
representativos de los distintos componentes que hacen el sistema andar).
● En Grafana el uso de variables permite tener un dashboard y aplicarlo a
distintos elementos del mismo tipo