Sysdig: qué es y cómo usarlo

Sysdig es una herramienta de visibilidad de sistema universal con soporte para contenedores. Lo que hace especial a Sysdig es que se engancha en el núcleo de la máquina y segrega la información por contenedor. Para el alcance de este tutorial, nos centraremos en la versión de código abierto de Sysdig.

En las siguientes secciones, usted:

  • Instalar Sysdig
  • Acelere una instalación de Wordpress usando docker-compose
  • Utilice Sysdig para recopilar eventos y analizarlos más adelante.
  • Use Sysdig para analizar datos en tiempo real

Prerrequisitos

  • Docker está instalado en su sistema. Para obtener detalles sobre la instalación de Docker, consulte la página Instalar Docker.
  • Docker Compose está instalado en su sistema. Consulte la página Instalar Docker Compose para obtener instrucciones sobre cómo instalar Docker Compose.
  • Los encabezados del kernel se instalan en el sistema host.

Instalar Sysdig

Siga estos pasos para instalar Sysdig dentro de un contenedor Docker:

  1. En una ventana de terminal, ejecute el siguiente comando para extraer la imagen de Sysdig Docker:
docker pull sysdig / sysdig
El uso de la etiqueta por defecto: últimas última: Tirando de sysdig / sysdig 2967486b0658: Tire completa 78101b780c72: Tire completa 7e78b657334d: Tire completa 650327159ca8: Tire completa 47ebf73ab754: Tire completa bf51ac76a6d9: Tire 0cd11104dbf6 completa: Tire completa e6dcf17d00d8: Tire completa 230d60083576: Tire completa fd5ea9faf384: Pull complete 6de86c8ed6e9: Pull complete 8d1825f8be4b: Pull complete Digest: sha256: bbfe6953fd2b3221a8974eb13024dd33c7e78aebef8fee3d7a0d9ecdeed84ce0 Estado: Imagen más reciente descargada para sysdig / sysdig: último

2. Ejecute Sysdig en un contenedor ingresando:

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
* Configuración de enlaces / usr / src desde el host * Descarga de sysdig-probe, si está presente * Ejecución de la instalación de dkms para sysdig ¡Error! echo Sus encabezados de kernel para kernel 3.10.0-957.12.2.el7.x86_64 no se pueden encontrar en /lib/modules/3.10.0-957.12.2.el7.x86_64/build o /lib/modules/3.10.0-957.12 .2.el7.x86_64 / source. * Error al ejecutar la compilación dkms, no se pudo encontrar /var/lib/dkms/sysdig/0.26.4/build/make.log * Intentando cargar una sonda sysdig del sistema, si está presente * Intentando encontrar una sonda sysdig precompilada para 3.10 .0-957.12.2.el7.x86_64 Se encontró la configuración del kernel en /host/boot/config-3.10.0-957.12.2.el7.x86_64 * Intentando descargar el módulo precompilado de https://s3.amazonaws.com/download .draios.com / stable / sysdig-probe-binaries / sysdig-probe-0.26.4-x86_64-3.10.0-957.12.2.el7.x86_64-82e2ae1fb159132636f7b50a762f20ef.ko Descarga exitosa, cargando la raíz del módulo @ 7b14a23f22eb: / #

Algunas cosas a tener en cuenta sobre el comando anterior:

  • La bandera -i mantiene abierto STDIN.
  • El parámetro --privileged proporciona acceso a todos los dispositivos en el host. También establece SELinux para permitir que los procesos que se ejecutan dentro del contenedor tengan el mismo acceso al host que un proceso que se ejecuta en el host.
  • La bandera -v especifica la lista de archivos (en el host) a los que Sysdig puede acceder.

Girar una instalación de Wordpress

En esta sección, instalará Wordpress usando el comando docker-compose.

  1. En una nueva ventana de terminal, vaya al directorio de proyectos y escriba los siguientes comandos:
mkdir wordpress-sysdig && cd wordpress-sysdig

2. Cree un archivo llamado docker-compose con el siguiente contenido:

versión: servicios '3.3': db: image: mysql: 5.7 volúmenes: - db_data: / var / lib / mysql restart: siempre entorno: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depende_on: - db imagen: wordpress: últimos puertos: - "8000: 80" reinicio: siempre entorno: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volume: db_data: {}

3. Ejecute el comando docker-compose up en modo separado con:

docker-compose up -d
Creación de la red "wordpress-sysdig_default" con el controlador predeterminado Creación de volumen "wordpress-sysdig_db_data" con el controlador predeterminado Extracción de wordpress (wordpress: último) ... último: Extracción de la biblioteca / wordpress 8ec398bc0356: Extracción completa 85cf4fc86478: Extracción completa 970dadf4ccb6: Extracción completa Enlazar a: 13 tire ecda5b7aad12 completa: tire completa 84256a6b6b44: tire completa 35d4f385efb7: tire bf697c2ae701 completa: tire completa d054b015f084: tire digestión completa: sha256: 73e8d8adf491c7a358ff94c74c8ebe35cb5f8857e249eb8ce6062b8576a01465 Estado: descargado imagen más reciente de WordPress: últimas Creación de wordpress-sysdig_db_1 ... hecho Creando wordpress-sysdig_word presione_1 ... listo

4. Puede verificar el estado de sus contenedores con:

docker ps

Si todo va bien, debería ver algo similar a la siguiente salida:

ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO PUERTOS NOMBRES f390eec29f52 wordpress: último "docker-entrypoint.s ..." Hace aproximadamente un minuto Arriba Aproximadamente un minuto 0.0.0.0:8000->80/tcp wordpress-sysdig_wordpress_1 a844840626d8 mysql: 5.7 "docker-entrypoint. s… "Hace aproximadamente un minuto Arriba Aproximadamente un minuto 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1 7b14a23f22eb sysdig / sysdig" /docker-entrypoint.… "Hace 13 minutos Arriba 13 minutos sysdig

5. Ahora Wordpress está en funcionamiento. Apunte su navegador a http: // localhost: 8000 para iniciar el asistente de instalación:

6. Una vez que el asistente de instalación haya finalizado, avancemos y creemos una publicación de muestra:

Recopilación de datos a un archivo

En esta sección, le mostraremos cómo puede usar Sysdig para recopilar eventos y analizarlos más adelante.

  1. Para volcar todos los eventos capturados en un archivo, vaya al contenedor Sysdig e ingrese el siguiente comando:
sysdig -w tracking-wordpress.scap

2. En una nueva ventana de terminal, use ab para hacer 10000 solicitudes con un máximo de 100 solicitudes ejecutándose simultáneamente:

ab -n 1000 -c 100 http: // localhost: 8000 /? p = 7
Esto es ApacheBench, Versión 2.3 <$ Revisión: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Con licencia de The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (sea paciente) Completado 100 solicitudes Completado 200 solicitudes Completado 300 solicitudes Completado 400 solicitudes Completado 500 solicitudes Completado 600 solicitudes Completado 700 solicitudes Completado 800 solicitudes Completado 900 solicitudes Completado 1000 solicitudes Finalizado 1000 solicitudes

Tenga en cuenta que la salida anterior se truncó por brevedad.

3. Regrese al contenedor Sysdig y deje de capturar datos ingresando "CTRL + C".

Analizando datos

Ahora, si observa el tamaño del archivo tracking-wordpress.scap, notará que Sysdig capturó no menos de 80 millones de datos:

ls -lh tracking-wordpress.scap
-rw-r - r--. 1 root root 80M 7 de enero 16:28 tracking-wordpress.scap

Para encontrar su camino a través de esta montaña de datos, usará algo llamado cincel.

Un cincel es básicamente un script Lua que analiza el flujo de eventos y realiza acciones útiles.

Puede ejecutar el siguiente comando para mostrar la lista de cinceles:

sysdig -cl
Categoría: Aplicación --------------------- httplog Registro de solicitudes HTTP httptop Arriba Solicitudes HTTP memcachelog registro de solicitudes memcached Categoría: Uso de CPU ---------- --------- espectrograma Visualice la latencia del sistema operativo en tiempo real. subsecoffset Visualiza el tiempo de ejecución del desplazamiento del segundo segundo. topcontainers_cpu Top contenedores por uso de CPU topprocs_cpu Top procesos por uso de CPU Categoría: Errores ---------------- topcontainers_error Top contenedores por número de errores topfiles_errors Top archivos por número de errores topprocs_errors top procesos por número de errores

Tenga en cuenta que la salida anterior se truncó por brevedad.

Para recuperar información detallada sobre un cincel, ejecute el comando sysdig seguido de la bandera -i y el nombre del cincel, como en el siguiente ejemplo:

sysdig -i httptop
Categoría: Aplicación --------------------- httptop Principales solicitudes HTTP Mostrar las principales solicitudes HTTP por: ncalls, time o bytes Args: [cadena] por - Mostrar las principales transacciones HTTP por: ncalls, time o por tes, el valor predeterminado es ncalls

Continuando con nuestro ejemplo, así es como puede usar el cincel httptop para mostrar las principales solicitudes HTTP:

sysdig -r tracking-wordpress.scap -c httptop
URL del método ncalls ----------------------------------------------- --------------------------------- 2001 GET localhost: 8000 /? P = 7 14 OPCIONES * 2 GET localhost: 8000 / favicon.ico 1 GET /wp-content/themes/twentytwenty/assets/fonts/inter/Inter-upright-var.woff2 1 GET localhost / v1.24 / container / 6bd8418eb03f / json 1 GET localhost / v1.24 / contenedores / 06def7875617 / json 1 GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 GET /v1.24/images/db39680b63ac47a1d989da7baf2fgbfgf2f2f2f2bfgffgf2

Puede ver la misma información en un formato compatible con contenedores con el indicador -pcontainer:

sysdig -r tracking-wordpress.scap -c httptop -pcontainer
URL del método del contenedor ncalls ---------------------------------------------- ---------------------------------- 1000 wordpress-sysdig_wo GET localhost: 8000 /? P = 7 1000 host GET localhost: 8000 /? p = 7 43 wordpress-sysdig_wo OPCIONES * 1 sysdig GET /v1.24/images/1b1624b63467ec61fab209b6be6e79707ae786df86607b9474b246acd31600 1 sysdig GET localhost / v1.24 / contenedores / g / s1 / s1 / s / s / s / f / s cd06093b141b / JSON GET 1 sysdig /v1.24/images/00e230fe24da9067f9b6e65cfbe9935a5affac1ae8e44edb6a5b0ccc26374d 1 sysdig GET /v1.24/images/db39680b63ac47a1d989da7b742f7b382af34d85a68214f8977bad59c05901

Cavar más profundo

Sysdig captura información rica en contenido que le permite obtener información detallada sobre el funcionamiento interno de sus contenedores. Supongamos que está ejecutando algunos contenedores y desea saber qué proceso consume más CPU.

  1. Enumere los contenedores que estuvieron activos durante el período en el que capturó eventos:
sysdig -r tracking-wordpress.scap -c lscontainers

2. Puede identificar el contenedor que consumió más CPU con:

sysdig -r tracking-wordpress.scap -c topcontainers_cpu
CPU% container.name --------------------------------------------- ----------------------------------- 5.37% wordpress-sysdig_wordpress_1 1.35% wordpress-sysdig_db_1 0.84% ​​host 0.51% sysdig

3. Puede profundizar aún más e identificar el proceso más intensivo de CPU con el topprocs_cpu chisel:

sysdig -r tracking-wordpress.scap -c topprocs_cpu container.name contiene wordpress_1
CPU% PID de proceso ---------------------------------------------- ---------------------------------- 0.12% apache2 8383 0.11% apache2 9413 0.11% apache2 9300 0.11% apache2 9242 0.11% apache2 8897 0.11% apache2 8422 0.10% apache2 9372 0.10% apache2 9241 0.10% apache2 8424 0.09% apache2 9429

Si desea ver más detalles, el ps chisel ofrece una alternativa más detallada:

sysdig -r tracking-wordpress.scap -c ps container.name = wordpress-sysdig_wordpress_1
TID PID USUARIO VIRT RES FDLIMIT CMD 5896 5896 raíz 232.82M 22.32M 429496729 apache2 8383 8383 www-data 307.44M 25.46M 429496729 apache2 8422 8422 www-data 235.44M 22.90M 42949672929 apache2 8424 8424 www-data 297.42 429492 294.4294292 294 429 8897 www-data 235.44M 22.89M 429496729 apache2 9154 9154 www-data 235.44M 22.91M 429496729 apache2 9241 9241 www-data 307.44M 25.66M 429496729 apache2 9242 9242 www-data 307.44M 25.67M 4294967.400 www4 data-234004004004 234 22.89M 429496729 apache2 9372 9372 www-data 235.44M 22.89M 429496729 apache2 9413 9413 www-data 233.44M 20.77M 429496729 apache2

Consejos útiles

Si ejecuta Sysdig para capturar eventos como en el ejemplo anterior (sysdig -w tracking-wordpress.scap), el archivo de eventos crecerá continuamente hasta que consuma todo el espacio disponible. Existen algunos métodos que pueden ayudar a evitar que esto suceda:

  • Especifique el número de eventos que Sysdig debe capturar pasándole el indicador -n. Una vez que Sysdig capture el número especificado de eventos, saldrá automáticamente:
sysdig -n 5000 -w tracking-wordpress.scap
  • Use el indicador -C para configurar Sysdig para que rompa la captura en archivos más pequeños de un tamaño específico. El siguiente ejemplo guarda eventos continuamente en archivos de <10 MB:
sysdig -C 10 -w tracking-wordpress.scap

Esto creará un montón de archivos de no más de 10 MB:

ls -lh tracking-wordpress *
-rw-r - r--. 1 root root 9.6M 7 de enero 17:13 tracking-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7 de enero 17:14 tracking-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 de enero 17:14 tracking-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7 de enero 17:14 tracking-wordpress.scap3 -rw-r - r--. 1 root root 9.6M 7 de enero 17:14 tracking-wordpress.scap4 -rw-r - r--. 1 root root 9.6M 7 de enero 17:14 tracking-wordpress.scap5 -rw-r - r--. 1 root root 9.6M 7 de enero 17:14 tracking-wordpress.scap6 -rw-r - r--. 1 root root 9.6M 7 de enero 17:14 tracking-wordpress.scap7 -rw-r - r--. 1 root root 6.4M 7 de enero 17:14 tracking-wordpress.scap8
  • Especifique el número máximo de archivos que Sysdig debe mantener con el indicador -W. Por ejemplo, puede combinar los indicadores -C y -W de esta manera:
sysdig -C 10 -W 4 -w monitorización-wordpress.scap

El comando anterior solo mantendrá los últimos cuatro archivos de captura:

ls -lh tracking-wordpress *
-rw-r - r--. 1 root root 7.2M 7 de enero 17:21 tracking-wordpress.scap0 -rw-r - r--. 1 root root 9.6M 7 de enero 17:21 tracking-wordpress.scap1 -rw-r - r--. 1 root root 9.6M 7 de enero 17:21 tracking-wordpress.scap2 -rw-r - r--. 1 root root 9.6M 7 de enero 17:21 tracking-wordpress.scap3 root @ cd06093b141b: / # sysdig -C 10 -W 4 -w tracking-wordpress.scap

Monitoreo en tiempo real

Con Sysdig, también puede analizar datos en tiempo real. A primera vista, esto puede parecer una tarea desalentadora porque, por defecto, todos los eventos se imprimen continuamente en la consola. Afortunadamente, los cinceles están aquí para ayudar.

Tomemos un ejemplo.

Analice sus procesos en una base por contenedor

  1. Ejecute el siguiente comando para enumerar sus contenedores:
docker ps
ID DE CONTENEDOR COMANDO DE IMAGEN ESTADO CREADO NOMBRES DE PUERTOS 5b253e74e8e7 sysdig / sysdig "/docker-entrypoint.…" Hace 9 minutos Arriba 9 minutos sysdig 06def7875617 wordpress: último "docker-entrypoint.s ..." Hace 3 horas Arriba 3 horas 0.0.0.0:8000 -> 80 / tcp wordpress-sysdig_wordpress_1 6bd8418eb03f mysql: 5.7 "docker-entrypoint.s ..." Hace 3 horas Subir 3 horas 3306 / tcp, 33060 / tcp wordpress-sysdig_db_1

2. Puede analizar los procesos que se ejecutan en el contenedor de WordPress con:

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_wordpress_1

3. Del mismo modo, puede analizar los procesos que se ejecutan en el contenedor MySQL:

sysdig -pc -c topprocs_cpu container.name = wordpress-sysdig_db_1

Tenga en cuenta que, no muy diferente de este ejemplo, Sysdig puede monitorear el tráfico de red, el uso del disco, etc.

En este tutorial, ha repasado los fundamentos del uso de Sysdig para obtener una comprensión clara de la actividad generada por sus contenedores. Los ejemplos en esta publicación del blog lo ayudaron a comenzar y, en futuros tutoriales, le mostraremos cómo usar Csysdig y Sysdig Inspect.