Sysdig: una potente herramienta de monitoreo y solución de problemas del sistema para Linux


Sysdig es una herramienta de solución de problemas y monitoreo 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 monitoreo y solución de problemas de Linux, incluidas las que se enumeran a continuación para realizar las tareas de monitoreo y depuración de Linux:

  1. strace – discover system calls and signals to a process.
  2. tcpdump – raw network traffic monitoring.
  3. netstat – network connections monitoring.
  4. htop – real time process monitoring.
  5. iftop – real time network bandwidth monitoring.
  6. lsof – view which files are opened by which process.

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

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

  • It is fast, stable and easy-to-use with comprehensively well documented.
  • Comes with native support for container technologies, including Docker, LXC.
  • It is scriptable in Lua; offers chisels (lightweight Lua scripts) for processing captured system events.
  • Supports useful filtering of output.
  • Supports system and application tracing.
  • It can be integrated with Ansible, Puppet and Logstash.
  • Enable sample advanced log analysis.
  • It also offers Linux server attack (forensics) analysis features for ethical hackers and lot’s more.

En este artículo, mostraremos cómo instalar sysdig en un sistema Linux y lo utilizaremos 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 sencillo 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 APT/YUM de Draios.

# 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 /proc sistema de archivos, /dev/sysdig * dispositivos y necesidades para 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 

rojo

Pero si necesita un método indoloro para usar sysdig , continúe con csysdig .

Entendiendo los cinceles y filtros de Sysdig

Los cinceles Sysdig son secuencias de comandos Lua mínimas 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 te 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 de Sysdig agregan más poder al tipo de salida que puede obtener de las secuencias de eventos, le permiten personalizar la salida. Debe especificarlos al final de una línea de comando.

Un filtro simple y común es una comprobación básica de " class.field = value "; también puede combinar cinceles con filtros para obtener personalizaciones aún más potentes.

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

$ sudo sysdig -l

Para volcar la salida de sysdig en un archivo para un análisis posterior, use la marca -w de esta manera.

Puede leer el archivo de volcado de rastreo usando la marca -r :

$ sudo sysdig -r trace.scap

La opción -s se usa 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 listar los procesos del sistema, escriba:

$ sudo sysdig -c ps

Para ver los procesos principales por porcentaje de uso de la 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 le ayudará a enumerar las principales conexiones de red por bytes totales:

$ sudo sysdig -c topconns

A continuación, también puede enumerar los procesos principales 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 bytes de disco (lectura + escritura), 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 la traza en un archivo:

$ sudo sysdig -w extime.scap -c proc_exec_time 

Luego use un filtro para reducir a cero 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 te ayudará a detectar la red lenta I/0:

$ sudo sysdig -c netlower     

El siguiente comando le 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 corresponde 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, revise 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 como:

$ sudo sysdig -c spy_users

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

$ man sysdig 
$ man csysdig

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

También puedes ver estas útiles herramientas de monitoreo de rendimiento de Linux:

  1. BCC – Dynamic Tracing Tools for Linux Performance Monitoring, Networking and More
  2. pyDash – A Web Based Linux Performance Monitoring Tool
  3. Perf- A Performance Monitoring and Analysis Tool for Linux
  4. Collectl: An Advanced All-in-One Performance Monitoring Tool for Linux
  5. Netdata – A Real-Time Performance Monitoring Tool for Linux Systems

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

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