Este documento discute los desafíos de monitorear contenedores y propone buenas prácticas. Explica que la instrumentación tradicional no funciona bien para contenedores, debido a su naturaleza aislada. En cambio, sugiere monitorear a nivel de kernel para obtener métricas de forma transparente sin configuración. También enfatiza la necesidad de etiquetar automáticamente las métricas para darles sentido a los equipos, y proveer análisis y depuración de fallos a nivel de llamadas al sistema.
2. ¿Cómo montar un sistema de monitorización?
Aplicaciones
Infrastructura
Health
Checks
JVM/JMX
Custom
metrics
Métricas Procesado Unicornios, arcoiris
y dashboards super bárbaros
3.
4. % whoami
Jorge Salamero Sanz
<jorge.salamero@sysdig.com> @bencerillo
@sysdig
• Working on OSS last 12 years
• Working on OSS+Cloud last 5 years
• Working on monitoring last 3 years
• Technical Marketing Foo geek @sysdig
5. Agenda
• Retos de la infraestructura con contenedores
• Problemática de la monitorización tradicional
• Buenas prácticas monitorizando contenedores
• Sysdig, monitorización nativa de contenedores
6. Rompiendo moldes
El uso de microservicios y contenedores rompe
las metodologías de monitorización y análisis tradicionales
15. Monitorización de contenedores
Nuevos retos:
1. Obtención de las métricas
2. Darle sentido a tanta información
3. Análisis y depuración de fallos
4. Equipos por servicio
16. Monitorización de contenedores
Nuevos retos:
1. Obtención de las métricas
2. Darle sentido a tanta información
3. Análisis y depuración de fallos
4. Equipos por servicio
17. 1. Obtención de métricas
• We containers, porque:
– son sencillos
– son pequeños
– están aislados
– menos dependencias
• … pero son una caja negra opaca
18. “Apaños”
Agente en el
contenedor
Docker
Agente en el pod
de Kubernetes
Exponer métricas a un
agente externo
App Agente App Agente
App
Agente
App
App
App
1. Instrumentación compleja (x2 debido a la monitorización)
incluyendo configuración de los servicios
2. Colección de métricas pre-establecido y limitado (Docker API, etc)
19. Instrumentación en el kernel
Kernel
Docker
Container
1
Container
2
Container
3
App App
rkt LXC
Sysdig
Docker
2. Obtención y análisis
1. Instrumentación
en el kernel
20. Ventajas
• Una instrumentación/agente por host
– crear o destruir un contenedor no require instrumentación
• Completa visibilidad: todas las llamadas al sistema:
– descubrimiento automático de servicios
– se recogen todas las métricas (sin filtrado previo)
– monitorización a nivel de aplicación sin instrumentación
(decodificando el protocolo)
21. Monitorización de contenedores
Nuevos retos:
1. Obtención de las métricas
2. Darle sentido a tanta información
3. Análisis y depuración de fallos
4. Equipos por servicio
22. Recordad… pero en realidad:
Base de datos Aplicación Caché
Nodo de cálculo
Nodo de cálculo Nodo de cálculo
Nodo de cálculo Nodo de cálculo
Nodo de cálculo
23. 2. Darle sentido a tanta información
• Monitorizar la infraestructura debería ser transparente y
automático (sin instrumentación ni configuración)
• Sólo deberías encargarte de tus propias métricas
• Toda métrica debería ser etiquetada automáticamente
• Métricas deben poder segmentarse basándose en los
servicios
24. Esquema de una aplicación
Base de datos Applicación Caché
backend middleware frontend
26. Monitorización de contenedores
Nuevos retos:
1. Obtención de las métricas
2. Darle sentido a tanta información
3. Análisis y depuración de fallos
4. Equipos por servicio
28. 3. Análisis y depuración de fallos
• Imagina:
strace + wireshark + htop + lsof + iostat + vmstat + *
• No disponibles en un contenedor, no los entienden
• Las métricas y los logs no tienen toda la
información, las llamadas al sistema si
• Infraestructura compleja y volátil
30. Monitorización de contenedores
Nuevos retos:
1. Obtención de las métricas
2. Darle sentido a tanta información
3. Análisis y depuración de fallos
4. Equipos por servicio
31. Equipos en la infraestructura
Francesc Zacarias, SRE @ Spotify
32. 4. Equipos por servicio
• Etiquetas de la plataforma de orquestación, en
Kubernetes:
– namespaces (dev, prod)
– services, deployments, RCs, pods
– etiquetas propias
• Privilegios de acceso automáticos (dashboards, alertas,
etc) en escenarios multi-tenant
33. Monitorización de contenedores
Nuevos retos:
1. Obtención de las métricas
2. Darle sentido a tanta información
3. Análisis y depuración de fallos
4. Equipos por servicio
34. Sysdig
• 100% software libre
• 1M+ descargas
• Análisis en 1 host
• SaaS y on-prem
• 200+ clientes
• Análisis en n hosts
• Dashboards, alertas,
eventos, equipos