Sysdig – это мощный и гибкий инструмент для мониторинга и устранения неполадок системы с открытым исходным кодом, который работает на Linux, а также поддерживает Windows и Mac OSX, но с ограниченной функциональностью и может использоваться для анализа, инспекции и отладки системы.
Обычно для выполнения задач мониторинга и отладки Linux используется комбинация различных инструментов мониторинга и устранения неполадок производительности Linux, включая перечисленные ниже:
- strace – обнаружение системных вызовов и сигналов к процессу.
- tcpdump – мониторинг сетевого трафика в формате raw.
- netstat – мониторинг сетевых соединений.
- htop – мониторинг процессов в реальном времени.
- iftop – мониторинг пропускной способности сети в реальном времени.
- 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

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

Примечание: Чтобы по-настоящему понять этот инструмент, вам нужно использовать sysdig, который производит сырые данные, как мы видели ранее, с работающей системы Linux: для этого вам нужно понять, как использовать фильтры и резцы.
Но если вам нужен безболезненный способ использования sysdig – продолжайте с csysdig.
Понимание резцов и фильтров Sysdig
Резцы Sysdig – это минимальные сценарии Lua для анализа потока событий sysdig для выполнения полезных действий по устранению неполадок в системе и не только. Следующая команда поможет вам просмотреть все доступные резцы:
$ sudo sysdig -cl
На скриншоте показан пример списка долот различных категорий.

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

Фильтры 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

Создание файла трассировки системы 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

Мониторинг процессов Linux
Чтобы просмотреть список системных процессов, введите:
$ sudo sysdig -c ps

Мониторинг процессов по использованию ЦП
Чтобы наблюдать за верхними процессами по проценту использования ЦП, выполните эту команду:
$ sudo sysdig -c topprocs_cpu

Мониторинг сетевых соединений и ввода-вывода
Чтобы просмотреть системные сетевые соединения, выполните:
$ sudo sysdig -c netstat

Следующая команда поможет вам вывести список верхних сетевых соединений по общему количеству байтов:
$ sudo sysdig -c topconns
Затем вы также можете вывести список верхних процессов по сетевому вводу-выводу следующим образом:
$ sudo sysdig -c topprocs_net
Мониторинг системного ввода-вывода файлов
Вы можете вывести данные, прочитанные и записанные процессами в системе, как показано ниже:
$ sudo sysdig -c echo_fds

Чтобы вывести список верхних процессов по (чтение + запись) байтам диска, используйте:
$ sudo sysdig -c topprocs_file
Исправление проблем производительности системы Linux
Чтобы следить за узкими местами системы (медленные системные вызовы), выполните эту команду:
$ sudo sysdig -c bottlenecks

Отслеживание времени выполнения процесса
Чтобы отслеживать время выполнения процесса, вы можете запустить эту команду и записать трассировку в файл:
$ sudo sysdig -w extime.scap -c proc_exec_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]

Отображение входных оболочек и интерактивной активности пользователей
Нижеприведенная команда позволит вам просматривать все идентификаторы входных оболочек:
$ sudo sysdig -c list_login_shells
И, наконец, вы можете показать интерактивную активность пользователей системы следующим образом:
$ sudo sysdig -c spy_users

Для получения дополнительной информации о использовании и примерах прочтите страницы справки по sysdig и csysdig:
$ man sysdig $ man csysdig
Ссылка: https://www.sysdig.org/
Также проверьте эти полезные инструменты мониторинга производительности Linux:
- BCC – Динамические инструменты трассировки для мониторинга производительности Linux, сетевых и других задач
- pyDash – Веб-ориентированный инструмент мониторинга производительности Linux
- Perf- Инструмент мониторинга и анализа производительности для Linux
- Collectl: Продвинутый инструмент мониторинга производительности для Linux
- Netdata – Инструмент мониторинга производительности в реальном времени для систем Linux
Заключение
Sysdig объединяет функциональность множества командных инструментов в одном замечательном интерфейсе, позволяя вам глубоко погружаться в события вашей системы Linux для сбора данных, сохранения их для последующего анализа и обеспечивая невероятную поддержку контейнеров.
Чтобы задать вопросы или поделиться своими мыслями об этом инструменте, используйте форму обратной связи ниже.
Source:
https://www.tecmint.com/sysdig-system-monitoring-and-troubleshooting-tool-for-linux/