Краткое описание: в этой статье мы рассмотрим лучшие инструменты для мониторинга и отладки дискового ввода-вывода (производительности) на серверах Linux.
Ключевой показатель производительности для мониторинга на сервере Linux — это активность дискового ввода-вывода (I/O), которая может существенно влиять на работу сервера Linux, в частности на скорость сохранения или извлечения файлов или данных с диска (особенно на серверах баз данных). Это напрямую влияет на производительность приложений и сервисов.
1. iostat — показывает статистику ввода и вывода данных на устройстве
iosat — одна из многих утилит системного мониторинга на основе терминала в пакете sysstat. Это широко используемая утилита, предназначенная для сбора статистики ЦП и ввода-вывода для блочных устройств и разделов.
Чтобы использовать iostat на сервере Linux, вам нужно установить пакет sysstat в вашей системе Linux, выполнив соответствующую команду для вашего дистрибутива Linux.
sudo apt install sysstat [В Debian, Ubuntu и Mint] sudo yum install sysstat [В RHEL/CentOS/Fedora и Rocky Linux/AlmaLinux] sudo emerge -a app-admin/sysstat [В Gentoo Linux] sudo apk add sysstat [В Alpine Linux] sudo pacman -S sysstat [В Arch Linux] sudo zypper install sysstat [В OpenSUSE]
Чтобы просмотреть простой отчёт об использовании устройств, запустите iostat с параметром -d в командной строке. Обычно в первом отчёте содержится статистика о времени, прошедшем с момента запуска системы (время загрузки), а каждый последующий отчёт касается времени, прошедшего с момента предыдущего отчёта.
Используйте -x для расширенного статистического отчета и флаг -t для отображения времени в каждом отчете. Кроме того, если вы хотите исключить из отчета устройства, на которых не было активности, добавьте флаг -z:
iostat -d -t
или
iostat -d -x -t
Чтобы отображать статистику в килобайтах в секунду, а не в блоках в секунду, добавьте флаг -k или используйте флаг -m для отображения статистики в мегабайтах в секунду.
iostat -d -k
или
iostat -d -m
iostat также может отображать непрерывные отчёты об устройствах с интервалом в x секунд. Например, следующая команда отображает отчёты с интервалом в две секунды:
iostat -d 2
Как и в предыдущей команде, вы можете отображать n отчётов с интервалом в x секунд. Следующая команда отобразит 10 отчётов с интервалом в две секунды.
iostat -d 2 10
Кроме того, вы можете сохранить отчёт в файл для последующего анализа.
iostat -d 2 10 > disk_io_report.txt &
Дополнительную информацию о столбцах отчёта можно найти на странице руководства iostat:
man iostat
2. sar — отображение активности системы Linux
sar — ещё одна полезная утилита, входящая в состав пакета sysstat, предназначенная для сбора, отображения или сохранения информации об активности системы. Прежде чем начать её использовать, необходимо настроить её следующим образом.
Сначала включите сбор данных в файле /etc/default/sysstat.
sudo vi /etc/default/sysstat
или
sudo nano /etc/default/sysstat
Найдите следующую строку и измените значение на «true», как показано на рисунке.
ENABLED="true"
Далее вам нужно уменьшить интервал сбора данных, указанный в заданиях cron sysstat. По умолчанию он составляет 10 минут; вы можете уменьшить его до 2 минут.
Это можно сделать в файле /etc/cron.d/sysstat:
sudo vi /etc/cron.d/sysstat
или
sudo nano /etc/cron.d/sysstat
Сохраните файл и закройте его.
Наконец, включите и запустите службу sysstat с помощью следующей команды systemctl:
systemctl enable --now sysstat.service systemctl start sysstat.service
Затем подождите 2 минуты, чтобы начать просмотр отчётов sar. Используйте команду sar и параметр командной строки -b для получения статистики по вводу-выводу и скорости передачи данных, а также -d для получения информации об активности каждого блочного устройства, как показано на рисунке.
sar -d -b
3. iotop — мониторинг использования дискового ввода-вывода в Linux
По структуре iotop похож на инструмент для мониторинга top, но представляет собой простую утилиту, которая позволяет отслеживать активность и использование дискового ввода-вывода для каждого процесса.
Вы можете установить его на свой сервер Linux следующим образом (не забудьте ввести соответствующую команду для вашего дистрибутива Linux):
sudo apt install iotop [В Debian, Ubuntu и Mint] sudo yum install iotop [В RHEL/CentOS/Fedora и Rocky Linux/AlmaLinux] sudo emerge -a sys-process/iotop [В Gentoo Linux] sudo apk add iotop [В Alpine Linux] sudo pacman -S iotop [В Arch Linux] sudo zypper install iotop [В OpenSUSE]
Чтобы отслеживать активность ввода-вывода для каждого процесса, можно запустить iotop без каких-либо аргументов следующим образом. По умолчанию задержка между итерациями составляет 1 секунду. Это значение можно изменить с помощью флага -d.
iotop
или
iotop -d 2
iotop по умолчанию отображает все потоки процесса. Чтобы изменить это поведение и отображались только процессы, используйте параметр командной строки -P .
iotop -P
Кроме того, с помощью опции -a можно настроить отображение накопленных операций ввода-вывода вместо отображения пропускной способности. В этом режиме iotop показывает количество операций ввода-вывода, выполненных с момента запуска iotop.
iotop -P -a
4. dstat — универсальная статистика ресурсов в реальном времени
Важное обновление: dstat официально прекращён первоначальным разработчиком. Из-за действий RedHat, направленных на присвоение имени DSTAT, первоначальный сопровождающий прекратил разработку и теперь рекомендует использовать dool в качестве преемника проекта, который полностью совместим с командами dstat и продолжает активно развиваться.
Если вы по-прежнему хотите использовать dstat (он продолжает работать в большинстве систем), вы можете установить его, как показано ниже. Однако мы настоятельно рекомендуем перейти на dool, чтобы получать постоянную поддержку и обновления.
dstat — это мощная универсальная замена старым инструментам, таким как vmstat, iostat, netstat и другим. Он предоставляет статистику в реальном времени по различным системным ресурсам, включая процессор, диск, память и сеть, в понятном формате с цветовой кодировкой.
Чтобы установить dstat, используйте соответствующую команду для вашего дистрибутива Linux:
sudo apt install dstat # в Debian, Ubuntu и Mint sudo yum install dstat # в RHEL, CentOS, Fedora, Rocky Linux, AlmaLinux sudo emerge -a sys-process/dstat # в Gentoo Linux sudo apk add dstat # в Alpine Linux sudo pacman -S dstat # в Arch Linux sudo zypper install dstat # в OpenSUSE
Чтобы запустить его с настройками по умолчанию (которые включают в себя ЦП, дисковый и сетевой ввод-вывод):
dstat
Если вы хотите отслеживать только активность диска, используйте:
dstat -d
Вы также можете комбинировать различные параметры. Например, для мониторинга процессора, памяти и диска:
dstat -cdm
Чтобы сохранить вывод в файл CSV для последующего анализа:
dstat -cdm --output system_stats.csv
dstat очень гибкий и отлично подходит для быстрого получения целостного представления о вашей системе в режиме реального времени.
5. dool — современный преемник dstat
dool — это активно поддерживаемая версия dstat, созданная после закрытия оригинального проекта dstat. Он на 100 % совместим с командами dstat, при этом в нём добавлены новые функции и исправлены ошибки.
dool (инструмент, совместимый с dstat) рекомендуется для новых развёртываний и предоставляет те же мощные возможности мониторинга системы в реальном времени, к которым вы привыкли в dstat.
В большинстве современных дистрибутивов Linux вы можете установить dool из исходного кода:
git clone https://github.com/scottchiefbaker/dool.git cd dool sudo ./install.py
Отличная новость заключается в том, что dool использует тот же синтаксис, что и dstat, поэтому, если вы знакомы с dstat, вы уже знаете, как использовать dool.
Чтобы запустить его с настройками по умолчанию:
dool
Сосредоточьтесь только на активности диска:
dool -d
Контролируйте процессор, память и диск одновременно:
dool -cdm
6. atop — расширенный монитор системы и процессов
atop похож на top, но на стероидах. Он предоставляет подробную информацию об использовании ресурсов каждым процессом, включая дисковый ввод-вывод, память, процессор и сеть, что делает его отличным инструментом для глубокого анализа, особенно при диагностике проблем с производительностью с течением времени.
Установите его с помощью менеджера пакетов вашего дистрибутива:
sudo apt install atop # в Debian, Ubuntu и Mint sudo yum install atop # в RHEL, CentOS, Fedora, Rocky Linux, AlmaLinux sudo emerge -a sys-process/atop # в Gentoo Linux sudo apk add atop # в Alpine Linux sudo pacman -S atop # в Arch Linux sudo zypper install atop # в OpenSUSE
Чтобы запустить его:
atop
По умолчанию обновление происходит каждые 10 секунд. Вы можете изменить интервал следующим образом:
atop 2
Одна из его лучших функций — автоматическая запись данных в файл журнала (обычно в /var/log/atop/).
atop -r /var/log/atop/atop_ГГГГММДД
Это особенно полезно для отслеживания проблем с производительностью после того, как они уже возникли.
7. iotop-c (альтернатива iotop)
Хотя оригинальный iotop великолепен, существует более новая альтернатива под названием iotop-c, написанная на C, а не на Python, что делает её значительно быстрее и более ресурсоэффективной.
sudo apt install iotop-c # в Debian, Ubuntu и Mint sudo yum install iotop-c # в RHEL, CentOS, Fedora, Rocky Linux, AlmaLinux sudo pacman -S iotop-c # в Arch Linux
Чтобы запустить его:
iotop-c
У него тот же интерфейс, что и у iotop, но он работает быстрее, особенно в системах, где много процессов выполняют операции ввода-вывода. Используйте его так же, как обычный iotop, но ожидайте более быстрых обновлений и меньших накладных расходов.
Все привычные флаги iotop работают одинаково:
iotop-c -P # Показать только процессы, а не потоки iotop-c -a # Показать накопленные операции ввода-вывода iotop-c -d 2 # Обновлять каждые 2 секунды
Это всё, что мы для вас подготовили! Нам бы хотелось узнать ваше мнение об этом руководстве или перечисленных инструментах. Оставьте комментарий в форме обратной связи ниже.






