Использование Top, Netstat, Du и других инструментов для отслеживания ресурсов сервера
Linux, Ubuntu, VPS | Комментировать запись
Здоровье системы
Правильное администрирование и мониторинг всегда полезны для системы. Также это помогает вовремя обнаружить проблему и быстро устранить ее.
Для этого предназначено огромное множество утилит командной строки. Данное руководство рассказывает о самых полезных приложениях, которые следует иметь в своем инструментарии.
Как отследить потребление ресурсов процессами?
top
Команда top является одним из наиболее распространенных способов проверки использования ресурсов процессами.
Она выводит простую таблицу процессов в режиме реального времени, начиная с наибольших «потребителей»:
top
top - 14:45:52 up 29 min, 1 user, load average: 0.10, 0.09, 0.06
Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1019600k total, 393756k used, 625844k free, 11136k buffers
Swap: 0k total, 0k used, 0k free, 316748k cached
PID %MEM VIRT SWAP RES CODE DATA SHR nFLT nDRT S PR NI %CPU COMMAND
832 1.3 32364 18m 12m 896 11m 1688 1 0 S 20 0 0.0 bash
820 0.4 89456 83m 4008 488 948 3040 12 0 S 20 0 0.0 sshd
812 0.3 49948 46m 2828 488 616 2216 0 0 S 20 0 0.0 sshd
1 0.2 24192 21m 2108 152 868 1300 23 0 S 20 0 0.0 init
400 0.1 243m 242m 1420 344 216m 1084 0 0 S 20 0 0.0 rsyslogd
В верхней части результата выводятся некоторые статистические данные, в том числе среднюю нагрузку за последнюю минуту, 5 минут и 15 минут. Здесь указывается использование памяти и swap, а также состояние процессов.
Нижняя часть выводит каждый запущенный процесс, начиная с тех, которые используют больше всего ресурсов. Этот список обновляется в режиме реального времени.
htop
Команда «top» входит почти в каждый дистрибутив по умолчанию, а ее улучшенная версия, «htop», доступна для скачивания в большинстве репозиториев.
Для установки htop в Ubuntu введите следующую команду:
sudo apt-get install htop
Запустив htop, можно увидеть, что она выводит аналогичный, но более интерактивный результат:
htop
CPU[| 0.7%] Tasks: 21, 3 thr; 1 running
Mem[||||||||||||| 64/995MB] Load average: 0.00 0.02 0.05
Swp[ 0/0MB] Uptime: 00:37:37
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
2752 root 20 0 25660 1876 1364 R 0.0 0.2 0:00.06 htop
1 root 20 0 24192 2108 1300 S 0.0 0.2 0:00.55 /sbin/init
312 root 20 0 17224 640 444 S 0.0 0.1 0:00.04 upstart-udev-brid
314 root 20 0 21592 1360 760 S 0.0 0.1 0:00.04 /sbin/udevd --dae
394 messagebu 20 0 23808 688 436 S 0.0 0.1 0:00.01 dbus-daemon --sys
401 syslog 20 0 243M 1420 1084 S 0.0 0.1 0:00.07 rsyslogd -c5
402 syslog 20 0 243M 1420 1084 S 0.0 0.1 0:00.00 rsyslogd -c5
Верхнюю часть намного проще прочесть, а нижняя часть выведена более понятным образом.
Вот некоторые клавиши для более эффективного использования htop:
- М: сортирует процессы по объему используемой памяти;
- Р: сортирует процессы по использованию процессора;
- ?: помощь;
- k: прервать текущий/отмеченный процесс;
- F2: настройки htop. Здесь можно выбрать параметры вывода результатов;
- /: поиск процессов.
У htop есть множество других опций, узнать о которых можно в разделе помощи или настройках, но приведенные выше параметры особенно полезны при изучении функциональности данной команды.
Как определить программу, которая использует пропускную способность?
nethogs
Чтобы выяснить, какое из приложений является причиной перегрузки сетевого соединения, используется программа «nethogs».
В Ubuntu nethogs можно установить с помощью следующей команды:
sudo apt-get install nethogs
Чтобы запустить ее, просто введите:
nethogs
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:
- m: выводит результат в KB/с, KB, B и MB;
- r: сортирует по полученному трафику;
- s: сортирует по исходящему трафику:
- q: выйти.
Несмотря на простоту, nethogs – отличный способ, чтобы связать трафик с конкретным приложением.
IPTraf
IPTraf – еще одна полезная программа для отслеживания сетевого трафика. Она предоставляет ряд различных интерактивных интерфейсов мониторинга.
На Ubuntu IPTraf можно установить при помощи следующей команды:
sudo apt-get install iptraf
Чтобы запустить данную команду, просто вызовите ее через командную строку привилегиями root:
sudo iptraf
???????????????????????????????????
? IP traffic monitor ?
? General interface statistics ?
? Detailed interface statistics ?
? Statistical breakdowns... ?
? LAN station monitor ?
???????????????????????????????????
? Filters... ?
???????????????????????????????????
? Configure... ?
???????????????????????????????????
? Exit ?
???????????????????????????????????
В данном меню можно выбрать, какой интерфейс использовать.
К примеру, чтобы получить обзор всего сетевого трафика, можно выбрать первое меню, а затем «All interfaces». Это выведет экран, который выглядит следующим образом:
IPTraf
? TCP Connections (Source Host:Port) ?????????? Packets ??? Bytes Flags Iface ?
??192.241.xxx.xxx:22 > 369 82420 -PA- eth0 ?
??72.43.xxx.xxx:49488 > 381 19860 --A- eth0 ?
? ?
? ?
Здесь можно увидеть, с какими IP-адресами осуществляется связь на всех сетевых интерфейсах.
При необходимости получить домены этих IP-адресов можно активировать обратный поиск DNS, выйдя из экрана трафика, выбрав «Configure», а затем «Reverse DNS lookups».
Можно также активировать «TCP/UDP service names», чтобы отобразить имена сервисов вместо портов.
При активации обеих этих опций будет выведен подобный результат:
TCP Connections (Source Host:Port) ?????????? Packets ??? Bytes Flags Iface ?
??192.241.xxx.xxx:ssh > 151 34924 -PA- eth0 ?
??rrcs-72-43-xxx-xxx.nyc.biz.rr.co:49488 > 155 8108 --A- eth0 ?
? ?
? ?
? ?
? ?
? ?
? ?
? ?
? ?
? ?
? ?
? TCP: 1 entries ???????????????????????????????????????????????? Active ??
????????????????????????????????????????????????????????????????????????????????
? UDP (72 bytes) from 192.241.xxx.xxx:43463 to 8.8.8.8:domain on eth0 ?
? UDP (66 bytes) from 192.241.xxx.xxx:53140 to 8.8.8.8:domain on eth0 ?
? UDP (135 bytes) from 8.8.8.8:domain to 192.241.xxx.xxx:41429 on eth0 ?
? UDP (119 bytes) from 8.8.8.8:domain to 192.241.xxx.xxx:43463 on eth0 ?
? UDP (110 bytes) from google-public-dns-a.googl:domain to 192.241.xxx.xxx:531 ?
Другие интерфейсы можно изучить самостоятельно.
netstat
Команда «netstat» является мощным универсальным инструментом для сбора сетевой информации.
По умолчанию netstat выводит список открытых сокетов:
netstat
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
. . .
При внесении опции «-а», команда выведет список всех портов (как прослушивающиеся, так и не прослушивающиеся):
netstat -a
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» соответственно:
netstat -at
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» используется для просмотра статистики:
netstat -s
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
. . .
Чтобы результат постоянно обновлялся, используйте флаг «-с».
Существует множество опций для управления результатом команды netstat, информацию о которых можно получить в справочнике.
Как узнать, сколько осталось дискового пространства?
df
Для быстрой оценки оставшегося дискового пространства можно использовать программу «df».
Без каких-либо опций результат выглядит следующим образом:
df
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
Это выводит немного сложное для прочтения использование дискового пространства в байтах.
Можно также получить результат в удобном для восприятия формате:
df -h
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». Это добавит в конце файла строку с краткой информацией:
df -h --total
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%
du
Команда «df» удобна для краткого обзора, а «du» дает более полную картину того, что именно занимает пространство в системе.
Данная команда анализирует использование текущего каталога, а также всех подкаталогов. Результат по умолчанию выглядит примерно так:
du
4 ./.cache
8 ./.ssh
28 .
Опять же, при помощи флага «-h» можно получить более удобный для прочтения результат:
du -h
4.0K ./.cache
8.0K ./.ssh
28K .
Чтобы узнать размер файлов и каталогов, введите следующее:
du -a
0 ./.cache/motd.legal-displayed
4 ./.cache
4 ./.ssh/authorized_keys
8 ./.ssh
4 ./.profile
4 ./.bashrc
4 ./.bash_history
28 .
Добавьте опцию «-с», чтобы получить общий итог в конце:
du -c
4 ./.cache
8 ./.ssh
28 .
28 total
Если необходим только общий итог без подробностей, можно использовать:
du -s
28 .
Улучшения
У этих двух инструментов есть улучшенные версии, которые можно установить на Ubuntu.
Улучшением команды df является «pydf». Ее можно установить с помощью:
sudo apt-get install pydf
Эта команда выводит результат в виде аккуратного графика. Она показывает использование дискового пространства графически.
pydf -a
dev/vda 30G 1200M 27G 3.9 [........] /
udev 493M 4096B 493M 0.0 [........] /dev
devpts 0 0 0 - [........] /dev/pts
proc 0 0 0 - [........] /proc
tmpfs 199M 204k 199M 0.1 [........] /run
none 5120k 0 5120k 0.0 [........] /run/lock
none 498M 0 498M 0.0 [........] /run/shm
. . .
Улучшенной версией du является «ncdu». Ее можно установить, введя:
sudo apt-get install ncdu
Эта команда использует интерактивное отображение ncurses, чтобы графически показать использование пространства:
--- /root ----------------------------------------------------------------------
8.0KiB [##########] /.ssh
4.0KiB [##### ] /.cache
4.0KiB [##### ] .bashrc
4.0KiB [##### ] .profile
4.0KiB [##### ] .bash_history
Перемещаться по файловой системе можно с помощью стрелок вверх и вниз , а затем нажать «enter» на любой записи каталога.
Как узнать, сколько памяти используется?
free
Самый простой способ оценить текущее использование памяти системы – это команда «free».
При использовании без опций она выводит подобный результат:
free
total used free shared buffers cached
Mem: 507620 408172 99448 0 123672 248224
-/+ buffers/cache: 36276 471344
Swap: 0 0 0
Чтобы получить более удобный для прочтения формат, используйте флаг «-m», выводящий результат в мегабайтах:
free -m
total used free shared buffers cached
Mem: 495 398 97 0 120 242
-/+ buffers/cache: 35 460
Swap: 0 0 0
Средняя строка, отмеченная «-/+ buffers/cache», покажет фактическую память, используемую приложениями.
Строка «Mem» содержит данные о памяти, используемой для буферизации и кэширования, которая при необходимости освобождается.
vmstat
Команда «vmstat» предоставляет различную информацию о системе, в том числе о памти, swap, disk io, а также сведения о процессоре.
Для примера можно использовать данную команду, чтобы получить информацию об использовании памяти в другом виде:
vmstat
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»:
vmstat -S M
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
Как можно видеть, данный инструмент разделяет категорию «-/+ buffers/cache», выводимую командой free. Тут можно увидеть, сколько именно памяти используется для буферизации и сколько для кеша.
Для получения общей статистики об использовании памяти введите:
vmstat -s -S M
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
. . .
Чтобы получить информацию об кэше отдельных системных процессов, введите:
vmstat -m -S M
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
. . .
Это выведет подробности об информации, которая хранится в кэше.
Итоги
Использование данных инструментов – первый шаг к мониторингу сервера через командную строку. Существует еще целое множество утилит, которые выполняют простые операции мониторинга, но описанные в руководстве инструменты необходимы для хорошего старта.
Tags: df, du, free, IPTraf, ncdu, nethogs, netstat, pydf, top, vmstat