Sysdig – мощный инструмент для мониторинга и устранения неполадок в системе Linux

Sysdig – это мощный и гибкий инструмент для мониторинга и устранения неполадок системы с открытым исходным кодом, который работает на Linux, а также поддерживает Windows и Mac OSX, но с ограниченной функциональностью и может использоваться для анализа, инспекции и отладки системы.

Обычно для выполнения задач мониторинга и отладки Linux используется комбинация различных инструментов мониторинга и устранения неполадок производительности Linux, включая перечисленные ниже:

  1. strace – обнаружение системных вызовов и сигналов к процессу.
  2. tcpdump – мониторинг сетевого трафика в формате raw.
  3. netstat – мониторинг сетевых соединений.
  4. htop – мониторинг процессов в реальном времени.
  5. iftop – мониторинг пропускной способности сети в реальном времени.
  6. lsof – просмотр файлов, открытых процессами.

Однако sysdig интегрирует то, что предлагают все вышеперечисленные инструменты и многие другие, в одну простую программу, особенно с удивительной поддержкой контейнеров. Это позволяет захватывать, сохранять, фильтровать и изучать реальное поведение (поток событий) систем Linux, а также контейнеров.

Он поставляется с интерфейсом командной строки и мощным интерактивным пользовательским интерфейсом (csysdig), который позволяет наблюдать за активностью системы в реальном времени или выполнять трассировку и сохранять для последующего анализа. Вы можете посмотреть, как работает csysdig, из видео ниже.

Функции Sysdig:

  • Это быстро, стабильно и просто в использовании, с подробной документацией.
  • Поставляется с нативной поддержкой технологий контейнеров, включая Docker, LXC.
  • Может быть скриптован на Lua; предлагает зубила (легковесные сценарии Lua) для обработки захваченных системных событий.
  • Поддерживает полезное фильтрование вывода.
  • Поддерживает трассировку системы и приложений.
  • Может быть интегрирован с Ansible, Puppet и Logstash.
  • Позволяет выполнять расширенный анализ журналов.
  • Также предлагает функции анализа атак на серверы Linux (форензика) для этичных хакеров и многое другое.

В этой статье мы покажем, как установить sysdig в системе Linux, и использовать его с базовыми примерами анализа системы, мониторинга и устранения неполадок.

Как установить Sysdig в Linux

Установка пакета sysdig так же проста, как выполнение следующей команды, которая проверит все требования; если все в порядке, она загрузит и установит пакет из репозитория 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

После установки вам нужно запустить sysdig от имени root, потому что для его работы требуется доступ к критическим областям, таким как файловая система /proc, устройства /dev/sysdig* и автоматическая загрузка модуля ядра sysdig-probe (если он не загружен); в противном случае используйте команду sudo.

Самый простой пример – запустить его без аргументов, это позволит вам просматривать поток событий вашей системы Linux в реальном времени:

$ sudo sysdig
Watch Linux System Events

Возможно, вышеуказанный вывод (сырые данные) не имеет для вас особого смысла, для более полезного вывода выполните csysdig:

$ sudo csysdig 
Monitor Linux System Events

Примечание: Чтобы по-настоящему понять этот инструмент, вам нужно использовать sysdig, который производит сырые данные, как мы видели ранее, с работающей системы Linux: для этого вам нужно понять, как использовать фильтры и резцы.

Но если вам нужен безболезненный способ использования sysdig – продолжайте с csysdig.

Понимание резцов и фильтров Sysdig

Резцы Sysdig – это минимальные сценарии Lua для анализа потока событий sysdig для выполнения полезных действий по устранению неполадок в системе и не только. Следующая команда поможет вам просмотреть все доступные резцы:

$ sudo sysdig -cl

На скриншоте показан пример списка долот различных категорий.

View Sysdig Chisels

Если вы хотите получить дополнительную информацию о конкретном долоте, используйте флаг -i:

$ sudo sysdig -i topprocs_cpu
View Sysdig Chisel Info

Фильтры Sysdig добавляют больше возможностей к виду вывода, который вы можете получить из потоков событий, они позволяют вам настраивать вывод. Вы должны указать их в конце командной строки.

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

Для просмотра списка доступных классов полей, полей и их описаний введите:

$ sudo sysdig -l
View Sysdig Field Classes

Создание файла трассировки системы Linux

Чтобы вывести вывод sysdig в файл для последующего анализа, используйте флаг -w, как показано ниже.

Вы можете прочитать файл дампа трассы, используя флаг -r:

$ sudo sysdig -r trace.scap

Опция -s используется для указания количества байтов данных, которые должны быть захвачены для каждого системного события. В этом примере мы фильтруем события для процесса mongod.

$ sudo sysdig -s 3000 -w trace.scap
$ sudo sysdig -r trace.scap proc.name=mongod
Create MongoDB Trace File

Мониторинг процессов Linux

Чтобы просмотреть список системных процессов, введите:

$ sudo sysdig -c ps
Monitor Linux Processes

Мониторинг процессов по использованию ЦП

Чтобы наблюдать за верхними процессами по проценту использования ЦП, выполните эту команду:

$ sudo sysdig -c topprocs_cpu
Monitor Processes by CPU Usage

Мониторинг сетевых соединений и ввода-вывода

Чтобы просмотреть системные сетевые соединения, выполните:

$ sudo sysdig -c netstat
Monitor Network Connections

Следующая команда поможет вам вывести список верхних сетевых соединений по общему количеству байтов:

$ sudo sysdig -c topconns

Затем вы также можете вывести список верхних процессов по сетевому вводу-выводу следующим образом:

$ sudo sysdig -c topprocs_net    

Мониторинг системного ввода-вывода файлов

Вы можете вывести данные, прочитанные и записанные процессами в системе, как показано ниже:

$ sudo sysdig -c echo_fds
Monitor System IO

Чтобы вывести список верхних процессов по (чтение + запись) байтам диска, используйте:

$ sudo sysdig -c topprocs_file   

Исправление проблем производительности системы Linux

Чтобы следить за узкими местами системы (медленные системные вызовы), выполните эту команду:

$ sudo sysdig -c bottlenecks
Troubleshoot Linux Performance

Отслеживание времени выполнения процесса

Чтобы отслеживать время выполнения процесса, вы можете запустить эту команду и записать трассировку в файл:

$ sudo sysdig -w extime.scap -c proc_exec_time 
Track Process Execution Time

Затем используйте фильтр, чтобы сузить детали определенного процесса (postgres в данном примере) следующим образом:

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

Обнаружение медленных сетевых операций ввода-вывода

Эта простая команда поможет вам обнаружить медленные сетевые операции ввода-вывода:

$ sudo sysdig -c netlower     

Отслеживание записей в журнальных файлах

Нижеприведенная команда поможет вам отобразить каждое сообщение, записанное в системный журнал (syslog). Если вас интересуют записи журнала для определенного процесса, создайте трассировку и отфильтруйте ее соответственно, как показано ранее:

$ sudo sysdig -c spy_syslog      

Вы можете записать любые данные, записанные любым процессом, в журнальный файл следующим образом:

$ sudo sysdig -c spy_logs   

Мониторинг запросов HTTP-сервера

Если у вас есть HTTP-сервер, такой как Apache или Nginx, запущенный на вашей системе, просмотрите журнал запросов сервера с помощью этой команды:

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

Отображение входных оболочек и интерактивной активности пользователей

Нижеприведенная команда позволит вам просматривать все идентификаторы входных оболочек:

$ sudo sysdig -c list_login_shells

И, наконец, вы можете показать интерактивную активность пользователей системы следующим образом:

$ sudo sysdig -c spy_users
Monitor User Activity

Для получения дополнительной информации о использовании и примерах прочтите страницы справки по sysdig и csysdig:

$ man sysdig 
$ man csysdig

Ссылка: https://www.sysdig.org/

Также проверьте эти полезные инструменты мониторинга производительности Linux:

  1. BCC – Динамические инструменты трассировки для мониторинга производительности Linux, сетевых и других задач
  2. pyDash – Веб-ориентированный инструмент мониторинга производительности Linux
  3. Perf- Инструмент мониторинга и анализа производительности для Linux
  4. Collectl: Продвинутый инструмент мониторинга производительности для Linux
  5. Netdata – Инструмент мониторинга производительности в реальном времени для систем Linux
Заключение

Sysdig объединяет функциональность множества командных инструментов в одном замечательном интерфейсе, позволяя вам глубоко погружаться в события вашей системы Linux для сбора данных, сохранения их для последующего анализа и обеспечивая невероятную поддержку контейнеров.

Чтобы задать вопросы или поделиться своими мыслями об этом инструменте, используйте форму обратной связи ниже.

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