Alejandro E. Brito Monedero
@ae_bm
http://cache2.asset-cache.net/xd/495435144.jpg
sysdig
cavando la tumba de los bugs
Advertencias
Ronin
Parental Advisory
- Puede contener trazas de comentarios
políticamente incorrectos
- Metáforas impactantes
En caso de emergencia
Advertencias
Ronin
Parental Advisory
- Puede contener trazas de comentarios
políticamente incorrectos
- Metáforas impactantes
En caso de emergencia
http://science-all.com/image.php?pic=/images/wallpapers/cute-dog/cute-dog-13.jpg
Esquema
Problema
Herramientas
Sysdig
Ejemplos
I want to play a game
Amistad o lo que surja
El problema
Buenas practicas de software operable
Software que siempre funciona
Contenedores
Serverless
El problema
Buenas practicas de software operable
Software que siempre funciona
Contenedores
Serverless → NoOps
El problema
Buenas practicas de software operable
Software que siempre funciona
Contenedores
Serverless → NoOps → NoDev
El problema
Buenas practicas de software operable
Software que siempre funciona
Contenedores
Serverless → NoOps → NoDev → NoHope
http://i.giphy.com/6lScd4x2D5Oko.gif
strace
Sólo sirve para ver lo que pasa al nivel de
llamas al sistema
Buena suerte cuando no sabes que proceso
esta funcionando mal
Es divertido de usar con procesos con workers
o multihilo
strace
Los procesos pueden no ser traceables
Un farmacéutico comentará que puede afectar
el performance del proceso y hasta causar la
muerte
Una usabilidad …
strace
Cambios de contexto everywhere
Wireshark
Sólo se puede analizar tráfico de red
Capacidad de filtrado poderosa y capacidad de
decodificar protocolos
Puede ser imposible relacionar el proceso y su
tráfico de red
Wireshark
Puede sobrecargar la maquina
No lo ejecutas ni lo tienes instalado en los
servidores
Dtrace, eBPF y amigos
Más poder que todo el arsenal del mundo
No esta limitado a llamadas al sistema, se
puede ver todo*, desde user space a el propio
SO
Curva de aprendizaje pronunciada
Dtrace, eBPF y amigos
Puede requerir un kernel reciente
Puede generar kernel panics
Hay que SABER de esos internals del SO que
seguro domina tu amigo fullstack
Servicio público
Recomiendo ponerle un altar y rezarle todos
los días al despertar y en las noches antes de
dormir. En dirección hacia Australia (en las
mañanas) y hacia Los Gatos California EEUU
(en las noches)
http://www.brendangregg.com/Images/brendan_2016b.jpg
http://www.brendangregg.com/
Servicio público
Querido Brendan que estás en Netflix
famoso por gritarle a los arreglos de discos
cuando sea grande quiero tener tu intelecto
tu jornada por Sun, el infierno y joyent la admiro
gracias por las metodologías, el ZFS L2ARC y los flame graphs
Por un mundo sin bugs!
Sysdig
Las revistas del corazón lo definirían como el
hijo entre strace y wireshark
La herramienta “definitiva” para hacer
troubleshooting del sistema y procesos
Sirve para hacer troubleshooting del sistema,
análisis y exploración
Sysdig
Compila un modulo para el kernel, ergo
necesitas los headers del kernel que este
corriendo
Puede capturar, filtrar y decodificar llamadas al
sistema y otros eventos del SO
Container aware
Sysdig
Tiene menos overhead que strace
Permite hacer inspecciones en vivo o generar
capturas para ser analizadas posteriormente
Su lenguaje de filtrado es potente, se puede
personalizar su salida y además puede ser
extendido con scripts en Lua, llamados chisels.
Chisels son <3
http://www.brendangregg.com/Perf/linux_observability_tools.png
Sysdig
@sysdig
http://cloud-2.steamusercontent.com/ugc/521625973730256737/03249B676F1DE669063A5B7EBD3046E6C90DB709/
Contenedores - Docker
docker run -i -t --name sysdig --privileged -v 
/var/run/docker.sock:/host/var/run/docker.sock 
-v /dev:/host/dev -v /proc:/host/proc:ro 
-v /boot:/host/boot:ro 
-v /lib/modules:/host/lib/modules:ro 
-v /usr:/host/usr:ro sysdig/sysdig
http://www.sysdig.org/install/
Diseccionando la salida de sysdig
sysdig -pc | head -n 3
14 11:23:42.532495201 7 host (host)
hipchat.bin (2866:2866) > poll fds=3:u5
timeout=4294967295
15 11:23:42.532497738 7 host (host)
hipchat.bin (2866:2866) < poll res=1 fds=3:u4
http://www.sysdig.org/install/
http://giphy.com/gifs/film-vintage-UDjF1zMreMld6
Ejemplos
Guardar para analizar despues las llamadas a
open
sysdig -w captura.scap evt.type=open
Las 10 llamadas al sistema más lentas
sysdig -c bottlenecks "evt.latency > 0"
Ejemplos
Ver lo que hace cron con sus fds
sysdig -c echo_fds disable_color
proc.name=cron
Ver que procesos abrieron ficheros
sysdig -r captura.scap -p "%proc.name" |
sort | uniq
Ejemplos
Crear una captura refinada
sysdig -r captura.scap -w captura_comando.scap
“proc.name = comando”
P0rn0
sysdig -c spectrogram
sysdig -c subsecoffset
Ejemplos
Champu de aroma de hierbas*
csysdig
* https://www.youtube.com/watch?v=9FymrwnJngI
Ayuda sysdig
Internet
http://www.sysdig.org/wiki/
https://sysdig.com/blog/linux-
troubleshooting-cheatsheet/
Ver los filtros disponibles
sysdig -l
Ayuda sysdig
Ver los chisels que trae
sysdig -cl
Ver los eventos soportados
sysdig -L
Info de un chisel
sysdig -i <chisel>
I want to play a game
http://i.giphy.com/vP4ci3sz5YZHi.gif
¿Por qué muere el daemon?
docker run --name ej1 -d aebm/ej1:v1
docker ps -a | grep ej1
docker start ej1
¿Por qué muere el daemon?
sysdig -pc "container.name=ej1 and
evt.failed=true"
Saber donde se escribe el log
FATAL
docker run --name ej2 -v /tmp/ej2:/data/ -d
aebm/ej2:v1
Saber donde se escribe el log
FATAL
sysdig -p "%fd.name" "container.name=ej2 and
evt.type=write and evt.buffer contains FATAL"
¿Qué gato se pide por http a
procatinator?
docker run --name ej3 --rm aebm/ej3:v1
¿Qué gato se pide por http a
procatinator?
sysdig -A -c echo_fds "container.name=ej3 and
fd.port=80 and evt.buffer contains procatinator"
Amistad o lo que surja
Esto es para que preguntéis. No os hagáis
falsas esperanzas
https://s-media-cache-ak0.pinimg.com/736x/d4/21/e7/d421e7f55fa2633026eb8ffc8280d9b9.jpg
Agradecimientos
Liferay por el sitio
8KData por las pizzas
Madrid DevOps por coger esta charla como
clausura (hasta Septiembre)

Sysdig