20 инструментов командной строки для мониторинга производительности Linux

Быть системным или сетевым администратором, которому поручено ежедневно отслеживать и устранять проблемы с производительностью Linux-систем, – чрезвычайно сложная задача.

Она требует непоколебимой преданности делу, глубокого понимания Linux-систем и постоянного стремления обеспечить оптимальную производительность и надежность.

После десяти лет работы администратором Linux в ИТ-индустрии я по достоинству оценил трудную задачу мониторинга и обеспечения непрерывной работы систем.

В свете этого мы подготовили полный список из 20 лучших часто используемых инструментов мониторинга командной строки. Эти бесценные инструменты могут оказаться незаменимыми для каждого системного администратора Linux/Unix, позволяя ему эффективно контролировать, диагностировать и поддерживать работоспособность и производительность своих систем.

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

1. Top – мониторинг процессов Linux

Команда top в Linux – это программа мониторинга производительности, которая часто используется многими системными администраторами для контроля производительности Linux и доступна для многих Linux/Unix-подобных операционных систем.

Команда top используется для отображения всех запущенных и активных процессов реального времени в виде упорядоченного списка и регулярно обновляет его. Она отображает CPU usage, Memory usage, Swap Memory, Cache Size, Buffer Size, Process PID, User, *Command*s, и многое другое.

Она также показывает высокую загрузку памяти и процессора запущенными процессами. Команда top очень полезна системным администраторам для мониторинга и принятия корректирующих мер в случае необходимости. Давайте посмотрим команду top в действии.

top

2. VmStat – Virtual Memory Statistics

Команда VmStat в Linux используется для отображения статистики виртуальной памяти, потоков ядра, дисков, системных процессов, блоков ввода-вывода, прерываний, активности процессоров и многого другого.

Установка VmStat в Linux

По умолчанию команда vmstat недоступна в системах Linux, поэтому необходимо установить пакет sysstat (мощный инструмент мониторинга), включающий программу vmstat.

sudo yum install sysstat [On Older CentOS/RHEL & Fedora]
sudo dnf install sysstat [On CentOS/RHEL/Fedora/Rocky Linux & AlmaLinux]
sudo apt-get install sysstat  [On Debian/Ubuntu & Mint]
sudo pacman -S sysstat [On Arch Linux]

Обычный формат использования команды vmstat следующий.

vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0  43008 275212   1152 561208    4   16   100   105   65  113  0  1 96  3  0

3. Lsof – список открытых файлов

Команда lsof используется во многих Linux/Unix-подобных системах для вывода списка всех открытых файлов и процессов. К открытым файлам относятся дисковые файлы, сетевые сокеты, трубы, устройства и процессы.

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

Самый распространенный формат команды lsof – это.

lsof
COMMAND     PID   TID TASKCMD             USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
systemd       1                           root  cwd       DIR                8,2      224        128 /
systemd       1                           root  rtd       DIR                8,2      224        128 /
systemd       1                           root  txt       REG                8,2  1567768  134930842 /usr/lib/systemd/systemd
systemd       1                           root  mem       REG                8,2  2714928  134261052 /usr/lib64/libm-2.28.so
systemd       1                           root  mem       REG                8,2   628592  134910905 /usr/lib64/libudev.so.1.6.11
systemd       1                           root  mem       REG                8,2   969832  134261204 /usr/lib64/libsepol.so.1
systemd       1                           root  mem       REG                8,2  1805368  134275205 /usr/lib64/libunistring.so.2.1.0
systemd       1                           root  mem       REG                8,2   355456  134275293 /usr/lib64/libpcap.so.1.9.0
systemd       1                           root  mem       REG                8,2   145984  134261219 /usr/lib64/libgpg-error.so.0.24.2
systemd       1                           root  mem       REG                8,2    71528  134270542 /usr/lib64/libjson-c.so.4.0.0
systemd       1                           root  mem       REG                8,2   371736  134910992 /usr/lib64/libdevmapper.so.1.02
systemd       1                           root  mem       REG                8,2    26704  134275177 /usr/lib64/libattr.so.1.1.2448
systemd       1                           root  mem       REG                8,2  3058736  134919279 /usr/lib64/libcrypto.so.1.1.1c
...

4. Tcpdump – анализатор сетевых пакетов

Команда tcpdump является одной из наиболее распространенных программ командной строки анализатора сетевых пакетов или пакет-сниффера, которая используется для перехвата или фильтрации TCP/IP пакетов, получаемых или передаваемых на определенном интерфейсе по сети.

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

tcpdump -i enp0s3
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), capture size 262144 bytes
10:19:34.635893 IP tecmint.ssh > 192.168.0.124.45611: Flags [P.], seq 2840044824:2840045032, ack 4007244093
10:19:34.636289 IP 192.168.0.124.45611 > tecmint.ssh: Flags [.], ack 208, win 11768, options 
10:19:34.873060 IP _gateway.57682 > tecmint.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; UNICAST
10:19:34.873104 IP tecmint > _gateway: ICMP tecmint udp port netbios-ns unreachable, length 86
10:19:34.895453 IP _gateway.48953 > tecmint.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; UNICAST
10:19:34.895501 IP tecmint > _gateway: ICMP tecmint udp port netbios-ns unreachable, length 86
10:19:34.992693 IP 142.250.4.189.https > 192.168.0.124.38874: UDP, length 45
10:19:35.010127 IP 192.168.0.124.38874 > 142.250.4.189.https: UDP, length 33
10:19:35.135578 IP _gateway.39383 > 192.168.0.124.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; UNICAST
10:19:35.135586 IP 192.168.0.124 > _gateway: ICMP 192.168.0.124 udp port netbios-ns unreachable, length 86
10:19:35.155827 IP _gateway.57429 > 192.168.0.124.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; UNICAST
10:19:35.155835 IP 192.168.0.124 > _gateway: ICMP 192.168.0.124 udp port netbios-ns unreachable, length 86
...

5. Netstat – сетевая статистика

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

netstat -a | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
tcp        0      0 tecmint:domain          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:postgres      0.0.0.0:*               LISTEN
tcp        0      0 tecmint:ssh             192.168.0.124:45611     ESTABLISHED
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:postgres      [::]:*                  LISTEN
udp        0      0 0.0.0.0:mdns            0.0.0.0:*
udp        0      0 localhost:323           0.0.0.0:*
udp        0      0 tecmint:domain          0.0.0.0:*
udp        0      0 0.0.0.0:bootps          0.0.0.0:*
udp        0      0 tecmint:bootpc          _gateway:bootps         ESTABLISHED
...

Хотя в настоящее время netstat устарел в пользу команды ss, вы все еще можете обнаружить netstat в своем наборе сетевых инструментов.

6. Htop – мониторинг процессов Linux

htop – это усовершенствованный интерактивный инструмент мониторинга процессов Linux в реальном времени, который во многом похож на команду Linux top, но имеет ряд богатых возможностей, таких как удобный интерфейс для управления процессами*, клавиши быстрого доступа*, вертикальный и горизонтальный вид процессов и многое другое.

htop

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

7. Iotop – мониторинг дискового ввода/вывода в Linux

iotop также очень похож на команду top и программу htop, но имеет учетную функцию для мониторинга и отображения в реальном времени дискового ввода/вывода и процессов.

Инструмент Iotop очень полезен для поиска точного процесса и высокоиспользуемого диска для чтения/записи процессов.

Установка Iotop в Linux

По умолчанию команда iotop недоступна в Linux, и вам необходимо установить ее, как показано на рисунке.

sudo yum install iotop [On Older CentOS/RHEL & Fedora]
sudo dnf install iotop [On CentOS/RHEL/Fedora/Rocky Linux & AlmaLinux]
sudo apt-get install iotop  [On Debian/Ubuntu & Mint]
sudo pacman -S iotop [On Arch Linux]

Обычно используется следующий формат команды iotop.

iotop

8. Iostat – статистика ввода/вывода

iostat – это простая программа для сбора и отображения статистики работы устройств хранения данных. Этот инструмент часто используется для отслеживания проблем производительности дисковой подсистемы, включая устройства, локальные диски и удаленные диски, такие как NFS.

Установка Iostat в Linux

Чтобы получить команду iostat, необходимо установить пакет sysstat, как показано на рисунке.

sudo yum install sysstat [On Older CentOS/RHEL & Fedora]
sudo dnf install sysstat [On CentOS/RHEL/Fedora/Rocky Linux & AlmaLinux]
sudo apt-get install sysstat  [On Debian/Ubuntu & Mint]
sudo pacman -S sysstat [On Arch Linux]

Обычно используется формат команды iostat.

iostat
Linux 4.18.0-193.el8.x86_64 (tecmint)   04/05/2021      _x86_64_        (1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.21    0.03    0.59    2.50    0.00   96.67
Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               3.95        83.35        89.63    1782431    1916653

9. IPTraf – мониторинг IP LAN в реальном времени

IPTraf – консольная утилита мониторинга сети в реальном времени для Linux с открытым исходным кодом. Она собирает разнообразную информацию, такую как мониторинг IP-трафика, проходящего по сети, включая информацию о флагах TCP, детали ICMP, разбивку TCP/UDP-трафика, пакеты TCP-соединений и подсчет байтов.

Она также собирает информацию об общей и детальной статистике интерфейсов TCP, UDP, IP, ICMP, non-IP, ошибках контрольной суммы IP, активности интерфейса и т.д.

10. Psacct или Acct – мониторинг активности пользователей

psacct или acct – очень полезные инструменты для мониторинга активности каждого пользователя в системе. Оба демона работают в фоновом режиме и внимательно следят за общей активностью каждого пользователя в системе, а также за тем, какие ресурсы он потребляет.

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

11. Monit – мониторинг процессов и сервисов Linux

Monit – это бесплатная утилита наблюдения за процессами с открытым исходным кодом и веб-интерфейсом, которая автоматически отслеживает и управляет системными процессами, программами, файлами, каталогами, разрешениями, контрольными суммами и файловыми системами.

Она осуществляет мониторинг таких сервисов, как Apache, MySQL, Mail, FTP, ProFTP, Nginx, SSH и т.д. Состояние системы можно просматривать из командной строки или с помощью собственного веб-интерфейса.

12. NetHogs – мониторинг пропускной способности сети каждого процесса

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

nethogs

13. iftop – Мониторинг пропускной способности сети

iftop – еще одна терминальная бесплатная утилита мониторинга системы с открытым исходным кодом, которая отображает часто обновляемый список использования пропускной способности сети (хосты-источники и хосты-получатели), проходящей через сетевой интерфейс вашей системы.

iftop является аналогом «top» в контексте использования сети, подобно тому, как «top» дает представление о загрузке процессора.

iftop принадлежит ксемейству «top» инструментов сетевого мониторинга. Специально разработанный для наблюдения за выбранным пользователем сетевым интерфейсом, он выдает в реальном времени данные о текущем использовании полосы пропускания между двумя указанными хостами.

iftop

14. Monitorix – Мониторинг системы и сети

Monitorix – бесплатная легкая утилита, предназначенная для запуска и мониторинга системных и сетевых ресурсов.

В ней имеется встроенный HTTP веб-сервер, который регулярно собирает системную и сетевую информацию и отображает ее в виде графиков. Он отслеживает среднюю загрузку и использование системы, распределение памяти, состояние драйверов дисков, системные службы, сетевые порты, почтовую статистику (Sendmail, Postfix, Dovecot и т.д.), статистику MySQL и многое другое.

Он предназначен для мониторинга общей производительности системы и помогает обнаружить сбои, узкие места, аномальные действия и т.д.

15. Arpwatch – монитор активности Ethernet

Arpwatch – программа, предназначенная для мониторинга разрешения адресов (изменения MAC и IP адресов) сетевого трафика Ethernet в сети Linux.

Программа постоянно следит за трафиком Ethernet и выдает журнал изменений пар IP и MAC адресов вместе с временной меткой в сети. Также имеется функция отправки администраторам уведомлений по электронной почте при добавлении или изменении пары. Это очень полезно для обнаружения *ARP*-спуфинга в сети.

16. Suricata – мониторинг сетевой безопасности

Suricata – это высокопроизводительная система мониторинга сетевой безопасности и обнаружения и предотвращения вторжений для Linux, FreeBSD и Windows.

Она была разработана и принадлежит некоммерческому фонду OISF (Open Information Security Foundation).

17. VnStat PHPмониторинг пропускной способности сети

VnStat PHP – это веб-приложение для наиболее популярного сетевого инструмента под названием «vnstat». VnStat PHP отслеживает использование сетевого трафика в красивом графическом режиме.

Отображает общее использование IN и OUT сетевого трафика в часовых, ежедневных, месячных и полных сводных отчетах.

18. Nagios – мониторинг сети/серверов

Nagios – это ведущая мощная система мониторинга с открытым исходным кодом, позволяющая сетевым/системным администраторам выявлять и устранять проблемы, связанные с сервером, до того, как они повлияют на основные бизнес-процессы.

С помощью системы Nagios администраторы могут отслеживать удаленные Linux, Windows, коммутаторы, маршрутизаторы и принтеры в одном окне. Она показывает критические предупреждения и указывает, если в сети/сервере что-то пошло не так, что косвенно помогает начать процесс устранения неполадок до их возникновения.

19. Nmon: Мониторинг производительности Linux

Nmon (расшифровывается как Nigel’s Performance Monitor) – инструмент, который используется для мониторинга всех ресурсов Linux, таких как процессор, память, использование диска, сеть, основные процессы, NFS, ядро и многое другое. Этот инструмент работает в двух режимах: Online Mode и Capture Mode.

Режим Online используется для мониторинга в реальном времени, а режим Capture – для сохранения результатов в формате CSV для последующей обработки.

20. Collectl

Collectl – это еще одна мощная и многофункциональная утилита командной строки, которая может использоваться для сбора информации о системных ресурсах Linux, таких как использование процессора, памяти, сети, инодов, процессов, nfs, TCP, сокетов и многого другого.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.tecmint.com

Похожие статьи

Комментарии (0)