{"id":379563,"date":"2024-06-21T09:02:39","date_gmt":"2024-06-21T09:02:39","guid":{"rendered":"https:\/\/pandorafms.com\/?p=379563"},"modified":"2026-01-26T15:22:18","modified_gmt":"2026-01-26T15:22:18","slug":"que-es-ebpf","status":"publish","type":"post","link":"https:\/\/pandorafms.com\/es\/it-topics\/que-es-ebpf\/","title":{"rendered":"\u00bfQu\u00e9 es eBPF? Una mirada profunda a la Observabilidad en el Kernel de Linux"},"content":{"rendered":"<p>[et_pb_section fb_built=\u00bb1&#8243; admin_label=\u00bbSection\u00bb _builder_version=\u00bb4.22.0&#8243; _module_preset=\u00bbdefault\u00bb custom_margin=\u00bb0px||0px||false|false\u00bb custom_padding=\u00bb0px||0px||false|false\u00bb locked=\u00bboff\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_row column_structure=\u00bb1_4,3_4&#8243; _builder_version=\u00bb4.22.0&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb50px||||false|false\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb1_4&#8243; disabled_on=\u00bbon|on|off\u00bb _builder_version=\u00bb4.22.0&#8243; _module_preset=\u00bbdefault\u00bb custom_padding=\u00bb||||false|false\u00bb sticky_position=\u00bbtop\u00bb sticky_offset_top=\u00bb100px\u00bb sticky_limit_bottom=\u00bbsection\u00bb motion_trigger_start=\u00bbtop\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text admin_label=\u00bbindice\u00bb _builder_version=\u00bb4.22.0&#8243; _module_preset=\u00bbdefault\u00bb custom_margin=\u00bb||0px||false|false\u00bb custom_padding=\u00bb||14px||false|false\u00bb link_option_url=\u00bb#1&#8243; global_colors_info=\u00bb{}\u00bb]<\/p>\n<p style=\"font-size: 0.9em; line-height: 1.4em; color: #333333;\"><strong>Secciones<\/strong><\/p>\n<ul class=\"ittopicsul\">\n<li><a href=\"#1\">Desaf\u00edos en el desarrollo en el kernel de Linux<\/a><\/li>\n<li><a href=\"#2\">\u00bfQu\u00e9 es eBPF?<\/a><\/li>\n<li><a href=\"#3\">Funcionamiento de eBPF<\/a><\/li>\n<li><a href=\"#4\">Ventajas de eBPF<\/a><\/li>\n<li><a href=\"#5\">Mejores Pr\u00e1cticas de eBPF<\/a><\/li>\n<li><a href=\"#6\">Desventajas de eBPF<\/a><\/li>\n<li><a href=\"#7\">Casos de uso de eBPF<\/a><\/li>\n<li><a href=\"#8\">Aplicaciones de eBPF en Observabilidad<\/a><\/li>\n<li><a href=\"#9\">C\u00f3mo empezar con eBPF<\/a><\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=\u00bb3_4&#8243; _builder_version=\u00bb4.22.0&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text admin_label=\u00bbseccion\u00bb module_id=\u00bb1&#8243; module_class=\u00bbittopicscontent\u00bb _builder_version=\u00bb4.22.0&#8243; _module_preset=\u00bbdefault\u00bb z_index=\u00bb0&#8243; custom_margin=\u00bb0px||0px||true|false\u00bb custom_padding=\u00bb0px||0px||false|false\u00bb hover_enabled=\u00bb0&#8243; custom_css_main_element=\u00bbfont-family:%22Pandora-Light%22;\u00bb locked=\u00bboff\u00bb global_colors_info=\u00bb{}\u00bb sticky_enabled=\u00bb0&#8243;]<\/p>\n<p>El kernel del sistema operativo Linux es el programa principal que se ejecuta despu\u00e9s del arranque del equipo y permite que el hardware y el software \u201cconversen entre s\u00ed\u201d. Comprender esto facilita entender por qu\u00e9 la tecnolog\u00eda eBPF aprovecha el sistema operativo para implementar la observabilidad, la seguridad y el funcionamiento en las redes, lo cual es fundamental para la conectividad que demanda la digitalizaci\u00f3n de los negocios de hoy.<\/p>\n<h2 id=\"1\">Desaf\u00edos en el desarrollo en el kernel de Linux<\/h2>\n<p><a href=\"https:\/\/pandorafms.com\/blog\/es\/linux-computers\/\" target=\"_blank\" rel=\"noopener\">Linux <\/a>se ha caracterizado por la apertura y la colaboraci\u00f3n a lo largo de su evoluci\u00f3n desde sus or\u00edgenes en los a\u00f1os 90, abierto a modificaciones y redistribuciones a lo largo del tiempo. Este modelo de licencia de c\u00f3digo abierto gener\u00f3 contribuciones de todo el mundo, sentando las bases del desarrollo colaborativo. Est\u00e1 claro que en un inicio hab\u00eda cierto escepticismo sobre la viabilidad y el potencial de Linux, ya que, en ese entonces, los sistemas propietarios eran los preferidos y la idea de un sistema operativo libre y desarrollado en colaboraci\u00f3n suscitaba dudas. Con todo, la apertura y la inclusi\u00f3n de Linux atrajeron a desarrolladores por la posibilidad de usar, modificar y distribuir libremente un sistema, tendencia que a\u00fan sigue en nuestros d\u00edas.<\/p>\n<h3>Soluci\u00f3n: Extended Berkeley Packet Filter (<a href=\"https:\/\/ebpf.io\/what-is-ebpf\/\" target=\"_blank\" rel=\"nofollow noopener\">eBPF<\/a>)<\/h3>\n<p>Las capacidades del kernel continuaron expandi\u00e9ndose, impulsadas por la colaboraci\u00f3n y la inteligencia colectiva por las contribuciones de desarrolladores de todo el mundo. A esto se sum\u00f3 la adopci\u00f3n de Internet: al inicio de los 90, Internet todav\u00eda estaba en sus primeras etapas y los ingenieros estaban interesados en encontrar formas de comprender mejor el tr\u00e1fico que flu\u00eda a trav\u00e9s de sus redes. BPF fue dise\u00f1ado para proporcionar una manera de hacer esto sin tener que modificar el c\u00f3digo de todos los servidores de una organizaci\u00f3n o bifurcar el c\u00f3digo del kernel y actualizarlo con instrucciones de instrumentaci\u00f3n.<\/p>\n<h2 id=\"2\">\u00bfQu\u00e9 es eBPF?<\/h2>\n<p>BPF originalmente significaba Berkeley Packet Filter y se usaba para registrar todas las comunicaciones <a href=\"https:\/\/es.wikipedia.org\/wiki\/Protocolo_de_control_de_transmisi%C3%B3n\" target=\"_blank\" rel=\"nofollow noopener\">TCP<\/a> entrantes y salientes en un servidor. Si bien este enfoque requiere menos trabajo que modificar el c\u00f3digo de todos los servidores, a\u00fan as\u00ed precisaba de un esfuerzo significativo para crear el c\u00f3digo e implementarlo en todos los servidores de la organizaci\u00f3n, y s\u00f3lo pod\u00eda aceptar paquetes con un hash firmado en el encabezado. Cuando llegaba un paquete entrante, se iniciaba el programa BPF y se verificaba el encabezado para ver si el valor esperado estaba presente. Dependiendo de los resultados, el paquete era aceptado o descartado. Sin embargo, ya no solo se necesitaba el filtrado, por lo que se dio origen a una versi\u00f3n de BPF extendido o eBPF.<\/p>\n<h3>Diferencias entre eBPF y BPF<\/h3>\n<p>Como ya coment\u00e1bamos, actualmente, BPF se utiliza para diversos fines m\u00e1s all\u00e1 del simple an\u00e1lisis y filtrado del tr\u00e1fico de red, ampliando sus funciones y compatibilidad con 64 bytes, lo que permite una mayor recopilaci\u00f3n y almacenamiento de informaci\u00f3n. Esto es porque, desde el lanzamiento del kernel 3.18, se crearon filtros de paquetes extendidos de Berkeley (eBPF) para registrar casi todos los eventos del kernel. Los eBPF, pueden almacenar e intercambiar m\u00e1s datos y usarse para diversos fines, incluyendo la monitorizaci\u00f3n, el seguimiento y la optimizaci\u00f3n de las funciones del kernel.<br \/>\nEn el c\u00f3digo fuente de Linux, se observa que el t\u00e9rmino BPF persiste; y en las herramientas y la documentaci\u00f3n, los t\u00e9rminos BPF y eBPF generalmente se usan indistintamente. Tambi\u00e9n se ha visto que el BPF original a veces se denomina cBPF (BPF cl\u00e1sico) para distinguirlo del eBPF.<\/p>\n<h2 id=\"3\">Funcionamiento de eBPF<\/h2>\n<p>Para comprender c\u00f3mo se usa eBPF, es importante entender los conceptos clave:<\/p>\n<ul class=\"lista\">\n<li><strong>Hooks predefinidos.<\/strong> Los programas eBPF se ejecutan seg\u00fan los eventos que los desencadenan: una aplicaci\u00f3n (o el kernel) pasa un umbral conocido como <strong>punto de enlace<\/strong>. Los Hooks est\u00e1n predefinidos e incluyen eventos de red, llamadas al sistema (system calls o syscalls), entrada y salida de funciones y puntos de seguimiento (tracepoints) de kernel. Si no hay un enlace predefinido para un requisito determinado, se puede crear una sonda de usuario o kernel (uprobe o kprobe).<\/li>\n<li><strong>Verificaci\u00f3n del programa.<\/strong> Una vez que se identifica un enlace, la llamada al sistema BPF se puede usar para cargar el programa eBPF correspondiente en el kernel de Linux. Esto implica el uso de una biblioteca eBPF. Cuando se carga un programa en el kernel, se verifica para garantizar que sea seguro ejecutarlo, tomando en cuenta condiciones como que:\n<ul class=\"lista\">\n<li>El programa s\u00f3lo puede cargarse mediante un proceso eBPF privilegiado (a menos que se especifique lo contrario).<\/li>\n<li>El programa no da\u00f1ar\u00e1 ni bloquear\u00e1 el sistema.<\/li>\n<li>El programa siempre se ejecutar\u00e1 hasta su finalizaci\u00f3n (no permanecer\u00e1 en un bucle sin fin).<\/li>\n<\/ul>\n<\/li>\n<li><strong>Mapas eBPF.<\/strong> Un programa eBPF debe poder almacenar su estado y compartir los datos recopilados. Los mapas eBPF pueden ayudar a los programas a recuperar y almacenar informaci\u00f3n de acuerdo con una variedad de estructuras de datos. Los usuarios pueden acceder a mapas de eBPF a trav\u00e9s de llamadas al sistema, tanto desde programas como desde aplicaciones de eBPF. Los tipos de mapas son tablas o matrices hash, b\u00fafer circular, seguimiento de stack o coincidencia de prefijo m\u00e1s larga, entre otros.<\/li>\n<li><strong>Llamadas de ayuda (helper calls). <\/strong>Un programa eBPF no puede llamar arbitrariamente a una funci\u00f3n del kernel, ya que se necesita mantener la compatibilidad; por lo que los eBPF utilizan funciones auxiliares para realizar las llamadas a funciones. Las funciones auxiliares son API (interfaces) proporcionadas por el kernel y se pueden ajustar f\u00e1cilmente.<br \/>\nLas Helper Calls permiten a los programas generar n\u00fameros aleatorios, recibir la fecha y hora actuales, acceder a mapas eBPF, manipular la l\u00f3gica de reenv\u00edo y los paquetes de red, entre otros.<\/li>\n<li><strong>Llamadas de funci\u00f3n (function call) y de cola (tail call)<\/strong> Estas llamadas hacen que los programas eBPF puedan estar formados por varios elementos. Las function calls permiten definir y llamar funciones en un programa. Las llamadas de cola permiten la ejecuci\u00f3n de otros programas eBPF. Tambi\u00e9n pueden cambiar el contexto de ejecuci\u00f3n.<\/li>\n<\/ul>\n<h3>Proceso de ejecuci\u00f3n de programas eBPF<\/h3>\n<p>eBPF permite a los desarrolladores escribir peque\u00f1os programas que pueden adjuntarse a varios puntos del kernel para interceptar y procesar datos. Generalmente escritos en un subconjunto del lenguaje de programaci\u00f3n C, los programas luego se compilan en el c\u00f3digo de bytes eBPF, que luego se carga en el kernel y se ejecuta. A diferencia de los m\u00f3dulos del kernel tradicionales, los programas eBPF son f\u00e1ciles de implementar y administrar, ya que no necesitan modificaciones ni recopilaci\u00f3n del c\u00f3digo fuente del kernel.<\/p>\n<p>El programa eBPF sigue una serie de pasos cuando se ejecuta dentro del kernel de Linux:<\/p>\n<ul class=\"lista\">\n<li>Una vez que se ha escrito el programa eBPF, se compila en el bytecode de eBPF. El resultante es una representaci\u00f3n, independiente de la plataforma, del programa eBPF que se puede ejecutar dentro del kernel.<\/li>\n<li>A continuaci\u00f3n, el bytecode de eBPF se carga en el kernel. El proceso de carga implica verificar la seguridad y compatibilidad del bytecode con el kernel en ejecuci\u00f3n, y asignar los recursos necesarios para ejecutar el programa eBPF.<\/li>\n<li>Una vez que se ha cargado el programa eBPF, se puede adjuntar a un evento del kernel espec\u00edfico, como un paquete de red o una syscall.<\/li>\n<li>Cuando ocurre el evento del kernel adjunto, \u00e9ste ejecuta autom\u00e1ticamente el programa eBPF. El programa eBPF puede acceder y modificar datos asociados con el evento, usando la programaci\u00f3n C est\u00e1ndar, como bloops y condicionales.<\/li>\n<li>Despu\u00e9s de que el programa eBPF haya procesado los datos, puede devolver un resultado al kernel. Por ejemplo, un programa eBPF adjunto a una interfaz de red podr\u00eda descartar un paquete si coincide con ciertos criterios, o un programa eBPF adjunto a un syscall podr\u00eda modificar los argumentos pasados a la llamada antes de permitirle continuar.<\/li>\n<li>Cuando el programa eBPF ya no es necesario, se puede descargar del kernel, liberando los recursos asignados al programa eBPF y asegurando que ya no se ejecutar\u00e1 cuando ocurra el evento del kernel adjunto.<\/li>\n<\/ul>\n<p>Cabe notar que, una de las caracter\u00edsticas clave de eBPF son sus garant\u00edas de seguridad. Los programas eBPF se ejecutan en una m\u00e1quina virtual restringida dentro del kernel y no pueden acceder ni modificar las estructuras de datos del kernel directamente ni causar fallas o vulnerabilidades de seguridad. Tambi\u00e9n, los programas eBPF est\u00e1n sujetos a varias comprobaciones de tiempo de ejecuci\u00f3n, como la verificaci\u00f3n de l\u00edmites y la verificaci\u00f3n de tipo, para garantizar que no violen la seguridad de la memoria u otras propiedades de seguridad.<\/p>\n<p><img decoding=\"async\" class=\"imgpostcapture lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/pandorafms.com\/wp-content\/uploads\/2024\/06\/ebpf-pfms-blog.png\"><\/p>\n<h2 id=\"4\">Ventajas de eBPF<\/h2>\n<p>La implementaci\u00f3n de eBPF tiene beneficios como:<\/p>\n<ul class=\"lista\">\n<li><strong>Velocidad y rendimiento: <\/strong>eBPF es una soluci\u00f3n universal y eficiente que los desarrolladores usan para asegurar el rendimiento y la estabilidad a los sistemas.<\/li>\n<li><strong>Bajo intrusismo:<\/strong> Debido a que los programas eBPF se ejecutan dentro del kernel de Linux, operan con una sobrecarga m\u00ednima en comparaci\u00f3n con los programas tradicionales del espacio del usuario.<\/li>\n<li><strong>Seguridad:<\/strong> eBPF visualiza y explica las llamadas al sistema, lo que permite tener un control en los procesos de red.<\/li>\n<li><strong>Conveniencia:<\/strong> La tecnolog\u00eda requiere un m\u00ednimo de configuraci\u00f3n en comparaci\u00f3n con otras soluciones para que los desarrolladores puedan implementar r\u00e1pidamente sus aplicaciones en entornos de producci\u00f3n con el menor esfuerzo.<\/li>\n<li><strong>Rastreabilidad unificada: <\/strong>Con eBPF, se puede recopilar datos sobre rendimiento de aplicaciones y servicios basados en Linux a trav\u00e9s de programas que se ejecutan en el espacio del kernel. Con esos datos se pueden solucionar problemas de rendimiento.<\/li>\n<li><strong>Programabilidad: <\/strong>Los desarrolladores que utilizan eBPF pueden escribir nuevas funciones que antes no se pod\u00edan haber realizado debido a limitaciones t\u00e9cnicas o problemas de seguridad. Con eBPF, pueden escribir aplicaciones que aprovechen la aceleraci\u00f3n de hardware en dispositivos integrados como Raspberry Pi (una microcomputadora de bajo costo que se puede insertar en un monitor o televisor) u otros sistemas basados en ARM, que es una arquitectura de procesador ampliamente utilizada en dispositivos m\u00f3viles, servidores y sistemas incrustados.<\/li>\n<li><strong>Expresividad: <\/strong>Con eBPF es posible extraer datos de observabilidad de seguridad que ayuda a los desarrolladores de aplicaciones a rastrear aplicaciones, proporcionar informaci\u00f3n para la resoluci\u00f3n de problemas de rendimiento, aplicar la seguridad en tiempo de ejecuci\u00f3n de las aplicaciones y contenedores, entre otros.<\/li>\n<\/ul>\n<h2 id=\"5\">Mejores Pr\u00e1cticas de eBPF<\/h2>\n<ul class=\"lista\">\n<li><strong>Compilaci\u00f3n con LLVM y Clang:<\/strong> Clang se usa para compilar programas eBPF desde c\u00f3digo C y se apoya en LLVM como backend para garantizar la correcci\u00f3n y la seguridad.<\/li>\n<li><strong>Uso del kit de herramientas BCC:<\/strong> BCC es un conjunto de herramientas para crear programas eficientes de manipulaci\u00f3n y seguimiento del kernel e incluye ejemplos \u00fatiles.<\/li>\n<li><strong>Aprovechamiento de funciones auxiliares de eBPF:<\/strong> Uso de la conexi\u00f3n de programas peque\u00f1os y eficientes a varios hooks del kernel para obtener visibilidad y monitorizaci\u00f3n de las capacidades, brindar seguridad a la red y contenedores\/microservicios de las aplicaciones, adem\u00e1s de detectar\/prevenir intrusiones y reforzar pol\u00edticas de seguridad.<\/li>\n<li><strong>Uso de mapas para compartir datos: <\/strong>Los mapas eBPF se pueden compartir entre ejecuciones consecutivas de programas, entre el kernel y el espacio de usuario o, seg\u00fan su caso de uso, entre diferentes programas eBPF, sin importar a qu\u00e9 interfaces est\u00e9n conectados.<\/li>\n<li><strong>Monitorizaci\u00f3n de l\u00edmites de recursos: <\/strong>La monitorizaci\u00f3n de la capacidad de los recursos permite implementar acciones preventivas por parte de los empleados de TI.<\/li>\n<li><strong>Validaci\u00f3n de entradas de usuario: <\/strong>Se pueden crear programas eBPF personalizados para hacer cumplir los controles de acceso, regular el uso de recursos y proteger los componentes sensibles del sistema contra manipulaciones.<\/li>\n<li><strong>Mantenimiento actualizado del kernel: <\/strong>Los fabricantes de hardware est\u00e1n haciendo avances constantes, por lo que la actualizaci\u00f3n permite integrar nuevas tecnolog\u00edas, adem\u00e1s de mejorar el rendimiento.<\/li>\n<li><strong>Uso de Librer\u00edas y frameworks de eBPF: <\/strong>Los frameworks y las librer\u00edas de monitorizaci\u00f3n eBPF permiten un seguimiento eficiente de procesos y eventos de red, adem\u00e1s del an\u00e1lisis de s\u00edmbolos de depuraci\u00f3n del kernel.<\/li>\n<li><strong>Documentaci\u00f3n de c\u00f3digo: <\/strong>La documentaci\u00f3n ayuda a los desarrolladores a rastrear aplicaciones y llevar un registro sobre resoluci\u00f3n de problemas de rendimiento.<\/li>\n<\/ul>\n<h2 id=\"6\">Desventajas de eBPF<\/h2>\n<ul class=\"lista\">\n<li><strong>Limitaciones de portabilidad: <\/strong>El uso de eBPF para realizar un procesamiento intensivo de CPU o paquete por paquete no ser\u00eda eficiente porque necesitar\u00eda construirse una estructura y realizar una b\u00fasqueda para cada paquete, lo cual puede llegar a ser costoso.<\/li>\n<li><strong>Limitaciones de programas sandboxed: <\/strong>eBPF no fue dise\u00f1ado para la monitorizaci\u00f3n de seguridad. Los programas sandboxed tienen sus limitaciones:\n<ul class=\"\">\n<li><strong>Memoria:<\/strong> Operan dentro de un espacio de memoria restringido.<\/li>\n<li><strong>Syscall:<\/strong> Solo pueden realizar syscalls espec\u00edficas permitidas por el verificador eBPF.<\/li>\n<li><strong>Acceso a las estructuras de datos del kernel:<\/strong> El acceso directo a las estructuras de datos del kernel est\u00e1 restringido.<\/li>\n<li><strong>Acceso al sistema de archivos:<\/strong> No pueden leer ni escribir archivos directamente.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2 id=\"7\">Casos de uso de eBPF<\/h2>\n<ul class=\"lista\">\n<li><strong>Monitorizaci\u00f3n del sistema en tiempo real.<\/strong> A diferencia de indicadores y contadores est\u00e1ticos, eBPF permite la generaci\u00f3n de eventos de visibilidad y la recopilaci\u00f3n y agregaci\u00f3n de m\u00e9tricas personalizadas en tiempo real. Esto aumenta la profundidad de la visibilidad que se puede lograr y reduce dr\u00e1sticamente la sobrecarga general del sistema.\n<\/li>\n<li><strong>Seguridad inform\u00e1tica.<\/strong> eBPF permite detectar e investigar anomal\u00edas en operaciones, como un proceso inusual que se han iniciado en un sistema y rastrear su comportamiento para determinar a qu\u00e9 recursos est\u00e1n intentando acceder o qu\u00e9 datos se est\u00e1n transmitiendo a trav\u00e9s de la red. De esta manera, eBPF complementa y ayuda a respaldar otros procesos como parte de los sistemas de seguridad que protegen a tu servidor.<\/li>\n<li><strong>Redes.<\/strong> La capacidad de inspeccionar todos los eventos de la red y los flujos de tr\u00e1fico de la red que entran y salen de un sistema y determinar qu\u00e9 procesos interact\u00faan con ellos ayuda a los administradores a solucionar problemas de red. Tambi\u00e9n proporciona un contexto que puede ser \u00fatil cuando se busca determinar si un problema de rendimiento con una aplicaci\u00f3n es provocado por un evento de red o por la propia aplicaci\u00f3n.<\/li>\n<li><strong>Monitoreo del rendimiento de aplicaciones.<\/strong> Se pueden calcular m\u00e9tricas de rendimiento para aplicaciones, microservicios y procesos individuales de forma granular. Esto permite establecer perfiles de rendimiento y realizar un seguimiento continuo para detectar anomal\u00edas. Con eBPF no es necesario implementar y configurar agentes para rastrear cada aplicaci\u00f3n o proceso.<\/li>\n<li><strong>Versatilidad.<\/strong> A diferencia de las herramientas de monitorizaci\u00f3n tradicionales, centradas principalmente en el consumo de recursos del sistema, la creaci\u00f3n de perfiles eBPF proporciona una comprensi\u00f3n granular de cu\u00e1nto de CPU, memoria y recursos de red est\u00e1 consumiendo una aplicaci\u00f3n o proceso en espec\u00edfico. Estos datos detallados permiten identificar aplicaciones que consumen muchos recursos, definir posibles optimizaciones y tomar decisiones informadas sobre la migraci\u00f3n de cargas de trabajo.<\/li>\n<\/ul>\n<h2 id=\"8\">Aplicaciones de eBPF en Observabilidad<\/h2>\n<p><strong>Acceso a eventos de bajo nivel del sistema:<strong> eBPF permite la recopilaci\u00f3n y agregaci\u00f3n en el kernel de m\u00e9tricas personalizadas, mediante eventos de visibilidad y estructuras de datos de diversas fuentes sin tener que exportar muestras.<\/p>\n<p><strong>Aplicaciones en seguridad, rendimiento y networking:<\/strong> eBPF se usa para proporcionar formas m\u00e1s eficientes y seguras de administrar aplicaciones en contenedores y analizar el rendimiento de los sistemas. Por ejemplo:<\/p>\n<ul class=\"lista\">\n<li><a href=\"https:\/\/falco.org\/blog\/falco-modern-bpf-0-35-0\/\" target=\"_blank\" rel=\"nofollow noopener\">Proyecto Falco<\/a> usa eBPF para dar seguridad en el momento de ejecuci\u00f3n para aplicaciones en contenedores.<\/li>\n<li><a href=\"https:\/\/github.com\/cilium\/cilium\" target=\"_blank\" rel=\"nofollow noopener\">Proyecto Cilium<\/a> aprovecha eBPF para realizar el filtrado de red, el equilibrio de carga e incluso la seguridad en el espacio del kernel, lo que mejora la eficiencia de aplicaciones en contenedores.<\/li>\n<li><a href=\"https:\/\/github.com\/iovisor\/bcc\" target=\"_blank\" rel=\"nofollow noopener\">BCC<\/a> (BPF Compiler Collection) es un conjunto de herramientas y bibliotecas que se usan eBPF para dar seguimiento y an\u00e1lisis de rendimiento para sistemas Linux.<\/li>\n<\/ul>\n<h2 id=\"9\">C\u00f3mo empezar con eBPF<\/h2>\n<p>Ahora que conoces c\u00f3mo aprovechar eBPF, sus beneficios y consideraciones, solo queda compartir contigo algunas recomendaciones para empezar a usar eBPF. El enriquecimiento de eBPF parte de las contribuciones de desarrolladores independientes, por lo que podemos facilitarte algunos enlaces a recursos y herramientas que puedes aprovechar:<\/p>\n<ul class=\"lista\">\n<li><a href=\"https:\/\/github.com\/iovisor\/bcc\" target=\"_blank\" rel=\"nofollow noopener\">BCC Toolkit<\/a>, con herramientas y ejemplos de uso de eBPF y recursos de programaci\u00f3n en C y Python.<\/li>\n<li><a href=\"https:\/\/ebpf.io\/infrastructure\" target=\"_blank\" rel=\"nofollow noopener\">P\u00e1gina de Infraestructura de eBPF<\/a>, donde podr\u00e1s encontrar los compiladores de la infraestructura de LLVM y GCC incluyendo c\u00f3digos de programas, aportaciones sobre brechas por resolver y blogs de soporte, entre otros.<\/li>\n<li><a href=\"https:\/\/ebpf.io\/\" target=\"_blank\" rel=\"nofollow noopener\">Casos de \u00e9xito mundiales de uso de eBPF<\/a>, como Google, Netflix, Android, Cloudflare, Android, Microsoft, entre otros.<\/li>\n<li><a href=\"https:\/\/www.linuxfoundation.org\/blog\/ebpf-the-technology-that-enables-customizable-observable-and-high-performing-linux-programs-a-whitepaper-from-the-linux-foundation\" target=\"_blank\" rel=\"nofollow noopener\">Linux Foundation<\/a>, donde hallar\u00e1s datos interesantes sobre la comunidad involucrada en la evoluci\u00f3n de EBPF y su ecosistema. Tambi\u00e9n encontrar\u00e1s en informe <a href=\"https:\/\/www.linuxfoundation.org\/research\/state-of-ebpf\" target=\"_blank\" rel=\"nofollow noopener\">State of eBPF<\/a>, con un poco de su historia y perspectivas a futuro.<\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_button button_url=\u00bb@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF9saW5rX3VybF9wYWdlIiwic2V0dGluZ3MiOnsicG9zdF9pZCI6IjM2MjI3MCJ9fQ==@\u00bb button_text=\u00bb\u2190 Regresar a IT Topics\u00bb button_alignment=\u00bbleft\u00bb _builder_version=\u00bb4.22.0&#8243; _dynamic_attributes=\u00bbbutton_url\u00bb _module_preset=\u00bbdefault\u00bb custom_button=\u00bbon\u00bb button_text_size=\u00bb1em\u00bb button_text_color=\u00bb#0C312F\u00bb button_bg_color=\u00bb#FFFFFF\u00bb button_bg_color_gradient_direction=\u00bb90deg\u00bb button_bg_color_gradient_stops=\u00bb#82B92E 0%|#3CB92E 100%\u00bb button_bg_color_gradient_start=\u00bb#82B92E\u00bb button_bg_color_gradient_end=\u00bb#3CB92E\u00bb button_border_width=\u00bb1px\u00bb button_border_color=\u00bb#eaeaea\u00bb button_border_radius=\u00bb100px\u00bb button_use_icon=\u00bboff\u00bb z_index=\u00bb0&#8243; custom_margin=\u00bb60px||0px||false|false\u00bb custom_padding=\u00bb10px|50px|10px|50px|true|true\u00bb custom_padding_tablet=\u00bb\u00bb custom_padding_phone=\u00bb10px|20px|10px|20px|true|true\u00bb custom_padding_last_edited=\u00bbon|phone\u00bb custom_css_main_element=\u00bbright:0!important;||font-family:%22Pandora-Bold%22!important;\u00bb global_module=\u00bb367749&#8243; locked=\u00bboff\u00bb global_colors_info=\u00bb{}\u00bb button_bg_color__hover_enabled=\u00bbon|desktop\u00bb button_bg_color_gradient_start__hover=\u00bb#eaeaea\u00bb button_bg_color_gradient_end__hover=\u00bb#f4f4f4&#8243; button_bg_color__hover=\u00bb#eaeaea\u00bb button_bg_enable_color__hover=\u00bbon\u00bb button_bg_use_color_gradient__hover=\u00bbon\u00bb button_bg_color_gradient_stops__hover=\u00bb#eaeaea 0%|#f4f4f4 100%\u00bb][\/et_pb_button][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u00bb1&#8243; custom_padding_last_edited=\u00bbon|desktop\u00bb admin_label=\u00bbFinal CTA\u00bb _builder_version=\u00bb4.22.0&#8243; _module_preset=\u00bbdefault\u00bb background_color=\u00bb#161327&#8243; use_background_color_gradient=\u00bbon\u00bb background_color_gradient_stops=\u00bbrgba(22,19,39,0.5) 17%|rgba(22,19,39,0.5) 100%\u00bb background_color_gradient_overlays_image=\u00bbon\u00bb background_image=\u00bbhttps:\/\/pandorafms.com\/wp-content\/uploads\/2024\/01\/Try-Pandora-FMS-scaled.webp\u00bb background_position=\u00bbtop_center\u00bb background_vertical_offset=\u00bb0%\u00bb z_index=\u00bb1&#8243; max_width=\u00bb1080px\u00bb max_width_tablet=\u00bb98%\u00bb max_width_phone=\u00bb98%\u00bb max_width_last_edited=\u00bbon|tablet\u00bb module_alignment=\u00bbcenter\u00bb custom_margin=\u00bb80px||80px||true|false\u00bb custom_padding=\u00bb40px|20px|160px|20px|false|true\u00bb custom_padding_tablet=\u00bb40px|0px|120px|0px|false|true\u00bb custom_padding_phone=\u00bb40px|0px|120px|0px|false|true\u00bb scroll_scaling=\u00bb40|55|85|100|100%|120%|100%\u00bb motion_trigger_start=\u00bbtop\u00bb background_last_edited=\u00bboff|desktop\u00bb border_radii=\u00bboff|20px|20px|20px|20px\u00bb border_color_all=\u00bb#ffffff\u00bb box_shadow_style=\u00bbpreset1&#8243; box_shadow_vertical=\u00bb0px\u00bb box_shadow_blur=\u00bb80px\u00bb box_shadow_color=\u00bb#506da0&#8243; global_module=\u00bb367078&#8243; global_colors_info=\u00bb{}\u00bb][et_pb_row use_custom_gutter=\u00bbon\u00bb gutter_width=\u00bb2&#8243; make_equal=\u00bbon\u00bb _builder_version=\u00bb4.22.0&#8243; _module_preset=\u00bbdefault\u00bb max_width=\u00bb550px\u00bb module_alignment=\u00bbcenter\u00bb custom_margin=\u00bb0px||0px||true|false\u00bb custom_padding=\u00bb0px|0px|0px|0px|true|true\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.22.0&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_text _builder_version=\u00bb4.22.0&#8243; _module_preset=\u00bbdefault\u00bb header_2_font_size=\u00bb2em\u00bb text_orientation=\u00bbcenter\u00bb module_alignment=\u00bbleft\u00bb custom_margin=\u00bb0px||20px||false|false\u00bb custom_padding=\u00bb0px||0px||true|false\u00bb global_colors_info=\u00bb{}\u00bb]<\/p>\n<p class=\"h2-w\">M\u00e1s all\u00e1 de los l\u00edmites, <br \/>m\u00e1s all\u00e1 de las expectativas<\/p>\n<p>[\/et_pb_text][et_pb_button button_url=\u00bb@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF9saW5rX3VybF9wYWdlIiwic2V0dGluZ3MiOnsicG9zdF9pZCI6IjM0MTk5NSJ9fQ==@\u00bb button_text=\u00bb\u00a1Obt\u00e9n tu Trial GRATIS!\u00bb button_alignment=\u00bbcenter\u00bb button_alignment_tablet=\u00bbcenter\u00bb button_alignment_phone=\u00bbcenter\u00bb button_alignment_last_edited=\u00bbon|phone\u00bb _builder_version=\u00bb4.22.0&#8243; _dynamic_attributes=\u00bbbutton_url\u00bb _module_preset=\u00bbdefault\u00bb custom_button=\u00bbon\u00bb button_text_size=\u00bb1em\u00bb button_text_color=\u00bb#ffffff\u00bb button_bg_use_color_gradient=\u00bbon\u00bb button_bg_color_gradient_direction=\u00bb90deg\u00bb button_bg_color_gradient_stops=\u00bb#82B92E 0%|#3CB92E 100%\u00bb button_bg_color_gradient_start=\u00bb#82B92E\u00bb button_bg_color_gradient_end=\u00bb#3CB92E\u00bb button_border_width=\u00bb0px\u00bb button_border_radius=\u00bb100px\u00bb button_use_icon=\u00bboff\u00bb z_index=\u00bb0&#8243; custom_margin=\u00bb40px||0px||false|false\u00bb custom_padding=\u00bb10px|40px|10px|40px|true|true\u00bb custom_padding_tablet=\u00bb\u00bb custom_padding_phone=\u00bb15px|15px|15px|15px|true|true\u00bb custom_padding_last_edited=\u00bbon|phone\u00bb custom_css_main_element=\u00bbright:0!important;||font-family:%22Pandora-Bold%22!important;\u00bb locked=\u00bboff\u00bb global_colors_info=\u00bb{}\u00bb button_bg_color__hover_enabled=\u00bbon|hover\u00bb button_bg_color_gradient_start__hover=\u00bb#05201F\u00bb button_bg_color_gradient_end__hover=\u00bb#05201F\u00bb button_bg_color_gradient_stops__hover=\u00bb#181818 0%|#181818 58%|#181818 100%\u00bb button_bg_use_color_gradient__hover=\u00bbon\u00bb][\/et_pb_button][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Secciones Desaf\u00edos en el desarrollo en el kernel de Linux \u00bfQu\u00e9 es eBPF? Funcionamiento de eBPF Ventajas de eBPF Mejores Pr\u00e1cticas de eBPF Desventajas de eBPF Casos de uso de eBPF Aplicaciones de eBPF en Observabilidad C\u00f3mo empezar con eBPF El kernel del sistema operativo Linux es el programa principal que se ejecuta despu\u00e9s del [&hellip;]<\/p>\n","protected":false},"author":33,"featured_media":379569,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","_joinchat":[],"footnotes":""},"categories":[3506,7757],"tags":[],"class_list":["post-379563","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it-topics","category-monitorizacion"],"_links":{"self":[{"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/posts\/379563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/comments?post=379563"}],"version-history":[{"count":7,"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/posts\/379563\/revisions"}],"predecessor-version":[{"id":379593,"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/posts\/379563\/revisions\/379593"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/media\/379569"}],"wp:attachment":[{"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/media?parent=379563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/categories?post=379563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pandorafms.com\/es\/wp-json\/wp\/v2\/tags?post=379563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}