Sysdig: una potente herramienta de supervisión y resolución de problemas del sistema para Linux


Sysdig es una herramienta de solución de problemas y supervisión de sistemas de código abierto, multiplataforma, potente y flexible para Linux; también funciona en Windows y Mac OSX, pero con una funcionalidad limitada y se puede utilizar para el análisis, la inspección y la depuración del sistema.

Normalmente, emplearía una combinación de varias herramientas de solución de problemas y monitoreo del rendimiento de Linux, incluidas las que se enumeran a continuación, para realizar las tareas de monitoreo y depuración de Linux:

  1. strace: descubre las llamadas del sistema y las señales de un proceso.
  2. tcpdump: supervisión del tráfico de red sin procesar.
  3. netstat: monitoreo de conexiones de red.
  4. htop: monitoreo de procesos en tiempo real.
  5. iftop: supervisión del ancho de banda de la red en tiempo real.
  6. lsof: ver qué archivos se abren mediante qué proceso.

Sin embargo, sysdig integra lo que ofrecen todas las herramientas anteriores y muchas más en un programa único y simple, más aún con una increíble compatibilidad con contenedores. Le permite capturar, guardar, filtrar y examinar el comportamiento real (flujo de eventos) de los sistemas Linux y los contenedores.

Viene con una interfaz de línea de comandos y una poderosa interfaz de usuario interactiva (csysdig) que le permite ver la actividad del sistema en tiempo real, o realizar un volcado de seguimiento y guardar para un análisis posterior. Puede ver cómo funciona csysdig en el siguiente video.

  • Es rápido, estable y fácil de usar con una documentación exhaustiva y bien documentada.
  • Viene con soporte nativo para tecnologías de contenedores, incluido Docker, LXC.
  • Es programable en Lua; ofrece cinceles (scripts de Lua livianos) para procesar eventos capturados del sistema.
  • Admite un filtrado útil de la salida.
  • Admite el seguimiento de aplicaciones y sistemas.
  • Se puede integrar con Ansible, Puppet y Logstash.
  • Habilite el análisis de registro avanzado de muestra.
  • También ofrece funciones de análisis de ataques al servidor Linux (forense) para piratas informáticos éticos y mucho más.

En este artículo, mostraremos cómo instalar sysdig en un sistema Linux y usarlo con ejemplos básicos de análisis, monitoreo y resolución de problemas del sistema.

Cómo instalar Sysdig en Linux

Instalar el paquete sysdig es tan fácil como ejecutar el siguiente comando, que verificará todos los requisitos; si todo está en su lugar, descargará e instalará el paquete desde el repositorio de Draios APT/YUM.

# curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash 
OR
$ curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

Después de instalarlo, debe ejecutar sysdig como root porque requiere acceso a áreas críticas como el sistema de archivos/proc, los dispositivos/dev/sysdig * y debe cargar automáticamente el módulo del kernel sysdig-probe (en caso de que no lo sea) ; de lo contrario, use el comando sudo.

El ejemplo más básico es ejecutarlo sin ningún argumento, esto le permitirá ver el flujo de eventos de su sistema Linux actualizado en tiempo real:

$ sudo sysdig

La salida anterior (datos sin procesar) quizás no tenga mucho sentido para usted, para una salida más útil, ejecute csysdig:

$ sudo csysdig 

Nota: Para tener una idea real de esta herramienta, debe usar sysdig, que produce datos sin procesar como vimos antes, desde un sistema Linux en ejecución: esto requiere que comprenda cómo usar filtros y cinceles.

Pero si necesita un medio indoloro de usar sysdig, continúe con csysdig.

Comprensión de los filtros y cinceles de Sysdig

Los cinceles de Sysdig son scripts mínimos de Lua para examinar el flujo de eventos de sysdig para llevar a cabo acciones útiles de solución de problemas del sistema y más. El siguiente comando le ayudará a ver todos los cinceles disponibles:

$ sudo sysdig -cl

La captura de pantalla muestra una lista de muestra de cinceles en diferentes categorías.

Si desea obtener más información sobre un cincel en particular, use la marca -i :

$ sudo sysdig -i topprocs_cpu

Los filtros Sysdig agregan más potencia al tipo de salida que puede obtener de los flujos de eventos, le permiten personalizar la salida. Debe especificarlos al final de una línea de comando.

Un filtro sencillo y común es una verificación básica "class.field u003d value", también puede combinar cinceles con filtros para personalizaciones aún más poderosas.

Para ver una lista de las clases de campo disponibles, los campos y sus descripciones, escriba:

$ sudo sysdig -l

Para volcar la salida de sysdig en un archivo para un análisis posterior, use el indicador -w como este.

Puede leer el archivo de volcado de seguimiento con la marca -r:

$ sudo sysdig -r trace.scap

La opción -s se utiliza para especificar la cantidad de bytes de datos que se capturarán para cada evento del sistema. En este ejemplo, estamos filtrando eventos para el proceso mongod.

$ sudo sysdig -s 3000 -w trace.scap
$ sudo sysdig -r trace.scap proc.name=mongod

Para enumerar los procesos del sistema, escriba:

$ sudo sysdig -c ps

Para ver los principales procesos por porcentaje de uso de CPU, ejecute este comando:

$ sudo sysdig -c topprocs_cpu

Para ver las conexiones de red del sistema, ejecute:

$ sudo sysdig -c netstat

El siguiente comando lo ayudará a enumerar las principales conexiones de red por bytes totales:

$ sudo sysdig -c topconns

A continuación, también puede enumerar los principales procesos por E/S de red de la siguiente manera:

$ sudo sysdig -c topprocs_net    

Puede generar los datos leídos y escritos por procesos en el sistema de la siguiente manera:

$ sudo sysdig -c echo_fds

Para enumerar los procesos principales por (lectura + escritura) bytes de disco, use:

$ sudo sysdig -c topprocs_file   

Para vigilar los cuellos de botella del sistema (llamadas lentas del sistema), ejecute este comando:

$ sudo sysdig -c bottlenecks

Para rastrear el tiempo de ejecución de un proceso, puede ejecutar este comando y volcar el rastreo en un archivo:

$ sudo sysdig -w extime.scap -c proc_exec_time 

Luego, use un filtro para centrarse en los detalles de un proceso en particular (postgres en este ejemplo) de la siguiente manera:

$ sudo sysdig -r extime.scap proc.name=postgres

Este sencillo comando le ayudará a detectar la E/0 de red lenta:

$ sudo sysdig -c netlower     

El siguiente comando lo ayuda a mostrar todos los mensajes escritos en syslog, si está interesado en las entradas de registro para un proceso específico, cree un volcado de seguimiento y filtre como se muestra anteriormente:

$ sudo sysdig -c spy_syslog      

Puede imprimir cualquier dato escrito por cualquier proceso en un archivo de registro de la siguiente manera:

$ sudo sysdig -c spy_logs   

Si tiene un servidor HTTP como Apache o Nginx ejecutándose en nuestro sistema, busque en el registro de solicitudes del servidor con este comando:

$ sudo sysdig -c httplog    
$ sudo sysdig -c httptop   [Print Top HTTP Requests] 

El siguiente comando le permitirá ver todos los ID de shell de inicio de sesión:

$ sudo sysdig -c list_login_shells

Por último, pero no menos importante, puede mostrar la actividad interactiva de los usuarios del sistema así:

$ sudo sysdig -c spy_users

Para obtener más información de uso y ejemplos, lea las páginas de manual de sysdig y csysdig:

$ man sysdig 
$ man csysdig

Referencia: https://www.sysdig.org/

Consulte también estas útiles herramientas de supervisión del rendimiento de Linux:

  1. BCC: herramientas de seguimiento dinámico para la supervisión del rendimiento de Linux, redes y más
  2. pyDash: una herramienta de supervisión del rendimiento de Linux basada en la web
  3. Perf- Una herramienta de análisis y supervisión del rendimiento para Linux
  4. Collectl: una herramienta avanzada de supervisión del rendimiento todo en uno para Linux
  5. Netdata: una herramienta de supervisión del rendimiento en tiempo real para sistemas Linux

Sysdig reúne funcionalidades de numerosas herramientas de línea de comandos en una interfaz notable, lo que le permite profundizar en los eventos de su sistema Linux para recopilar datos, guardarlos para un análisis posterior y ofrece un soporte de contenedores increíble.

Para hacer preguntas o compartir ideas sobre esta herramienta, utilice el formulario de comentarios a continuación.