SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
Top Bug 
Codemotion Madrid España 2014 
Alejandro E. Brito Monedero - @ae_bm
Sobre mi 
Trabajo como sysadmin / devops / SRE / lector 
de mensajes de error / título tonto aquí 
Miembro de Madrid DevOps, Postgres España, 
Python Madrid y muchos más meetups de los 
que puedo asistir 
Más info en http://bit.ly/1sT7bLw 
Charla inspirada por 
http://youtu.be/UxFq16IG_k0
Sobre mi
Plan de operaciones 
Un poco de teoría aburrida 
Loadout 
Historias de batallas 
Lecciones para llevar 
Referencias y créditos 
Preguntas
Un poco de teoría aburrida
Un poco de teoría aburrida 
¿Por qué? 
Hay que saber como actuar para cuando 
lleguen las crisis. Si, llegarán 
Si vis pacem, para bellum
Un poco de teoría aburrida 
¿Qué hacer? / ¿Qué hago? 
Mantener la calma 
No caer en el quedar inmóvil / huir 
Evitar ser trigger happy / disparar primero y 
preguntar después
Un poco de teoría aburrida 
¿Qué hacer? / ¿Qué hago? 
Mantener la calma 
No caer en el quedar inmóvil / huir 
Evitar ser trigger happy / disparar primero y 
preguntar después
Un poco de teoría aburrida 
Pasar de esto
Un poco de teoría aburrida 
A esto
Un poco de teoría aburrida 
¿Cómo? / El arma secreta 
El método científico 
Descripción del problema 
Hipótesis 
Predicción 
Prueba (experimental / observacional) 
Análisis
Un poco de teoría aburrida 
¿Cómo? / El arma secreta 
Una técnica que uso para formular hipótesis 
es pensar en como puede estar 
implementado el sistema o como yo lo 
hubiera implementado
Un poco de teoría aburrida 
Uno de los principales obstáculos 
El efecto observador / heisenbugs
Loadout
Loadout 
Código fuente 
La fuente última (no pun intended) 
A veces es tan feo o complejo que es 
preferible estar abordo del Event Horizon, 
puede ser como estar en la dimensión de los 
cenobites 
Se puede usar la técnica del print
Loadout 
Logs 
Según como estén, si es que están, pueden 
ser un valioso aliado 
Dependen del equipo de desarrollo, ¡sí tu! 
No el de atrás 
¡Nada como los stacktraces! Nadie nunca ha 
dicho esto
Loadout 
Estado general del sistema 
htop: Top pero más bonito / ajustable 
atop: Sirve para capturar a esos procesos 
de muy corta duración 
vmstat: Ver casi todo el estado del sistema 
iotop: Como top pero para el IO 
sar: Información de actividad del sistema
Loadout 
lsof 
Siglas de list open files 
Todo (casi) en unix es un fichero 
Al saber que ficheros tiene abiertos un 
proceso se puede ver si escribe en algún log 
o si tiene conexiones de red, en este 
apartado también se podría usar ss o 
netstat
Loadout 
lsof 
También sirve para saber que procesos tienen 
directorios o ficheros abiertos 
lsof -n -p <pid> 
lsof <fichero> 
lsof +D <directorio> 
lsof -n -i 4TCP@<ip>:<puerto>
Loadout 
Tcpdump / tshark / wireshark 
Las herramientas para saber que pasa en la 
red 
El antídoto contra la gente que no 
documenta sus APIs
Loadout 
Tcpdump / tshark / wireshark 
No sirve con SSL a menos que se tenga la 
llave privada y no se este usando perfect 
forward secrecy. También se puede usar un 
proxy que haga de MITM o quitar / degradar 
SSL
Loadout 
Tcpdump / tshark / wireshark 
En la máquina siendo analizada (a veces 
puede ser util usar la opción -B 
tcpdump -n -p -i <iface> -s 0  
-w <capture file> <pcap filter> 
En la máquina desde la que se hace el 
análisis 
wireshark <capture file>
Loadout 
strace 
Para cuando se entra en territorios hostiles 
Para hacer tracing de llamadas al sistema y 
señales 
Existe una versión para hacer tracing a nivel 
de la biblioteca de C llamada ltrace
Loadout 
strace 
Puede hacer tracing sobre procesos hijos del 
proceso estudiado 
Permite ver el tiempo que tardan las 
llamadas al sistema 
Pero el proceso siendo estudiado se ejecuta 
más lento
Loadout 
strace 
strace [-S <sortby>] -c -p <pid> 
strace -o <fichero> [-T] [-ff]  
[-s <strsize>] [-e <expr>]  
-p <pid>
Loadout 
sysdig 
Herramienta de exploración a nivel de 
sistema 
Es como un tcpdump sobre el flujo de 
llamadas a sistema 
Extensible con lua
Loadout 
sysdig 
No genera tanto overhead como strace 
Crea un módulo para el kernel 
No se puede tener más de una instancia en 
ejecución
Loadout 
sysdig 
Necesita privilegios de root 
Se ha ganado mi <3 por su capacidad de 
usar filtros y chisels 
Sólo sirve en Linux
Loadout 
sysdig 
sysdig -w <capture file>  
[-s <len>] <filtro> 
sysdig -r <capture file>  
[-c <chisel> <args>]
Loadout 
Escribir tus propias herramientas 
Quitarse el trabajo manual 
Procesar de maneras no imaginadas la data 
que ya tenemos
Loadout 
Herramientas para gente grande 
Implica saber más de sistemas operativos 
Por ahora no he sentido la necesidad de 
usarlas más allá que para pruebas 
Por ejemplo: dtrace, SystemTap, ftrace, ...
Top Bug
Historias de batallas
Historias de batallas 
Caso 1 
Postfix no inicia 
/var/log/mail.log sólo muestra 'ERROR' 
Por experiencia sabemos que muchos 
errores son problemas de permisos 
Sabemos que postfix está dividido en 
múltiples procesos
Historias de batallas 
Caso 1 
Para descartar el problema de los permisos 
usamos strace 
Cambiamos el script de inicio para que llame 
a postfix con la opción -ff 
Revisamos los ficheros que creó strace 
buscando las llamadas al sistema que no 
terminaron correctamente
Historias de batallas 
Caso 1 
Encontramos una llamada a open que 
referencia a un fichero dentro de 
/var/spool/postfix falló por un problema de 
permisos 
Comparamos los atributos del fichero en una 
máquina que no presenta el problema 
Tiene permisos distintos
Historias de batallas 
Caso 1 
Cambiamos los permisos para que sean 
iguales que en el sistema control 
Postfix inicia correctamente
Historias de batallas 
Caso 2 
La aplicación X no funciona 
Nadie sabe donde guarda los logs 
Sabemos que el log puede ser una conexión 
a algo como syslog o un fichero 
Nada que haga referencia a la aplicación 
en /var/log
Historias de batallas 
Caso 2 
No saben que es syslog 
Sabemos que la aplicación esta programada 
en un lenguaje interpretado 
Con pgrep buscamos procesos con el 
interprete que se está utilizando 
Con el PID listamos con lsof los ficheros que 
tiene abierto el proceso
Historias de batallas 
Caso 2 
Conseguimos que el log estaba 
guardándose en /tmp 
El log indica cual es el problema con la 
aplicación
Historias de batallas 
Caso 3 
Una aplicación web tiene un performance de 
pena 
El sistema recibe peticiones HTTP, revisa en 
una BD y publica mensajes en un broker 
Los desarrolladores piden más HW y 
máquinas, culpan al broker de ser un cuello 
de botella
Historias de batallas 
Caso 3 
Hay otra aplicación que usa el broker y no va 
tan lento, descartamos esa opción 
Sabemos por experiencia que usualmente la 
gente no sabe usar las BBDD 
Pensamos que seria interesante saber que 
queries se están enviando a la BD
Historias de batallas 
Caso 3 
Revisar las queries desde la BD es 
complicado dado el despliegue actual 
Desde el frontal web lanzamos tcpdump para 
capturar el tráfico de la app a la BD 
Con wireshark revisamos la captura y vemos 
muchas queries a las tablas del schema
Historias de batallas 
Caso 3 
Comentamos al equipo de desarrollo que el 
ORM sux 
Cambian la configuración del ORM para que 
no haga siempre las consultas al esquema 
El desempeño de la aplicación se multiplica 
por 10 sin agregar más HW o máquinas
Historias de batallas 
Caso 4 
La aplicación web no sirve los ficheros que 
se le piden 
¿Por qué esto no lo hace el servidor web si 
están en el filesystem? 
Los ficheros están en el filesystem pero la 
aplicación web no los encuentra
Historias de batallas 
Caso 4 
Hay que averiguar donde la app esta 
buscando 
Es engorroso usar strace en aplicaciones 
donde los procesos son creados y destruidos 
de forma continua 
sysdig permite filtrar eventos por nombre de 
proceso y por acción
Historias de batallas 
Caso 4 
Usamos sysdig con un filtro que sólo vea los 
eventos de filesystem generados por los 
procesos X, que hayan tenido errores y cuyo 
nombre de fichero sea similar a Y
Historias de batallas 
Caso 4 
Revisamos la captura y vemos que la app 
buscaba el nombre del fichero solicitado 
agregándole parámetros al nombre 
Se elimina el bug
Lecciones para llevar 
Las herramientas vienen y van, lo importante 
es el plan de acción, el mindset: 
“Es un error capital teorizar antes de tener 
datos. Sin darse cuenta, uno empieza a 
deformar los hechos para que se adapten a 
las teorías, en lugar de adaptar las teorías a 
los hechos” Sherlock Holmes - Arthur Conan 
Doyle
Lecciones para llevar 
Mantener la cabeza fría 
No olvidar el principio de presunción de 
inocencia 
Usar la imaginación para saber como puede 
estar hecho el sistema 
Es bueno saber “un poco” de sistemas 
operativos y de la arquitectura de la aplicación
Referencias y créditos 
Man 2 <syscall> 
Internets 
Brendan Gregg 
http://www.brendangregg.com/index.html 
@brendangregg 
http://goo.gl/DDfgGq 
http://goo.gl/I1XKzU
Referencias y créditos 
http://oi52.tinypic.com/iyodxs.jpg 
http://i.giphy.com/fDzM81OYrNjJC.gif 
http://i.giphy.com/110VRbH47qa2Jy.gif 
http://upload.wikimedia.org/wikipedia/commons/3/3c/Displacement_roll_with_instruct 
ion_diagram.PNG 
http://upload.wikimedia.org/wikipedia/commons/1/18/AIM-54_6_Pack.jpg 
http://i.giphy.com/GlMN2r04gXTgs.gif 
https://upload.wikimedia.org/wikipedia/commons/0/00/F-14_VF- 
111_launching_Phoenix_1991.jpeg 
https://upload.wikimedia.org/wikipedia/commons/d/d3/Rainbow_bug.png 
http://upload.wikimedia.org/wikipedia/commons/4/4e/Plaque_Commemorating_Battl 
e_of_Harlem_Heights,_near_Riverside_Church.jpg 
http://i.giphy.com/6rgpEGDP0Rv3i.gif
Preguntas
¡Gracias!

Más contenido relacionado

La actualidad más candente

Semana 9 standard io and pipes guia de ejercicios resuelta
Semana 9   standard io and pipes  guia de ejercicios resueltaSemana 9   standard io and pipes  guia de ejercicios resuelta
Semana 9 standard io and pipes guia de ejercicios resueltavictdiazm
 
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltaSemana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltavictdiazm
 
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
Semana 7 y 8   the linux filesystem guia de ejercicios resueltaSemana 7 y 8   the linux filesystem guia de ejercicios resuelta
Semana 7 y 8 the linux filesystem guia de ejercicios resueltavictdiazm
 
Interesante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanningInteresante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanningxavazquez
 
Python (Lenguaje de Programación)
Python (Lenguaje de Programación)Python (Lenguaje de Programación)
Python (Lenguaje de Programación)Ricardo Muñiz
 
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para guardar información
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para   guardar informaciónJAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para   guardar información
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para guardar informaciónUniversidad Santo Tomás
 
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resueltaSemana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resueltavictdiazm
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
 

La actualidad más candente (14)

Semana 9 standard io and pipes guia de ejercicios resuelta
Semana 9   standard io and pipes  guia de ejercicios resueltaSemana 9   standard io and pipes  guia de ejercicios resuelta
Semana 9 standard io and pipes guia de ejercicios resuelta
 
Phyton
PhytonPhyton
Phyton
 
Ordenes del
Ordenes delOrdenes del
Ordenes del
 
Recetario de Látex
Recetario de LátexRecetario de Látex
Recetario de Látex
 
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltaSemana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
 
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
Semana 7 y 8   the linux filesystem guia de ejercicios resueltaSemana 7 y 8   the linux filesystem guia de ejercicios resuelta
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
 
Interesante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanningInteresante 211356497 comandos-linux-scanning
Interesante 211356497 comandos-linux-scanning
 
Python (Lenguaje de Programación)
Python (Lenguaje de Programación)Python (Lenguaje de Programación)
Python (Lenguaje de Programación)
 
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para guardar información
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para   guardar informaciónJAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para   guardar información
JAVA: TRY-CATCH-FINALLY y Uso de ficheros de texto para guardar información
 
Hx c27
Hx c27Hx c27
Hx c27
 
Unidad V Tutorial de Python
Unidad V Tutorial de PythonUnidad V Tutorial de Python
Unidad V Tutorial de Python
 
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resueltaSemana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
 
Intro to DTrace
Intro to DTraceIntro to DTrace
Intro to DTrace
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientes
 

Similar a Top Bug

Análisis Forense Memoria RAM
Análisis Forense Memoria RAMAnálisis Forense Memoria RAM
Análisis Forense Memoria RAMConferencias FIST
 
Curso Avanzado Seguridad Logs
Curso Avanzado Seguridad LogsCurso Avanzado Seguridad Logs
Curso Avanzado Seguridad LogsAntonio Durán
 
Curso Avanzado Seguridad Logs
Curso Avanzado Seguridad LogsCurso Avanzado Seguridad Logs
Curso Avanzado Seguridad LogsAntonio Durán
 
Colaborativo_Nelis Rivero
Colaborativo_Nelis RiveroColaborativo_Nelis Rivero
Colaborativo_Nelis RiveroNelisRivero
 
Localizacion de fallas
Localizacion de fallasLocalizacion de fallas
Localizacion de fallasFranke Boy
 
FIT 2018 - Malware Avanzado y Respuesta a Incidentes
FIT 2018 - Malware Avanzado y Respuesta a IncidentesFIT 2018 - Malware Avanzado y Respuesta a Incidentes
FIT 2018 - Malware Avanzado y Respuesta a IncidentesEgdares Futch H.
 
Estructura de sistema de archivos de linux
Estructura de sistema de archivos de linuxEstructura de sistema de archivos de linux
Estructura de sistema de archivos de linuxMarco Antonio
 
Descripción de actividades
Descripción de actividadesDescripción de actividades
Descripción de actividadescjtmodera
 
Descripción de actividades
Descripción de actividadesDescripción de actividades
Descripción de actividadescjtmodera
 
Analisis de red mediante Wireshark y Tcpdump
Analisis de red mediante Wireshark y TcpdumpAnalisis de red mediante Wireshark y Tcpdump
Analisis de red mediante Wireshark y TcpdumpJavier Martin Rivero
 
Presentación de logs
Presentación de logsPresentación de logs
Presentación de logsMatías Leal
 
VCNM73-EQ#6-SENDMAIL-TEGISTRO DE EVENTOS
VCNM73-EQ#6-SENDMAIL-TEGISTRO DE EVENTOSVCNM73-EQ#6-SENDMAIL-TEGISTRO DE EVENTOS
VCNM73-EQ#6-SENDMAIL-TEGISTRO DE EVENTOSJessica Onlyone
 
Introducción a los Sistemas Operativos
Introducción a los Sistemas OperativosIntroducción a los Sistemas Operativos
Introducción a los Sistemas OperativosJuan David Pareja Soto
 
Robo y crackeo del archivo sam en win nt 2000-xp
Robo y crackeo del archivo sam en win nt 2000-xpRobo y crackeo del archivo sam en win nt 2000-xp
Robo y crackeo del archivo sam en win nt 2000-xpAnxnLeg
 

Similar a Top Bug (20)

Hacking Etico by pseudor00t
Hacking Etico by pseudor00tHacking Etico by pseudor00t
Hacking Etico by pseudor00t
 
Modulo 5
Modulo 5Modulo 5
Modulo 5
 
Análisis Forense Memoria RAM
Análisis Forense Memoria RAMAnálisis Forense Memoria RAM
Análisis Forense Memoria RAM
 
Curso Avanzado Seguridad Logs
Curso Avanzado Seguridad LogsCurso Avanzado Seguridad Logs
Curso Avanzado Seguridad Logs
 
Curso Avanzado Seguridad Logs
Curso Avanzado Seguridad LogsCurso Avanzado Seguridad Logs
Curso Avanzado Seguridad Logs
 
Colaborativo_Nelis Rivero
Colaborativo_Nelis RiveroColaborativo_Nelis Rivero
Colaborativo_Nelis Rivero
 
Localizacion de fallas
Localizacion de fallasLocalizacion de fallas
Localizacion de fallas
 
FIT 2018 - Malware Avanzado y Respuesta a Incidentes
FIT 2018 - Malware Avanzado y Respuesta a IncidentesFIT 2018 - Malware Avanzado y Respuesta a Incidentes
FIT 2018 - Malware Avanzado y Respuesta a Incidentes
 
Análisis Forense
Análisis ForenseAnálisis Forense
Análisis Forense
 
Proceso
ProcesoProceso
Proceso
 
Tripwire 2006
Tripwire 2006Tripwire 2006
Tripwire 2006
 
Analisis forense-informatico
Analisis forense-informaticoAnalisis forense-informatico
Analisis forense-informatico
 
Estructura de sistema de archivos de linux
Estructura de sistema de archivos de linuxEstructura de sistema de archivos de linux
Estructura de sistema de archivos de linux
 
Descripción de actividades
Descripción de actividadesDescripción de actividades
Descripción de actividades
 
Descripción de actividades
Descripción de actividadesDescripción de actividades
Descripción de actividades
 
Analisis de red mediante Wireshark y Tcpdump
Analisis de red mediante Wireshark y TcpdumpAnalisis de red mediante Wireshark y Tcpdump
Analisis de red mediante Wireshark y Tcpdump
 
Presentación de logs
Presentación de logsPresentación de logs
Presentación de logs
 
VCNM73-EQ#6-SENDMAIL-TEGISTRO DE EVENTOS
VCNM73-EQ#6-SENDMAIL-TEGISTRO DE EVENTOSVCNM73-EQ#6-SENDMAIL-TEGISTRO DE EVENTOS
VCNM73-EQ#6-SENDMAIL-TEGISTRO DE EVENTOS
 
Introducción a los Sistemas Operativos
Introducción a los Sistemas OperativosIntroducción a los Sistemas Operativos
Introducción a los Sistemas Operativos
 
Robo y crackeo del archivo sam en win nt 2000-xp
Robo y crackeo del archivo sam en win nt 2000-xpRobo y crackeo del archivo sam en win nt 2000-xp
Robo y crackeo del archivo sam en win nt 2000-xp
 

Más de Alejandro E Brito Monedero (14)

Mad scalability (perfomance debugging)
Mad scalability (perfomance debugging)Mad scalability (perfomance debugging)
Mad scalability (perfomance debugging)
 
Tres historias
Tres historiasTres historias
Tres historias
 
AMQP vs GRAPHITE
AMQP vs GRAPHITEAMQP vs GRAPHITE
AMQP vs GRAPHITE
 
Sysdig
SysdigSysdig
Sysdig
 
Sysdig SRECon 16 Europe
Sysdig SRECon 16 EuropeSysdig SRECon 16 Europe
Sysdig SRECon 16 Europe
 
Funcional para trollear
Funcional para trollearFuncional para trollear
Funcional para trollear
 
Fabric más allá de lo básico
Fabric más allá de lo básicoFabric más allá de lo básico
Fabric más allá de lo básico
 
Experiencias con PostgreSQL en AWS
Experiencias con PostgreSQL en AWSExperiencias con PostgreSQL en AWS
Experiencias con PostgreSQL en AWS
 
Fabric Fast & Furious edition
Fabric Fast & Furious editionFabric Fast & Furious edition
Fabric Fast & Furious edition
 
Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?
 
AWS Baby steps circa 2008
AWS Baby steps circa 2008AWS Baby steps circa 2008
AWS Baby steps circa 2008
 
Using Logstash, elasticsearch & kibana
Using Logstash, elasticsearch & kibanaUsing Logstash, elasticsearch & kibana
Using Logstash, elasticsearch & kibana
 
Wireshark tips
Wireshark tipsWireshark tips
Wireshark tips
 
Mi experiencia con Amazon AWS EC2 y S3
Mi experiencia con Amazon AWS EC2 y S3Mi experiencia con Amazon AWS EC2 y S3
Mi experiencia con Amazon AWS EC2 y S3
 

Último

El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfcastrodanna185
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfangelinebocanegra1
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2montoyagabriela340
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...OLGAMILENAMONTAEZNIO
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.marianarodriguezc797
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....Aaron Betancourt
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSLincangoKevin
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 

Último (20)

El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdf
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdf
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 

Top Bug

  • 1. Top Bug Codemotion Madrid España 2014 Alejandro E. Brito Monedero - @ae_bm
  • 2. Sobre mi Trabajo como sysadmin / devops / SRE / lector de mensajes de error / título tonto aquí Miembro de Madrid DevOps, Postgres España, Python Madrid y muchos más meetups de los que puedo asistir Más info en http://bit.ly/1sT7bLw Charla inspirada por http://youtu.be/UxFq16IG_k0
  • 4. Plan de operaciones Un poco de teoría aburrida Loadout Historias de batallas Lecciones para llevar Referencias y créditos Preguntas
  • 5. Un poco de teoría aburrida
  • 6. Un poco de teoría aburrida ¿Por qué? Hay que saber como actuar para cuando lleguen las crisis. Si, llegarán Si vis pacem, para bellum
  • 7. Un poco de teoría aburrida ¿Qué hacer? / ¿Qué hago? Mantener la calma No caer en el quedar inmóvil / huir Evitar ser trigger happy / disparar primero y preguntar después
  • 8. Un poco de teoría aburrida ¿Qué hacer? / ¿Qué hago? Mantener la calma No caer en el quedar inmóvil / huir Evitar ser trigger happy / disparar primero y preguntar después
  • 9. Un poco de teoría aburrida Pasar de esto
  • 10. Un poco de teoría aburrida A esto
  • 11. Un poco de teoría aburrida ¿Cómo? / El arma secreta El método científico Descripción del problema Hipótesis Predicción Prueba (experimental / observacional) Análisis
  • 12. Un poco de teoría aburrida ¿Cómo? / El arma secreta Una técnica que uso para formular hipótesis es pensar en como puede estar implementado el sistema o como yo lo hubiera implementado
  • 13. Un poco de teoría aburrida Uno de los principales obstáculos El efecto observador / heisenbugs
  • 15. Loadout Código fuente La fuente última (no pun intended) A veces es tan feo o complejo que es preferible estar abordo del Event Horizon, puede ser como estar en la dimensión de los cenobites Se puede usar la técnica del print
  • 16. Loadout Logs Según como estén, si es que están, pueden ser un valioso aliado Dependen del equipo de desarrollo, ¡sí tu! No el de atrás ¡Nada como los stacktraces! Nadie nunca ha dicho esto
  • 17. Loadout Estado general del sistema htop: Top pero más bonito / ajustable atop: Sirve para capturar a esos procesos de muy corta duración vmstat: Ver casi todo el estado del sistema iotop: Como top pero para el IO sar: Información de actividad del sistema
  • 18. Loadout lsof Siglas de list open files Todo (casi) en unix es un fichero Al saber que ficheros tiene abiertos un proceso se puede ver si escribe en algún log o si tiene conexiones de red, en este apartado también se podría usar ss o netstat
  • 19. Loadout lsof También sirve para saber que procesos tienen directorios o ficheros abiertos lsof -n -p <pid> lsof <fichero> lsof +D <directorio> lsof -n -i 4TCP@<ip>:<puerto>
  • 20. Loadout Tcpdump / tshark / wireshark Las herramientas para saber que pasa en la red El antídoto contra la gente que no documenta sus APIs
  • 21. Loadout Tcpdump / tshark / wireshark No sirve con SSL a menos que se tenga la llave privada y no se este usando perfect forward secrecy. También se puede usar un proxy que haga de MITM o quitar / degradar SSL
  • 22. Loadout Tcpdump / tshark / wireshark En la máquina siendo analizada (a veces puede ser util usar la opción -B tcpdump -n -p -i <iface> -s 0 -w <capture file> <pcap filter> En la máquina desde la que se hace el análisis wireshark <capture file>
  • 23. Loadout strace Para cuando se entra en territorios hostiles Para hacer tracing de llamadas al sistema y señales Existe una versión para hacer tracing a nivel de la biblioteca de C llamada ltrace
  • 24. Loadout strace Puede hacer tracing sobre procesos hijos del proceso estudiado Permite ver el tiempo que tardan las llamadas al sistema Pero el proceso siendo estudiado se ejecuta más lento
  • 25. Loadout strace strace [-S <sortby>] -c -p <pid> strace -o <fichero> [-T] [-ff] [-s <strsize>] [-e <expr>] -p <pid>
  • 26. Loadout sysdig Herramienta de exploración a nivel de sistema Es como un tcpdump sobre el flujo de llamadas a sistema Extensible con lua
  • 27. Loadout sysdig No genera tanto overhead como strace Crea un módulo para el kernel No se puede tener más de una instancia en ejecución
  • 28. Loadout sysdig Necesita privilegios de root Se ha ganado mi <3 por su capacidad de usar filtros y chisels Sólo sirve en Linux
  • 29. Loadout sysdig sysdig -w <capture file> [-s <len>] <filtro> sysdig -r <capture file> [-c <chisel> <args>]
  • 30. Loadout Escribir tus propias herramientas Quitarse el trabajo manual Procesar de maneras no imaginadas la data que ya tenemos
  • 31. Loadout Herramientas para gente grande Implica saber más de sistemas operativos Por ahora no he sentido la necesidad de usarlas más allá que para pruebas Por ejemplo: dtrace, SystemTap, ftrace, ...
  • 34. Historias de batallas Caso 1 Postfix no inicia /var/log/mail.log sólo muestra 'ERROR' Por experiencia sabemos que muchos errores son problemas de permisos Sabemos que postfix está dividido en múltiples procesos
  • 35. Historias de batallas Caso 1 Para descartar el problema de los permisos usamos strace Cambiamos el script de inicio para que llame a postfix con la opción -ff Revisamos los ficheros que creó strace buscando las llamadas al sistema que no terminaron correctamente
  • 36. Historias de batallas Caso 1 Encontramos una llamada a open que referencia a un fichero dentro de /var/spool/postfix falló por un problema de permisos Comparamos los atributos del fichero en una máquina que no presenta el problema Tiene permisos distintos
  • 37. Historias de batallas Caso 1 Cambiamos los permisos para que sean iguales que en el sistema control Postfix inicia correctamente
  • 38. Historias de batallas Caso 2 La aplicación X no funciona Nadie sabe donde guarda los logs Sabemos que el log puede ser una conexión a algo como syslog o un fichero Nada que haga referencia a la aplicación en /var/log
  • 39. Historias de batallas Caso 2 No saben que es syslog Sabemos que la aplicación esta programada en un lenguaje interpretado Con pgrep buscamos procesos con el interprete que se está utilizando Con el PID listamos con lsof los ficheros que tiene abierto el proceso
  • 40. Historias de batallas Caso 2 Conseguimos que el log estaba guardándose en /tmp El log indica cual es el problema con la aplicación
  • 41. Historias de batallas Caso 3 Una aplicación web tiene un performance de pena El sistema recibe peticiones HTTP, revisa en una BD y publica mensajes en un broker Los desarrolladores piden más HW y máquinas, culpan al broker de ser un cuello de botella
  • 42. Historias de batallas Caso 3 Hay otra aplicación que usa el broker y no va tan lento, descartamos esa opción Sabemos por experiencia que usualmente la gente no sabe usar las BBDD Pensamos que seria interesante saber que queries se están enviando a la BD
  • 43. Historias de batallas Caso 3 Revisar las queries desde la BD es complicado dado el despliegue actual Desde el frontal web lanzamos tcpdump para capturar el tráfico de la app a la BD Con wireshark revisamos la captura y vemos muchas queries a las tablas del schema
  • 44. Historias de batallas Caso 3 Comentamos al equipo de desarrollo que el ORM sux Cambian la configuración del ORM para que no haga siempre las consultas al esquema El desempeño de la aplicación se multiplica por 10 sin agregar más HW o máquinas
  • 45. Historias de batallas Caso 4 La aplicación web no sirve los ficheros que se le piden ¿Por qué esto no lo hace el servidor web si están en el filesystem? Los ficheros están en el filesystem pero la aplicación web no los encuentra
  • 46. Historias de batallas Caso 4 Hay que averiguar donde la app esta buscando Es engorroso usar strace en aplicaciones donde los procesos son creados y destruidos de forma continua sysdig permite filtrar eventos por nombre de proceso y por acción
  • 47. Historias de batallas Caso 4 Usamos sysdig con un filtro que sólo vea los eventos de filesystem generados por los procesos X, que hayan tenido errores y cuyo nombre de fichero sea similar a Y
  • 48. Historias de batallas Caso 4 Revisamos la captura y vemos que la app buscaba el nombre del fichero solicitado agregándole parámetros al nombre Se elimina el bug
  • 49. Lecciones para llevar Las herramientas vienen y van, lo importante es el plan de acción, el mindset: “Es un error capital teorizar antes de tener datos. Sin darse cuenta, uno empieza a deformar los hechos para que se adapten a las teorías, en lugar de adaptar las teorías a los hechos” Sherlock Holmes - Arthur Conan Doyle
  • 50. Lecciones para llevar Mantener la cabeza fría No olvidar el principio de presunción de inocencia Usar la imaginación para saber como puede estar hecho el sistema Es bueno saber “un poco” de sistemas operativos y de la arquitectura de la aplicación
  • 51. Referencias y créditos Man 2 <syscall> Internets Brendan Gregg http://www.brendangregg.com/index.html @brendangregg http://goo.gl/DDfgGq http://goo.gl/I1XKzU
  • 52. Referencias y créditos http://oi52.tinypic.com/iyodxs.jpg http://i.giphy.com/fDzM81OYrNjJC.gif http://i.giphy.com/110VRbH47qa2Jy.gif http://upload.wikimedia.org/wikipedia/commons/3/3c/Displacement_roll_with_instruct ion_diagram.PNG http://upload.wikimedia.org/wikipedia/commons/1/18/AIM-54_6_Pack.jpg http://i.giphy.com/GlMN2r04gXTgs.gif https://upload.wikimedia.org/wikipedia/commons/0/00/F-14_VF- 111_launching_Phoenix_1991.jpeg https://upload.wikimedia.org/wikipedia/commons/d/d3/Rainbow_bug.png http://upload.wikimedia.org/wikipedia/commons/4/4e/Plaque_Commemorating_Battl e_of_Harlem_Heights,_near_Riverside_Church.jpg http://i.giphy.com/6rgpEGDP0Rv3i.gif