Sysdig – Una potente herramienta de monitoreo y solución de problemas del sistema para Linux

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

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

  1. strace – descubrir llamadas al sistema y señales a un proceso.
  2. tcpdump – monitoreo de tráfico de red en bruto.
  3. netstat – monitoreo de conexiones de red.
  4. htop – monitoreo de procesos en tiempo real.
  5. iftop – monitoreo de ancho de banda de red en tiempo real.
  6. lsof – ver qué archivos están abiertos por qué proceso.

Sin embargo, sysdig integra lo que todas las herramientas anteriores y muchas más ofrecen en un solo y simple programa, además con un increíble soporte para contenedores. Te permite capturar, guardar, filtrar y examinar el comportamiento real (flujo de eventos) de los sistemas Linux y contenedores.

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

Características de Sysdig:

  • Es rápido, estable y fácil de usar con una documentación muy completa.
  • Viene con soporte nativo para tecnologías de contenedores, incluyendo Docker, LXC.
  • Es scriptable en Lua; ofrece cinceles (scripts ligeros de Lua) para procesar eventos del sistema capturados.
  • Soporta filtrado útil de la salida.
  • Soporta trazado de sistema y aplicaciones.
  • Se puede integrar con Ansible, Puppet y Logstash.
  • Permite un análisis avanzado de registros de muestra.
  • También ofrece funciones de análisis de ataque a servidores Linux (forense) para hackers éticos y mucho más.

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

Cómo instalar Sysdig en Linux

La instalación del 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 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, es necesario ejecutar sysdig como root porque requiere acceso a áreas críticas como el sistema de archivos /proc, dispositivos /dev/sysdig* y necesita cargar automáticamente el módulo del kernel sysdig-probe (en caso de que no esté); de lo contrario, use el comando sudo.

El ejemplo más básico es ejecutarlo sin argumentos, lo que te permitirá ver el flujo de eventos de tu sistema Linux actualizado en tiempo real:

$ sudo sysdig
Watch Linux System Events

El resultado anterior (datos en bruto) quizás no tenga mucho sentido para ti, para obtener un resultado más útil ejecuta csysdig:

$ sudo csysdig 
Monitor Linux System Events

Nota: Para sentir realmente esta herramienta, necesitas usar sysdig que produce datos en bruto como vimos anteriormente, desde un sistema Linux en ejecución: esto requiere que entiendas cómo usar filtros y cinceles.

Pero si necesitas una forma sencilla de usar sysdig, continúa con csysdig.

Comprensión de Cinceles y Filtros de Sysdig

Los cinceles de Sysdig son scripts Lua mínimos para examinar el flujo de eventos de sysdig y 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 formones bajo diferentes categorías.

View Sysdig Chisels

Si deseas obtener más información sobre un formón en particular, utiliza la bandera -i:

$ sudo sysdig -i topprocs_cpu
View Sysdig Chisel Info

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

A straightforward and commonest filter is a basic “class.field=value” check, you can also combine chisels with filters for even more powerful customizations.

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

$ sudo sysdig -l
View Sysdig Field Classes

Creación de un Archivo de Rastreo del Sistema Linux

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

Puedes leer el archivo de volcado de rastreo utilizando la bandera -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
Create MongoDB Trace File

Monitoreo de Procesos en Linux

Para listar los procesos del sistema, escribe:

$ sudo sysdig -c ps
Monitor Linux Processes

Monitoreo de Procesos por Uso de CPU

Para observar los principales procesos por porcentaje de uso de CPU, ejecuta este comando:

$ sudo sysdig -c topprocs_cpu
Monitor Processes by CPU Usage

Monitoreo de Conexiones de Red y E/S

Para ver las conexiones de red del sistema, ejecuta:

$ sudo sysdig -c netstat
Monitor Network Connections

El siguiente comando te ayudará a listar las principales conexiones de red por bytes totales:

$ sudo sysdig -c topconns

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

$ sudo sysdig -c topprocs_net    

Monitoreo de E/S de Archivo del Sistema

Puedes obtener la salida de los datos leídos y escritos por los procesos en el sistema de la siguiente manera:

$ sudo sysdig -c echo_fds
Monitor System IO

Para listar los principales procesos por bytes de disco (lectura + escritura), utiliza:

$ sudo sysdig -c topprocs_file   

Solución de problemas de rendimiento del sistema Linux

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

$ sudo sysdig -c bottlenecks
Troubleshoot Linux Performance

Seguimiento del tiempo de ejecución de un proceso

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 
Track Process Execution Time

Luego, utilice 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

Descubrir E/S de red lenta

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

$ sudo sysdig -c netlower     

Observar entradas de archivo de registro

El siguiente comando le ayuda a mostrar cada mensaje escrito en syslog; si le interesan las entradas de registro para un proceso específico, cree un volcado de traza y filtrelo según se muestra antes:

$ 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   

Monitoreo de solicitudes de servidor HTTP

Si tiene un servidor HTTP como Apache o Nginx en funcionamiento en su sistema, revise el registro de solicitudes del servidor con este comando:

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

Mostrar shells de inicio de sesión y actividad de usuario interactiva

El siguiente comando le permitirá ver todas las identificaciones de shell de inicio de sesión:

$ sudo sysdig -c list_login_shells

Por último, puede mostrar la actividad interactiva de los usuarios del sistema de la siguiente manera:

$ sudo sysdig -c spy_users
Monitor User Activity

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

$ man sysdig 
$ man csysdig

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

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

  1. BCC: Herramientas de trazado dinámico para monitoreo de rendimiento, redes y más en Linux
  2. pyDash: Una herramienta de monitoreo de rendimiento de Linux basada en web
  3. Perf: Una herramienta de monitoreo y análisis de rendimiento para Linux
  4. Collectl: Una avanzada herramienta de monitoreo de rendimiento todo en uno para Linux
  5. Netdata: Una herramienta de monitoreo de rendimiento en tiempo real para sistemas Linux
Conclusión

Sysdig reúne funcionalidades de numerosas herramientas de línea de comandos en una interfaz notable, permitiéndote investigar a fondo los eventos de tu sistema Linux para recopilar datos, guardarlos para análisis posterior y ofrece un increíble soporte para contenedores.

Para hacer preguntas o compartir tus pensamientos sobre esta herramienta, utiliza el formulario de comentarios a continuación.

Source:
https://www.tecmint.com/sysdig-system-monitoring-and-troubleshooting-tool-for-linux/