Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
En 2015, David trabajaba como desarrollador principal para Docker, la empresa que popularizó los contenedores. Su trabajo diario se dividía entre ayudar a la comunidad y hacer crecer el proyecto. Parte de su trabajo consistía en revisar la avalancha de pull requests que nos enviaban los miembros de la comunidad; también tenía que asegurarse de que Docker funcionara en todo tipo de escenarios, incluidas las cargas de trabajo de alto rendimiento que se ejecutaban y aprovisionaban miles de contenedores en cualquier momento.
Para diagnosticar problemas de rendimiento en Docker, utilizamos gráficos de llama, que son visualizaciones avanzadas para ayudarte a navegar por esos datos fácilmente. El lenguaje de programación Go hace que sea realmente fácil medir y extraer datos de rendimiento de la aplicación utilizando un punto final HTTP incrustado y generar gráficos basados en esos datos. David escribió un artículo sobre las capacidades del perfilador Go y cómo puedes utilizar sus datos para generar gráficos de llama. Un gran escollo de la forma en que Docker recopila los datos de rendimiento es que el perfilador está desactivado por defecto, de modo que si intentas depurar un problema de rendimiento, la primera acción que debes realizar es reiniciar Docker. El principal problema de esta estrategia es que, al reiniciar el servicio, probablemente perderás los datos relevantes que intentas recopilar, y entonces tendrás que esperar a que vuelva a producirse el evento que intentas rastrear. En el artículo de David sobre los gráficos de llama de Docker, mencionaba esto como un paso necesario para medir el rendimiento de Docker, pero que no tenía por qué ser así. Esta constatación le hizo empezar a investigar diferentes tecnologías para recopilar y analizar el rendimiento de cualquier aplicación, lo que le llevó a descubrir BPF.
Mientras tanto, pero lejos de David, Lorenzo buscaba un motivo para estudiar mejor las interioridades del núcleo de Linux, y descubrió que era fácil conocer muchos subsistemas del núcleo acercándose a ellos mientras aprendía sobre BPF. Un par de años después, pudo aplicar BPF en su trabajo en InfluxData para entender formas de hacer más rápida la ingestión de datos en InfluxCloud. Ahora Lorenzo participa en la comunidad BPF y en IOVisor, y trabaja en Sysdig en Falco, una herramienta que utiliza BPF para hacer seguridad en tiempo de ejecución para contenedores y Linux.
En los últimos años, hemos utilizado BPF en múltiples escenarios, desde la recopilación de datos de utilización de clústeres Kubernetes hasta la gestión de políticas de tráfico de red. Hemos aprendido sus entresijos utilizándolo y leyendo muchos artículos de blog de líderes tecnológicos como Brendan Gregg y Alexei Starovoitov y de empresas como Cilium y Facebook. Sus artículos y publicaciones nos ayudaron enormemente en el pasado, y también han sido una enorme referencia para el desarrollo de este libro.
Después de leer muchos de esos recursos, nos dimos cuenta de que cada vez que necesitábamos aprender algo sobre BPF, teníamos que saltar entre muchas entradas de blog, páginas man y otros lugares de Internet. Este libro es nuestro intento de poner los conocimientos dispersos por la red en un lugar central para que la próxima generación de entusiastas de BPF aprenda sobre esta fantástica tecnología.
Hemos dividido nuestro trabajo en nueve capítulos diferentes para mostrarte lo que puedes conseguir utilizando BPF. Puedes leer algunos capítulos de forma aislada como guías de referencia, pero si eres nuevo en BPF, te recomendamos que los leas en orden. Eso te dará una visión general de los conceptos básicos de BPF y te guiará a través de las posibilidades que tienes ante ti.
Tanto si ya eres un experto en observabilidad y análisis de rendimiento como si estás investigando nuevas posibilidades para responder a preguntas sobre tus sistemas de producción que antes no podías resolver, esperamos que encuentres nuevos conocimientos en este libro.
Convenciones utilizadas en este libro
En este libro se utilizan las siguientes convenciones tipográficas:
- Cursiva
-
Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.
Constant width
-
Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.
Constant width bold
-
Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.
Constant width italic
-
Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.
Consejo
Este elemento significa un consejo o sugerencia.
Nota
Este elemento significa una nota general.
Advertencia
Este elemento indica una advertencia o precaución.
Utilizar ejemplos de código
El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://oreil.ly/lbpf-repo.
Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.
Agradecemos, pero no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Linux Observability with BPF " de David Calavera y Lorenzo Fontana (O'Reilly). Copyright 2020 David Calavera y Lorenzo Fontana, 978-1-492-05020-9".
Si crees que el uso que haces de los ejemplos de código queda fuera del uso justo o del permiso aquí concedido, no dudes en ponerte en contacto con nosotros en permissions@oreilly.com.
Aprendizaje en línea O'Reilly
Nota
Durante más de 40 años, O'Reilly Media ha proporcionado formación, conocimientos y perspectivas sobre tecnología y negocios para ayudar a las empresas a alcanzar el éxito.
Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos, conferencias y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.
Cómo contactar con nosotros
Dirige tus comentarios y preguntas sobre este libro a la editorial:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Norte
- Sebastopol, CA 95472
- 800-998-9938 (en Estados Unidos o Canadá)
- 707-829-0515 (internacional o local)
- 707-829-0104 (fax)
Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/linux-bpf.
Envía un correo electrónico a bookquestions@oreilly.com para comentar o hacer preguntas técnicas sobre este libro.
Para más información sobre nuestros libros, cursos, conferencias y noticias, consulta nuestro sitio web en http://www.oreilly.com.
Encuéntranos en Facebook: http://facebook.com/oreilly
Síguenos en Twitter: http://twitter.com/oreillymedia
Míranos en YouTube: http://www.youtube.com/oreillymedia
Agradecimientos
Escribir un libro es más difícil de lo que pensábamos, pero probablemente ha sido una de las actividades más gratificantes que hemos realizado en nuestra vida. Se dedicaron muchos días y noches a este libro, y no habría sido posible sin la ayuda de nuestras parejas, familias, amigos y perros. Nos gustaría dar las gracias a Debora Pace, la novia de Lorenzo, y a su hijo, Riccardo, por toda la paciencia que tuvieron esperándole durante las largas sesiones de escritura. Gracias también a Leonardo Di Donato, amigo de Lorenzo, por todos los consejos prestados y, en particular, por escribir sobre el XDP y las pruebas.
Estamos eternamente agradecidos a Robin Means, la esposa de David, por corregir los primeros borradores de varios capítulos y el resumen inicial con el que empezó este libro, y por ayudarle a escribir muchos artículos a lo largo de los años y reírse de sus palabras inventadas en inglés que sonaban más bonitas de lo que realmente eran.
Ambos queremos dar las gracias a todos los que han hecho posible eBPF y BPF. A David Miller y Alexei Starovoitov por sus continuas contribuciones para mejorar el núcleo Linux y, en última instancia, eBPF y la comunidad que lo rodea. A Brendan Gregg por sus ganas de compartir, su entusiasmo y su trabajo en herramientas que hacen que eBPF sea más accesible para todos. Al grupo IOVisor por sus vibraciones, correos electrónicos y todo el trabajo que han dedicado a bpftrace, gobpf, kubectl-trace y BCC. A Daniel Borkmann por todo su inspirador trabajo, en particular sobre libbpf y la infraestructura de herramientas. A Jessie Frazelle por escribir el prólogo y ser fuente de inspiración para nosotros y para miles de desarrolladores. A Jérôme Petazzoni por ser el mejor revisor técnico que podríamos desear; sus preguntas nos hicieron replantearnos muchas partes de este libro y nuestro enfoque de los ejemplos de código que contiene.
Y gracias a todos los miles de colaboradores del núcleo Linux, en particular a los activos en la lista de correo BPF, por sus preguntas/respuestas, sus parches y sus iniciativas. Por último, a todos los que han participado en la publicación de este libro en O'Reilly, incluidos nuestros editores, John Devins y Melissa Potter, y a todas las personas que entre bastidores han hecho la portada, revisado las páginas y hecho que este libro sea más profesional que cualquier otra cosa que hayamos hecho en nuestras carreras.
Get Observabilidad de Linux con BPF now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.