abajo: un monitor de recursos que viaja en el tiempo

En este artículo, presentamos a continuación: un Apache Monitor de recursos con licencia 2.0 para sistemas Linux modernos. a continuación le permite reproducir datos grabados previamente.

Antecedentes

Una de las principales responsabilidades del kernel es mediar en el acceso a los recursos. A veces, esto puede significar distribuir la memoria física de modo que varios procesos puedan compartir el mismo host. Otras veces, podría significar garantizar una distribución equitativa del tiempo de CPU. En todos estos contextos, el núcleo proporciona el mecanismo y deja la política a “alguien más”. En tiempos más recientes, este “alguien más” suele ser un tiempo de ejecución como systemd o dockerd. El tiempo de ejecución toma la entrada de un programador o usuario final, algo similar a qué ejecutar y cómo ejecutarlo, y gira las perillas correctas y tira de las palancas correctas en el kernel para que la carga de trabajo pueda, bueno, ponerse a trabajar.

En un mundo perfecto, este sería el final de la historia. Sin embargo, la realidad es que la gestión de recursos es una amalgama compleja y bastante opaca de tecnologías que ha evolucionado durante décadas de computación. A pesar de que parte de esta tecnología tiene varios defectos y callejones sin salida, el resultado final, un contenedor, funciona relativamente bien. Si bien el usuario generalmente no necesita preocuparse por los detalles, es crucial que los operadores de infraestructura tengan visibilidad de su pila. La visibilidad y la capacidad de depuración son esenciales para detectar e investigar errores de configuración, errores y problemas sistémicos.

Para complicar más las cosas, los cortes de recursos suelen ser difíciles de reproducir. No es inusual pasar semanas esperando que un problema vuelva a ocurrir para que se pueda investigar la causa raíz. La escala agrava aún más este problema: no se puede ejecutar un script personalizado en cada host con la esperanza de registrar bits de estado crucial si el error vuelve a ocurrir. Por lo tanto, se requieren herramientas más sofisticadas. Enter debajo.

Motivación

Históricamente Facebook ha sido un gran usuario de encima [0]. atop es un monitor de rendimiento para Linux que es capaz de informar la actividad de todos los procesos, así como varias piezas de actividad a nivel del sistema. Una de las características más atractivas que tiene sobre herramientas como htop es la capacidad de registrar datos históricos como un demonio. Esto suena como una característica simple, pero en la práctica ha permitido depurar innumerables problemas de producción. Con una retención de datos lo suficientemente prolongada, es posible retroceder en el tiempo y observar el estado del host antes, durante y después del problema o la interrupción.

Desafortunadamente, se hizo evidente a lo largo de los años que encima tenía ciertas deficiencias. Primero, cgroups [1] han surgido como la forma de facto de controlar y monitorear los recursos en una máquina Linux. tope todavía carece de soporte para este bloque de construcción fundamental. En segundo lugar, atop almacena datos en disco con compresión delta personalizada. Esto funciona bien en circunstancias normales, pero bajo una gran presión de recursos, es probable que el host pierda puntos de datos. Dado que la compresión delta está en uso, se pueden perder grandes cantidades de datos durante períodos de tiempo en los que los datos son más importantes. En tercer lugar, la experiencia del usuario tiene una curva de aprendizaje pronunciada. Con frecuencia escuchamos de los usuarios avanzados que les encanta el diseño denso y las numerosas combinaciones de teclas. Sin embargo, esta es una espada de doble filo. Cuando alguien nuevo en el espacio quiere depurar un problema de producción, ahora está resolviendo dos problemas a la vez: el problema en cuestión y cómo usarlo en la parte superior.

a continuación fue diseñado y desarrollado por y para el equipo de control de recursos en Facebook con aportes de producción por encima de los usuarios. El equipo de control de recursos es responsable, como sugiere el nombre, de la gestión de recursos a escala. El equipo está compuesto por desarrolladores de kernel, desarrolladores de tiempo de ejecución de contenedores y gente de hardware. Reconociendo la oportunidad de un monitor de sistema de próxima generación, diseñamos a continuación con lo siguiente en mente:

  • Facilidad de uso: a continuación debe ser tanto intuitivo para los nuevos usuarios como poderoso para los usuarios diarios
  • Estadísticas de opinión: a continuación se muestran estadísticas precisas y útiles. Tratamos de evitar recopilar y descargar estadísticas solo porque podemos.
  • Flexibilidad: cuando la configuración predeterminada no es suficiente, permitimos que el usuario personalice su experiencia. Los ejemplos incluyen combinaciones de teclas configurables, vista predeterminada configurable y una interfaz de secuencias de comandos (la predeterminada es una interfaz de usuario de terminal).

Instalar en pc

Para instalar el paquete:

                      # dnf install -y below
                    

Para activar el demonio de grabación:

                      # systemctl enable --now below
                    

Tour rapido

El modo más utilizado a continuación es el modo de reproducción. Como su nombre lo indica, el modo de reproducción reproduce datos grabados previamente. Suponiendo que ya ha iniciado el demonio de grabación, inicie una sesión ejecutando:

                      $ below replay --time "5 minutes ago"
                    

Luego verá la vista cgroup:

Si te quedas atascado u olvidas una combinación de teclas, presiona ? para acceder al menú de ayuda.

La parte superior de la pantalla es la barra de estado. La barra de estado muestra información sobre la muestra actual. Puede avanzar y retroceder a través de las muestras presionando t y T , respectivamente. La sección central es la descripción general del sistema. La descripción general del sistema contiene estadísticas sobre el sistema en su conjunto que generalmente siempre es útil ver. La tercera y más baja sección es la vista multipropósito. La imagen de arriba muestra la vista de cgroup. Además, hay vistas de procesos y sistemas, a las que se puede acceder presionando pags y s respectivamente.

prensa y para mover la selección de la lista. prensa para colapsar y expandir cgroups. Suponga que ha encontrado un cgroup interesante y desea ver qué procesos se ejecutan dentro de él. Para acercar la vista del proceso, seleccione el cgroup y presione con :

prensa con de nuevo para volver a la vista de cgroup. La vista de cgroup puede ser algo larga a veces. Si tiene una idea vaga de lo que está buscando, puede filtrar por nombre de cgroup presionando / y entrando en un filtro:

2.png

En este punto, es posible que haya notado un sistema de pestañas que aún no hemos explorado. Para recorrer las pestañas hacia adelante y hacia atrás, presione y + respectivamente. Dejaremos esto como ejercicio para el lector.

Otras características

Debajo del capó, debajo tiene un diseño y una arquitectura poderosos. Facebook se actualiza constantemente a kernels más nuevos, por lo que nunca asumimos que hay una fuente de datos disponible. Esta suposición tácita permite una compatibilidad total hacia adelante y hacia atrás entre los núcleos y las versiones inferiores. Además, cada punto de datos se comprime zstd y se almacena en su totalidad. Esto resuelve los problemas con la compresión delta que hemos visto en la parte superior a escala. Según nuestras pruebas, nuestra compresión por muestra puede lograr en promedio una relación de compresión de 5x.

a continuación también usa eBPF [2] para recopilar información sobre procesos de corta duración (procesos que duran menos que el intervalo de recopilación de datos). Por el contrario, atop implementa esta función con la contabilidad de procesos BSD, una interfaz de kernel conocida como lenta y propensa a la inversión de prioridades.

Para el usuario, a continuación también se admite el modo en vivo y una interfaz de volcado. El modo en vivo combina el demonio de grabación y la sesión de TUI en un solo proceso. Esto es conveniente para explorar el estado del sistema sin comprometerse con un daemon de ejecución prolongada o espacio en disco para el almacenamiento de datos. La interfaz de volcado es una interfaz programable para todos los datos debajo de las tiendas. Dump es potente y flexible: los datos detallados están disponibles en formato CSV, JSON y legible por humanos.

Conclusión

a continuación hay un Apache Proyecto de código abierto con licencia 2.0 que nosotros (los siguientes desarrolladores) creemos que ofrece ventajas convincentes sobre las herramientas existentes en el espacio de monitoreo de recursos. Nos hemos esforzado mucho preparándonos para el uso de código abierto a continuación, por lo que esperamos que los lectores y la comunidad tengan la oportunidad de probarlo a continuación e informar sobre errores y solicitudes de funciones.

[0]: https://www.atoptool.nl/
[1]: https://en.wikipedia.org/wiki/Cgroups
[2]: https://ebpf.io/

Related Posts