Как использовать инструменты Top, Netstat, Du и другие для мониторинга ресурсов сервера

Введение

Каждая компьютерная система выигрывает от правильного администрирования и мониторинга. Отслеживание работы вашей системы поможет вам обнаружить проблемы и быстро их решить.

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

Предварительные требования

Для следования этому руководству вам понадобится доступ к компьютеру, работающему под управлением операционной системы на основе Linux. Это может быть виртуальный частный сервер, к которому вы подключились через SSH, или ваш локальный компьютер. Обратите внимание, что этот учебник был проверен на сервере Linux с Ubuntu 20.04, но приведенные примеры должны работать на компьютере с любой версией любого дистрибутива Linux.

Если вы планируете использовать удаленный сервер для следования этому руководству, мы рекомендуем вам сначала завершить наше Руководство по начальной настройке сервера. Это настроит для вас безопасную серверную среду — включая пользователя без прав администратора с привилегиями sudo и настроенный брандмауэр с использованием UFW — которую вы сможете использовать для развития ваших навыков работы с Linux.

Шаг 1 – Как просматривать запущенные процессы в Linux

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

  1. top
Output
top - 15:14:40 up 46 min, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1019600k total, 316576k used, 703024k free, 7652k buffers Swap: 0k total, 0k used, 0k free, 258976k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0 8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset 9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs

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

Вы можете увидеть, что есть 1 запущенный процесс и 55 процессов, которые считаются спящими, потому что они не активно используют процессорные циклы.

Оставшаяся часть отображаемого вывода показывает запущенные процессы и их статистику использования. По умолчанию top автоматически сортирует их по использованию CPU, так что вы можете сначала увидеть самые загруженные процессы. top будет продолжать работать в вашем оболочке, пока вы не остановите его, используя стандартную комбинацию клавиш Ctrl+C для выхода из запущенного процесса. Это отправляет сигнал kill, инструктируя процесс остановиться грациозно, если он способен.

Улучшенная версия top, называемая htop, доступна в большинстве репозиториев пакетов. На Ubuntu 20.04 вы можете установить ее с помощью apt:

  1. sudo apt install htop

После этого команда htop будет доступна:

  1. htop
Output
Mem[||||||||||| 49/995MB] Load average: 0.00 0.03 0.05 CPU[ 0.0%] Tasks: 21, 3 thr; 1 running Swp[ 0/0MB] Uptime: 00:58:11 PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1259 root 20 0 25660 1880 1368 R 0.0 0.2 0:00.06 htop 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 /sbin/init 311 root 20 0 17224 636 440 S 0.0 0.1 0:00.07 upstart-udev-brid 314 root 20 0 21592 1280 760 S 0.0 0.1 0:00.06 /sbin/udevd --dae 389 messagebu 20 0 23808 688 444 S 0.0 0.1 0:00.01 dbus-daemon --sys 407 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.02 rsyslogd -c5 408 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5 409 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5 406 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.04 rsyslogd -c5 553 root 20 0 15180 400 204 S 0.0 0.0 0:00.01 upstart-socket-br

htop обеспечивает лучшую визуализацию множественных потоков ЦП, более полную поддержку цвета в современных терминалах и больше опций сортировки, среди прочих функций. В отличие от top, он не всегда устанавливается по умолчанию, но может рассматриваться как замена без проблем. Выход из htop осуществляется нажатием Ctrl+C, как и в случае с top.

Вот несколько сочетаний клавиш, которые помогут вам более эффективно использовать htop:

  • M: Sort processes by memory usage
  • P: Sort processes by processor usage
  • ?: Получить помощь
  • k: Kill current/tagged process
  • F2: Настроить htop. Здесь вы можете выбрать параметры отображения.
  • /:: Поиск процессов

Есть и множество других опций, к которым вы можете получить доступ через помощь или настройки. Это должны быть ваши первые шаги в изучении функциональности htop. В следующем шаге вы узнаете, как отслеживать пропускную способность вашей сети.

Шаг 2 – Как отслеживать пропускную способность вашей сети

Если ваше сетевое подключение кажется перегруженным, и вы не уверены, какое приложение в этом виновато, программа под названием nethogs отлично подходит для определения этого.

На Ubuntu вы можете установить nethogs с помощью следующей команды:

  1. sudo apt install nethogs

После этого команда nethogs будет доступна:

  1. nethogs
Output
NetHogs version 0.8.0 PID USER PROGRAM DEV SENT RECEIVED 3379 root /usr/sbin/sshd eth0 0.485 0.182 KB/sec 820 root sshd: root@pts/0 eth0 0.427 0.052 KB/sec ? root unknown TCP 0.000 0.000 KB/sec TOTAL 0.912 0.233 KB/sec

nethogs ассоциирует каждое приложение с его сетевым трафиком.

Есть только несколько команд, которые вы можете использовать для управления nethogs:

  • M: Change displays between “kb/s”, “kb”, “b”, and “mb”.
  • R: Sort by traffic received.
  • S: Sort by traffic sent.
  • Q: quit

iptraf-ng – это еще один способ мониторинга сетевого трафика. Он предоставляет несколько различных интерактивных интерфейсов мониторинга.

Примечание: Для работы IPTraf требуется экран размером не менее 80 столбцов на 24 строки.

На Ubuntu вы можете установить iptraf-ng с помощью следующей команды:

  1. sudo apt install iptraf-ng

iptraf-ng должен быть запущен с правами root, поэтому вы должны предварить его командой sudo:

  1. sudo iptraf-ng

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

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

Например, чтобы получить обзор всего сетевого трафика, вы можете выбрать первое меню, а затем «Все интерфейсы». Это даст вам экран, который выглядит так:

Здесь вы можете видеть, с какими IP-адресами вы общаетесь по всем вашим сетевым интерфейсам.

Если вы хотите, чтобы эти IP-адреса были преобразованы в домены, вы можете включить обратный DNS-поиск, выйдя из экрана трафика, выбрав Настройка, а затем включив Обратный DNS-поиск.

Вы также можете включить Имена служб TCP/UDP, чтобы видеть имена служб, которые запущены, а не номера портов.

При включении обеих этих опций отображение может выглядеть так:

Команда netstat – еще один универсальный инструмент для сбора сетевой информации.

netstat по умолчанию установлен на большинстве современных систем, но вы можете установить его самостоятельно, скачав его из репозиториев пакетов вашего сервера по умолчанию. На большинстве систем Linux, включая Ubuntu, пакет, содержащий netstat, называется net-tools:

  1. sudo apt install net-tools

По умолчанию команда netstat сама по себе выводит список открытых сокетов:

  1. netstat
Output
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.241.187.204:ssh ip223.hichina.com:50324 ESTABLISHED tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 5 [ ] DGRAM 6559 /dev/log unix 3 [ ] STREAM CONNECTED 9386 unix 3 [ ] STREAM CONNECTED 9385 . . .

Если вы добавите опцию -a, она выведет список всех портов, прослушиваемых и непрослушиваемых:

  1. netstat -a
Output
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED tcp6 0 0 [::]:ssh [::]:* LISTEN Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 6195 @/com/ubuntu/upstart unix 2 [ ACC ] STREAM LISTENING 7762 /var/run/acpid.socket unix 2 [ ACC ] STREAM LISTENING 6503 /var/run/dbus/system_bus_socket . . .

Если вы хотите отфильтровать вид только TCP или UDP соединений, используйте флаги -t или -u соответственно:

  1. netstat -at
Output
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED tcp6 0 0 [::]:ssh [::]:* LISTEN

Смотрите статистику, передавая флаг “-s”:

  1. netstat -s
Output
Ip: 13500 total packets received 0 forwarded 0 incoming packets discarded 13500 incoming packets delivered 3078 requests sent out 16 dropped because of missing route Icmp: 41 ICMP messages received 0 input ICMP message failed. ICMP input histogram: echo requests: 1 echo replies: 40 . . .

Если вы хотите непрерывно обновлять вывод, вы можете использовать флаг -c. Существует много других доступных опций для netstat, которые вы можете изучить, просмотрев его страницу руководства.

На следующем шаге вы узнаете несколько полезных способов мониторинга использования диска.

Шаг 3 – Как мониторить использование диска

Для быстрого обзора оставшегося места на подключенных дисках вы можете использовать программу df.

Без каких-либо опций его вывод выглядит так:

  1. df
Output
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda 31383196 1228936 28581396 5% / udev 505152 4 505148 1% /dev tmpfs 203920 204 203716 1% /run none 5120 0 5120 0% /run/lock none 509800 0 509800 0% /run/shm

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

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

  1. df -h
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda 30G 1.2G 28G 5% / udev 494M 4.0K 494M 1% /dev tmpfs 200M 204K 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 498M 0 498M 0% /run/shm

Если вы хотите увидеть общее количество доступного дискового пространства на всех файловых системах, вы можете передать параметр --total. Это добавит строку внизу с обобщенной информацией:

  1. df -h --total
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda 30G 1.2G 28G 5% / udev 494M 4.0K 494M 1% /dev tmpfs 200M 204K 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 498M 0 498M 0% /run/shm total 32G 1.2G 29G 4%

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

du проанализирует использование для текущего каталога и всех подкаталогов. По умолчанию вывод du при запуске в почти пустом домашнем каталоге выглядит следующим образом:

  1. du
Output
4 ./.cache 8 ./.ssh 28 .

Еще раз, вы можете указать человекочитаемый вывод, передавая -h:

  1. du -h
Output
4.0K ./.cache 8.0K ./.ssh 28K .

Чтобы увидеть размеры файлов, а также каталоги, введите следующее:

  1. du -a
Output
0 ./.cache/motd.legal-displayed 4 ./.cache 4 ./.ssh/authorized_keys 8 ./.ssh 4 ./.profile 4 ./.bashrc 4 ./.bash_history 28 .

Для общего значения внизу вы можете добавить параметр -c:

  1. du -c
Output
4 ./.cache 8 ./.ssh 28 . 28 total

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

  1. du -s
Output
28 .

Также существует интерфейс ncurses для du, соответственно названный ncdu, который вы можете установить:

  1. sudo apt install ncdu

Это графически отобразит использование вашего диска:

  1. ncdu
Output
--- /root ---------------------------------------------------------------------- 8.0KiB [##########] /.ssh 4.0KiB [##### ] /.cache 4.0KiB [##### ] .bashrc 4.0KiB [##### ] .profile 4.0KiB [##### ] .bash_history

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

В последнем разделе вы узнаете, как отслеживать использование памяти.

Шаг 4 – Как отслеживать использование памяти

Вы можете проверить текущее использование памяти на вашей системе, используя команду free.

Когда используется без параметров, вывод выглядит так:

  1. free
Output
total used free shared buff/cache available Mem: 1004896 390988 123484 3124 490424 313744 Swap: 0 0 0

Чтобы отобразить в более удобном формате, вы можете передать параметр -m, чтобы отобразить вывод в мегабайтах:

  1. free -m
Output
total used free shared buff/cache available Mem: 981 382 120 3 478 306 Swap: 0 0 0

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

Наконец, команда vmstat может выводить различную информацию о вашей системе, включая память, подкачку, ввод-вывод диска и информацию о центральном процессоре.

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

  1. vmstat
Output
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 99340 123712 248296 0 0 0 1 9 3 0 0 100 0

Вы можете увидеть это в мегабайтах, указав единицы с помощью флага -S:

  1. vmstat -S M
Output
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 96 120 242 0 0 0 1 9 3 0 0 100 0

Чтобы получить общую статистику использования памяти, введите:

  1. vmstat -s -S M
Output
495 M total memory 398 M used memory 252 M active memory 119 M inactive memory 96 M free memory 120 M buffer memory 242 M swap cache 0 M total swap 0 M used swap 0 M free swap . . .

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

  1. vmstat -m -S M
Output
Cache Num Total Size Pages ext4_groupinfo_4k 195 195 104 39 UDPLITEv6 0 0 768 10 UDPv6 10 10 768 10 tw_sock_TCPv6 0 0 256 16 TCPv6 11 11 1408 11 kcopyd_job 0 0 2344 13 dm_uevent 0 0 2464 13 bsg_cmd 0 0 288 14 . . .

Это даст вам подробности о том, какая информация хранится в кэше.

Заключение

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

Затем вам может понадобиться изучить управление процессами в Linux с помощью ps, kill и nice.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-top-netstat-du-other-tools-to-monitor-server-resources