Как проверить время работы вашего Linux-сервера

Перестаньте задаваться вопросом, как долго работает ваша система. Просто проверьте время безотказной работы с помощью команды uptime.
Команда uptime в Linux используется для определения того, как долго система Linux работает.
Это одна из самых простых команд Linux. Просто запустите его без каких-либо параметров:
uptime
Это покажет вам одну строку вывода, которая показывает текущее время, время безотказной работы (в днях и часах), количество пользователей, которые в настоящее время вошли в систему, и среднюю нагрузку.
Вот пример вывода команды uptime:
andreyex@Homes:~$ uptime 16:13:00 up 2 days, 8:18, 1 user, load average: 1.19, 1.54, 1.51
Вероятно, вы можете определить время безотказной работы, но позвольте мне объяснить все элементы этого вывода.
- 16:13:00 : Текущее время в системе.
- up 2 days, 8:18 : Это означает, что система Linux работала последние 2 дня, 8 часов и 18 минут.
- 1 user: это количество пользователей, которые в настоящее время вошли в систему Linux.
- load average: 1.19, 1.54, 1.51: это средняя загрузка ЦП за последние 1, 5 и 15 минут. 1,54 означает, что 154% потребления ЦП (если это 4-ядерный ЦП, это означает, что использовалось 1,54 из 4 ядер).
Команда uptime получает информацию, связанную с загрузкой, файлов из /proc, как и большинство других команд. Он использует файл /var/run/utmp для получения информации о вошедших в систему пользователях.
Дело не в том, что у времени безотказной работы вообще нет вариантов. Их немного, но в некоторых случаях они могут быть полезны.
Использование команды uptime с параметрами
Если вы считаете, что вывод команды uptime слишком загроможден, вы можете использовать опцию pretty print -p:
uptime -p
Она покажет только информацию о времени безотказной работы, это тоже на словах, что более понятно.
andreyex@Homes:~$ uptime -p up 2 days, 8 hours, 47 minutes
Если вы хотите узнать, с каких пор запущен сервер Linux, вы можете использовать опцию -s:
uptime -s
Это даст точную отметку времени, когда ваша система загружалась в последний раз:
andreyex@Homes:~$ uptime -s 2022-02-22 13:42:43
Существует также опция -V, которая показывает версию команды и -hдля отображения страницы справки.
Вывод по умолчанию команды uptime показывает ту же информацию, которую вы получаете в первой строке команды w.
Бонусный совет: ведите учет времени безотказной работы
Команда uptime показывает только то, как долго работает ваша система.
Существует удобная утилита под названием uprecords, которая обеспечивает запись вашего времени безотказной работы.
Без шуток! Она показывает лучшее (самое продолжительное) время безотказной работы вашей системы Linux в табличном формате с дополнительной информацией о времени загрузки, продолжительности и версии ядра Linux .

Команда uprecords не установлена по умолчанию. Она доступна в пакете uptimed и вы должны установить его в своей системе.
В Debian/Ubuntu вы можете использовать:
sudo apt install uptimed
По сути, это демон, который отслеживает максимальное время безотказной работы системы с помощью идентификаторов загрузки, используя время загрузки системы для отделения сеансов друг от друга.
После установки uptimed вы можете использовать команду uprecords, чтобы отобразить записи о времени безотказной работы:
uprecords
Имейте в виду, что вы не сможете сразу получить исторические записи о времени безотказной работы. Он начинает запись с момента установки демона времени безотказной работы.
Итак, когда вы в последний раз перезагружали свой сервер Linux .
30 инструментов мониторинга системы Linux, которые должен знать каждый сисадмин

Visitors have accessed this post 16385 times.
Ищете способы, как контролировать производительность сервера Linux? В большинстве дистрибутивов Linux уже встроены разные инструменты мониторинга. Используя их, можно посмотреть метрики с информацией о системных процессах. Эти инструменты можно использовать для поиска возможных причин возникновения проблем с производительностью. Команды, которые мы будем обсуждать в этой статье, относятся к самым фундаментальным. Они нужны для системного анализа и отладки проблем сервера Linux, таких как:
- Выявление узких мест в системе
- Проблемы производительности диска (хранилища)
- Проблемы производительности памяти и процессора
- Узкие места в сети
1. top — мониторинг активности процессов

Команда top отображает процессы Linux. Она позволяет представить работающую систему в реальном времени, то есть в момент фактической активности процесса. По умолчанию она отображает наиболее ресурсоемкие задачи, выполняемые на сервере, и обновляет их список каждые пять секунд.
Часто используемые горячие клавиши с лучшими инструментами мониторинга Linux
Ниже приведен список полезных горячих клавиш:
| Горячая клавиша | Применение |
| t | Отображает, включена или выключена опция представления сводных данных |
| m | Отображает, включена или выключена опция представления информации о памяти |
| A | Сортирует задачи по активности потребления различных системных ресурсов. Полезно для быстрой идентификации задач, требующих высокой производительности в системе. |
| f | Вход в интерактивный экран конфигурации для команды top. Полезно для настройки top под конкретную задачу. |
| o | Позволяет выбрать способ упорядочивания информации для команды top. |
| r | Выполняет команду renice. |
| k | Выполняет команду kill. |
| z | Включает или выключает цвет/моно |
2. vmstat — статистика виртуальной памяти
Команда vmstat сообщает информацию о процессах, памяти, подгрузке страниц, блочном вводе-выводе, прерываниях и активности процессора.
# vmstat 3
Примеры выводов:
procs ————memory———- —swap— ——io—- —system— ——cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 2540988 522188 5130400 0 0 2 32 4 2 4 1 96 0 0
1 0 0 2540988 522188 5130400 0 0 0 720 1199 665 1 0 99 0 0
0 0 0 2540956 522188 5130400 0 0 0 0 1151 1569 4 1 95 0 0
0 0 0 2540956 522188 5130500 0 0 0 6 1117 439 1 0 99 0 0
0 0 0 2540940 522188 5130512 0 0 0 536 1189 932 1 0 98 0 0
0 0 0 2538444 522188 5130588 0 0 0 0 1187 1417 4 1 96 0 0
0 0 0 2490060 522188 5130640 0 0 0 18 1253 1123 5 1 94 0 0
Использование памяти дисплея Slabinfo
Получить информацию об активных/неактивных страницах памяти
3. w — узнайте, кто вошел в систему и какие действия производит
Команда who (w) отображает информацию о пользователях, находящихся в данный момент в системе, и их процессах.
# w username
# w vivek
Примеры выводов:
17:58:47 up 5 days, 20:28, 2 users, load average: 0.36, 0.26, 0.24
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim /etc/resolv.conf
root pts/1 10.1.3.145 17:43 0.00s 0.03s 0.00s w
4. uptime — узнайте, сколько уже работает система Linux
Команда uptime используется, чтобы узнать, как долго, с момента последней перезагрузки, работает после сервер. Текущее время, сколько времени система работает, сколько пользователей в системе на данный момент и средняя загрузка системы за последние 1, 5 и 15 минут.
# uptime
Вывод:
18:02:41 up 41 days, 23:42, 1 user, load average: 0.00, 0.00, 0.00
1 пользователь в системе считается оптимальным значением нагрузки. Нагрузка может меняться от системы к системе. Для систем с одним ЦП приемлемо значение нагрузки 1–3, для систем SMP — 6–10.
5. ps — отображает процессы Linux
Команда ps сообщает о текущих процессах. Чтобы выбрать все процессы, используйте опцию -A или -e:
# ps -A
Примеры выводов:
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:02 migration/0
3 ? 00:00:01 ksoftirqd/0
4 ? 00:00:00 watchdog/0
5 ? 00:00:00 migration/1
6 ? 00:00:15 ksoftirqd/1
.
.
4881 ? 00:53:28 java
4885 tty1 00:00:00 mingetty
4886 tty2 00:00:00 mingetty
4887 tty3 00:00:00 mingetty
4888 tty4 00:00:00 mingetty
4891 tty5 00:00:00 mingetty
4892 tty6 00:00:00 mingetty
4893 ttyS1 00:00:00 agetty
12853 ? 00:00:00 cifsoplockd
12854 ? 00:00:00 cifsdnotifyd
14231 ? 00:10:34 lighttpd
14232 ? 00:00:00 php-cgi
54981 pts/0 00:00:00 vim
55465 ? 00:00:00 php-cgi
55546 ? 00:00:00 bind9-snmp-stat
55704 pts/1 00:00:00 ps
Команда ps чем-то напоминает top, но предоставляет больше информации.
Полноформатный вывод
# ps -Al
Чтобы вывести дополнительную информацию о процессе (он показывает аргументы командной строки, которые передаются процессу):
# ps -AlF
Вывод потоков ( LWP и NLWP)
Просмотр потоков после процессов
Вывод всех процессов на сервере
Вывод дерева процессов
# ps -ejH
# ps axjf
# pstree
Получить информацию о безопасности процесса Linux
# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM
Давайте выведем каждый процесс, запущенный от имени пользователя Vivek
# ps -U vivek -u vivek u
Конфигурация вывода команды ps в пользовательском формате
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan
Попробуем отобразить только идентификаторы процессов Lighttpd
# ps -C lighttpd -o pid=
ИЛИ
# pgrep lighttpd
ИЛИ
# pgrep -u vivek php-cgi
Вывод имени PID 55977
# ps -p 55977 -o comm=
Топ 10 процессов, потребляющих память
# ps -auxf | sort -nr -k 4 | head -10
Отобразить Топ 10 процессоров с максимальным потреблением ресурсов системы
# ps -auxf | sort -nr -k 3 | head -10
6. free — отображает использование памяти Linux-сервером
Команда free показывает общий объем свободной и используемой физической памяти в системе, а также буферы, используемые ядром.
# free
Пример вывода:
total used free shared buffers cached
Mem: 12302896 9739664 2563232 0 523124 5154740
-/+ buffers/cache: 4061800 8241096
Swap: 1052248 0 1052248
7. iostat — отслеживает среднюю загрузку процессора и активность диска на Linux
Команда iostat предоставляет отчет по статистике центрального процессора (ЦП) и статистике ввода/вывода для устройств, директорий и сетевых файловых систем (NFS).
# iostat
Примеры выводов:
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009
avg-cpu: %user %nice %system %iowait %steal %idle
3.50 0.09 0.51 0.03 0.00 95.86
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 22.04 31.88 512.03 16193351 260102868
sda1 0.00 0.00 0.00 2166 180
sda2 22.04 31.87 512.03 16189010 260102688
sda3 0.00 0.00 0.00 1615 0
8. sar — мониторинг, сбор и отчетность о деятельности системы Linux
Команду sar используют для сбора, представления и сохранения информации о деятельности системы. Чтобы увидеть сетевой контроллер, введите:
# sar -n DEV | more
Сетевые контроллеры, начиная с 24:
# sar -n DEV -f /var/log/sa/sa24 | more
Вы также можете настроить отображение в реальном времени, используя команду sar:
# sar 4 5
Примеры выводов:
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009
06:45:12 PM CPU %user %nice %system %iowait %steal %idle
06:45:16 PM all 2.00 0.00 0.22 0.00 0.00 97.78
06:45:20 PM all 2.07 0.00 0.38 0.03 0.00 97.52
06:45:24 PM all 0.94 0.00 0.28 0.00 0.00 98.78
06:45:28 PM all 1.56 0.00 0.22 0.00 0.00 98.22
06:45:32 PM all 3.53 0.00 0.25 0.03 0.00 96.19
Average: all 2.02 0.00 0.27 0.01 0.00 97.70
9. mpstat — отслеживает использование мультипроцессора в Linux
Команда mpstat отображает действия для каждого доступного процессора. Процессор 0 является первым. mpstat -P ALL отображает среднюю загрузку ЦП/процессора:
# mpstat -P ALL
Пример вывода:
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009
06:48:11 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
06:48:11 PM all 3.50 0.09 0.34 0.03 0.01 0.17 0.00 95.86 1218.04
06:48:11 PM 0 3.44 0.08 0.31 0.02 0.00 0.12 0.00 96.04 1000.31
06:48:11 PM 1 3.10 0.08 0.32 0.09 0.02 0.11 0.00 96.28 34.93
06:48:11 PM 2 4.16 0.11 0.36 0.02 0.00 0.11 0.00 95.25 0.00
06:48:11 PM 3 3.77 0.11 0.38 0.03 0.01 0.24 0.00 95.46 44.80
06:48:11 PM 4 2.96 0.07 0.29 0.04 0.02 0.10 0.00 96.52 25.91
06:48:11 PM 5 3.26 0.08 0.28 0.03 0.01 0.10 0.00 96.23 14.98
06:48:11 PM 6 4.00 0.10 0.34 0.01 0.00 0.13 0.00 95.42 3.75
06:48:11 PM 7 3.30 0.11 0.39 0.03 0.01 0.46 0.00 95.69 76.89
10. pmap — отслеживает использование памяти процессом в Linux
Команда pmap показывает использование памяти процессом. Используйте эту команду, чтобы выяснить проблемы с потреблением памяти.
# pmap -d PID
Чтобы отобразить информацию о памяти процесса для pid # 47394, введите:
# pmap -d 47394
Примеры выводов:
47394: /usr/bin/php-cgi
Address Kbytes Mode Offset Device Mapping
0000000000400000 2584 r-x— 0000000000000000 008:00002 php-cgi
0000000000886000 140 rw— 0000000000286000 008:00002 php-cgi
00000000008a9000 52 rw— 00000000008a9000 000:00000 [ anon ]
0000000000aa8000 76 rw— 00000000002a8000 008:00002 php-cgi
000000000f678000 1980 rw— 000000000f678000 000:00000 [ anon ]
000000314a600000 112 r-x— 0000000000000000 008:00002 ld-2.5.so
000000314a81b000 4 r—- 000000000001b000 008:00002 ld-2.5.so
000000314a81c000 4 rw— 000000000001c000 008:00002 ld-2.5.so
000000314aa00000 1328 r-x— 0000000000000000 008:00002 libc-2.5.so
000000314ab4c000 2048 —— 000000000014c000 008:00002 libc-2.5.so
.
..
00002af8d48fd000 4 rw— 0000000000006000 008:00002 xsl.so
00002af8d490c000 40 r-x— 0000000000000000 008:00002 libnss_files-2.5.so
00002af8d4916000 2044 —— 000000000000a000 008:00002 libnss_files-2.5.so
00002af8d4b15000 4 r—- 0000000000009000 008:00002 libnss_files-2.5.so
00002af8d4b16000 4 rw— 000000000000a000 008:00002 libnss_files-2.5.so
00002af8d4b17000 768000 rw-s- 0000000000000000 000:00009 zero (deleted)
00007fffc95fe000 84 rw— 00007ffffffea000 000:00000 [ stack ]
ffffffffff600000 8192 —— 0000000000000000 000:00000 [ anon ]
mapped: 933712K writeable/private: 4304K shared: 768000K
Последняя строка очень важна:
- mapped: 933712K общий объем памяти, сопоставленный с файлами;
- writeable/private: 4304K объем недоступного адресного пространства;
- shared: 768000K объем адресного пространства, который этот процесс делит с другими.
11. Команда netstat — инструмент для мониторинга сети и статистики Linux
Команда netstat отображает состояние TCP-соединений (как входящих, так и исходящих), таблицы маршрутизации, число сетевых интерфейсов и сетевую статистику по протоколам.
# netstat -tulpn
# netstat -nat
12. ss — статистика сети
Команда ss используется для вывода статистики сокетов. Позволяет отображать информацию, аналогичную netstat. Обратите внимание, что команда netstat считается устаревшей. Лучше использовать команду ss. Чтобы посмотреть все сокеты TCP и UDP в Linux:
# ss -t -a
ИЛИ
# ss -u -a
13. iptraf — получение сетевой статистики в реальном времени в Linux
Команда iptraf — это интерактивный цветной IP-дисплей. Генерирует различную сетевую статистику, включая информацию TCP, UDP-счетчики, информацию о ICMP и OSPF, о нагрузке Ethernet, статистику узлов, ошибки контрольной суммы IP и другое. Она может предоставить следующую информацию в удобочитаемом формате:
- Статистика сетевого трафика по TCP-соединению
- Статистика IP-трафика по сетевому интерфейсу
- Статистика сетевого трафика по протоколу
- Статистика сетевого трафика по TCP/UDP-порту и размеру пакета
- Статистика сетевого трафика по адресу Layer2
14. tcpdump — детальный анализ сетевого трафика
Команда tcpdump — это простая команда, которая создает дамп трафика в сети. Тем не менее, вам нужно хорошо понимать принцип работы протокола TCP/IP, чтобы использовать этот инструмент. Например, для отображения информации о трафике DNS введите:
# tcpdump -i eth1 ‘udp port 53’
Для просмотра всех HTTP-пакетов IPv4 через порт 80 введите:
# tcpdump ‘tcp port 80 and (((ip[2:2] — ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)’
Показать все сеансы FTP до 202.54.1.5:
# tcpdump -i eth1 ‘dst 202.54.1.5 and (port 21 or 20’
Вывести всю сессию HTTP на 192.168.1.5:
# tcpdump -ni eth0 ‘dst 192.168.1.5 and tcp and port http’
Чтобы использовать wireshark для просмотра подробной информации о файлах, введите:
# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80
15. iotop — монитор ввода-вывода Linux

Команда iotop показывает таблицу текущего использования ввода-вывода, отсортированную по процессам или потокам на сервере.
$ sudo iotop
Пример выводов:
16. htop — интерактивный просмотрщик процессов

htop — это бесплатная программа с открытым исходным кодом на базе ncurses для просмотра процессов для Linux. Она очень проста в использовании. Вы можете выбрать процессы для команд kill или renice, не используя их PID и не выходя из интерфейса htop.
$ htop
Пример выводов:
17. atop — мониторинг процессов

atop — очень мощный и интерактивный монитор для просмотра нагрузки в системе Linux. Он отображает наиболее важные аппаратные ресурсы с точки зрения производительности. Вы можете посмотреть производительность процессора, памяти, диска и сети. Команда показывает, какие процессы ответственны за указанную нагрузку относительно загрузки процессора и памяти.
$ atop
18. Команды ac и lastcomm
Вы можете отслеживать процессы и вход в систему на вашем сервере Linux. Пакет psacct или acct содержит несколько утилит для мониторинга процессов, в том числе:
- Команда AC: статистика о времени подключения пользователей
- Команда lastcomm: информация о ранее выполненных командах
- Команда accton: включает или выключает учет процессов
- Команда sa: обобщает учетную информацию
19. monit — контроль процессов
Monit — это бесплатное программное обеспечение с открытым исходным кодом, которое выполняет функции контроля за процессом. В нем встроена возможность перезапуска служб. Вы можете использовать Systemd, daemontools или любой другой подобный инструмент для той же цели.
20. nethogs — узнайте PID, которые используют наибольшую пропускную способность в Linux
NetHogs — это небольшой, но удобный инструмент для работы с сетью. Он группирует пропускную способность по имени процесса, например, Firefox, wget и так далее. В случае внезапного всплеска сетевого трафика, запустите NetHogs. Вы увидите, какой PID вызывает скачок пропускной способности.
$ sudo nethogs
21. iftop — показывает использование полосы пропускания на интерфейсе хоста
Команда iftop слушает сетевой трафик с заданным именем интерфейса, например, eth0. Она отображает таблицу текущего использования полосы пропускания парами узлов.
$ sudo iftop
22. vnstat — консольный монитор сетевого трафика
vnstat — это простой в использовании консольный монитор сетевого трафика для Linux. Он ведет журнал почасового, ежедневного и ежемесячного сетевого трафика для выбранного интерфейса.
$ vnstat
23. nmon — мониторинг серверов
nmon — это утилита, которая может показывать процессор, память, сеть, диски, файловые системы, NFS, основные ресурсы процесса и информацию о разделах из Cli.
$ nmon
24. glances — отслеживание системы Linux
glances — это кроссплатформенный инструмент мониторинга с открытым исходным кодом. Он предоставляет тонны информации на маленьком экране. Он также может работать в режиме клиент/сервер.
$ glances
25. strace — отслеживает системные запросы в Linux
Strace позволяет отслеживать системные запросы и сигналы Linux. Это пригодится при отладке веб-сервера и решении других проблем с ним.
26. /proc /file system — статистика ядра Linux
Файловая система /proc предоставляет подробную информацию о различных аппаратных устройствах и другие данные об ядре Linux. Типичные примеры /proc:
# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts
27. Nagios — мониторинг серверов Linux и сетей
Nagios — это популярная программа с открытым исходным кодом для мониторинга сети. С ней вы можете контролировать все хосты, сетевое оборудование и сервисы. Она может отправлять оповещения, когда что-то идет не так и когда все стабилизируется.
28. Cacti — веб-инструмент для мониторинга Linux
Cacti — это комплексное решение для построения сетевых графиков, предназначенное для использования возможностей RRDTool по хранению и графическому отображению данных. В Cacti есть функционал для обследования сети, расширенные шаблоны графиков, несколько методов сбора данных и функции управления пользователями. Все это сведено в интуитивно понятный и простой в использовании интерфейс, который подходит даже для сложных сетей с сотнями устройств. Он может предоставлять данные о сети, процессоре, памяти, пользователях вошедших в систему, Apache, DNS-серверах и многое другое.
29. KDE System Guard — системы и отчеты Linux в режиме реального времени
KSysguard — это приложение для мониторинга системы для рабочего стола KDE. Его можно запускать через сессию ssh. Оно обеспечивает мониторинг локальных и удаленных хостов. Графический интерфейс использует так называемые датчики для извлечения отображаемой информации. Датчик может возвращать простые значения или более сложную информацию, например, таблицы. Для каждого типа информации предоставляется один или несколько дисплеев. Дисплеи организованы в виде листов, которые можно сохранять и загружать независимо друг от друга. Таким образом, KSysguard — это не только простой диспетчер задач, но и очень мощный инструмент для управления большими пулами серверов.
30. Системный монитор Gnome Linux
Приложение System Monitor позволяет отображать основную системную информацию и отслеживать системные процессы, использование системных ресурсов и файловых систем. Его также можно использовать для изменения поведения вашей системы. Хотя он и не такой мощный, как KDE System Guard, но зато он предоставляет основную информацию, которая может быть полезна для новых пользователей:
- Отображение основной информации об аппаратном и программном обеспечении компьютера.
- Версия ядра Linux
- Версия GNOME
- Аппаратные средства
- Встроенная память
- Процессоры и скорость работы
- Состояние системы
- Доступное дисковое пространство
- Процессы
- Память
- Использование сети
- Файловые системы
- Список всех файловых систем с основной информацией о каждой.
Бонус: дополнительные инструменты
Еще немного инструментов:
- nmap – сканирует сервер на наличие открытых портов.
- lsof – список открытых файлов, сетевых подключений и многое другое.
- ntop — веб-инструмент для наблюдения за использованием сети, программное обеспечение для мониторинга сетевого трафика. Вы можете видеть состояние сети, распределение трафика по протоколам для UDP, TCP, DNS, HTTP и других протоколов.
- Conky – еще один классный инструмент мониторинга для системы X Window. Он легко настраивается и способен отслеживать многие системные переменные, включая состояние процессора, памяти, места подкачки, дискового пространства, температуры, процессов, сетевых интерфейсов, заряда батареи, системных сообщений, почтовых ящиков и т. д.
- GKrellM – этот инструмент можно использовать для мониторинга состояния процессоров, основной памяти, жестких дисков, сетевых интерфейсов, локальных и удаленных почтовых ящиков и многого другого.
- mtr – mtr объединяет функциональность программ traceroute и ping в одном инструменте диагностики сети.
- vtop – графический монитор активности терминала в Linux.
- gtop – панель мониторинга системы для терминала Linux/macOS Unix.
Каждую неделю мы в live режиме решаем кейсы на наших открытых онлайн-практикумах, присоединяйтесь к нашему каналу в Телеграм, вся информация там.
Если вы хотите освоить функционал системного администратора Linux на практике, приглашаем на наш практикум Linux by Rebrain.
Анализ работы сервера linux
Проверьте количество, параметры и мощность ваших процессоров:
cat /proc/cpuinfo
Список из 30 процессов, которые больше всего нагружают процессор:
ps aux --sort=-%cpu | head -31
В динамике увидеть список самых прожорливых процессов можно командой top
Для более подробной информации установите и используйте htop
Память
Команда free показывает в килобайтах общее количество свободной и используемой системой физической памяти и памяти SWAP, а также размеры буферов, используемые ядром.
free total used free shared buffers cached Mem: 962568 734924 227644 0 29040 251592 -/+ buffers/cache: 454292 508276 Swap: 1461872 326604 1135268
Примечание: Для виртуальных серверов распределение (выделение) памяти выполняется ядром несущей машины (hardware node-HN).
Виртуальная память (swap) для Вашей VPS выделяется, но Вы этого не видите стандартными средствами.
Использование виртуальной памяти (swap) не отображается внутрь VPS в текущей версии Virtuozzo (В будущем это будет возможно). Для VPS выделяется просто память, и внутри VPS не показывается различие между swap и остальной памятью, поэтому в /proc/meminfo (а также в top/free) мы наблюдаем нулевой размер и нулевое использование swap.
Но есть важный момент — если не хватает памяти на выделенном сервере, то процессы вытесняются в виртуальную память, что тормозит работу и это автоматически снижает нагрузку.
Топ прожорливых к памяти процессов
ps aux --sort=-rssize | head -20
Есть возможность получить виртуальный размер процесса и резидентный, я предлагаю измерять резидентный — то что реально получает процесс от ядра. Однако есть смысл отсортировать и по виртуальному размеру — то, что процесс просит у ядра, но не получает.
ps aux --sort=-vsz | head -20
Дополнительно используйте top, htop с сортировкой по памяти
Диск
Система может просто висеть по причине переполненного диска. Проверьте сколько места у вас имеется:
df -h Filesystem Size Used Avail Use% Mounted on /dev/simfs 217G 149G 69G 69% /
При недостатке индексных дискрипоторов тоже будут проблемы. Убедитесь, что есть резерв:
df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/simfs 4.8M 1.7M 3.2M 35% /
Как видно, занято только 35%. Сообщите службе технической поддержки провайдера если выделенный лимит исчерпан.
Чаще всего пожирателем пространства бывают системные журналы, уделите время настройке ротации журналов.
А эта команда покажет кто съел пространство (для всего диска используем для указания каталога «/»):
du | sort -rn | head -n 20
При этом будет вычислен общий объем имеющегося у вас пространства, а также объем, занимаемый каждым каталогом, затем результат сортируется по убыванию объемов и, наконец, показываются только первые 20 строк упорядоченного списка. Подобные команды позволяют вам определить, кто является «пожирателем пространства», но оставляют на ваше усмотрение способы решения этой проблемы.
Чтобы узнать размер всех директорий в заданном каталоге, выполните команду:
find -maxdepth 1 -type d -print | xargs du -sk | sort -rn
Для поиска больших файлов можно использовать find
find -type f -size +100M
эта команда выдаст список файлов с размером более 100М
Команду можно развить до конструкции, выполняющей действия над найденными файлами:
find <> \;
На место симвовлов «<>» будут подставлены имена найденных файлов.
Подобная конструкция может вам скомрессировать или удалить ненужные файлы.
Только прежде хорошо анализируйте, что сочинили, — команда не будет задавать вопросы даже если возмётся удалять всё с вашего диска.
I/O нагрузка
Ваша система может сильно тормозить если постоянно находится в ожидании ввода/вывода данных. Это происходит при большой нагрузке (утилизации) устройств хранения, каналов связи и т.п. Команда iostat выдает статистику использования процессора, а также статистику ввода/вывода для устройств, разделов и сетевых файловых систем (NFS). В таком варианте она выдает параметры с интервалом 5 секунд
iostat -x 5 Linux 2.6.18-028stab053 (vt.helpdesk.by) 10/29/09 avg-cpu: %user %nice %system %iowait %steal %idle 13.52 1.55 3.75 33.44 0.00 47.74 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
На физическом сервере это выглядит так:
iostat -x 5 Linux 2.6.30-gentoo-r6 (k-pex) 29.10.2009 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 19.86 17.72 6.46 3.69 0.00 52.28 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 2.56 18.96 8.75 3.30 272.31 178.44 37.41 0.42 34.94 3.62 4.37 sdb 0.21 36.96 2.90 2.29 354.28 265.58 119.26 0.67 128.36 5.60 2.91
Сеть
Проблемы производительности связанные с сетью могут быть вызваны неверными настройками, например так могут влиять неправильные параметры в файлах:
/etc/hosts /etc/resolv.conf /etc/nsswitch.conf
Проверьте проверьте правильность назначения имени хоста
domainname -f
Вы должны получить имя подобное этому
server1.domain.com
Для проверки работы DNS
Проверка прямого разрешения имени хоста:
host helpdesk.by helpdesk.by has address 87.118.96.217
Проверка обратного разрешения имени хоста:
host 87.118.96.217 217.96.118.87.in-addr.arpa domain name pointer helpdesk.by.
Проверить канал до сервера командами
ping -c 4 87.118.96.217 traceroute -n 87.118.96.217
Если трассировка не прошла, значит вероятны проблемы с Интернет у провайдера или в магистральном канале.
Трассировка может не проходить при ограничениях на фаерволах.
Интерфейс
Поверьте ваши интерфейсы утилитой ifconfig. Утилита ethtool (доступно только для физических серверов) покажет важные параметры. Обратите внимание на параметры «Speed» и «Duplex».
ethtool eth0 Settings for eth0: Supported ports: [ MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: external Auto-negotiation: on Supports Wake-on: g Wake-on: d Link detected: yes
Трафик
Оцените трафик на ваших интерфейсах утилитой iftop:
iftop -Pn -i venet0
iftop показывает список самых активных клиентов, но можно измерить и активность отдельного адреса используя фильтры:
iftop -F 212.34.45.56/32 -i venet0
Службы, порты и соединения
Какие службы работают на вашем сервере, какие порты они слушают и на каких адресах?
ss -ln
netstat -lnutp
Атаки
Может быть кто атакует ваш сервер? Сколько соединений создано к вашему серверу?
netstat -ntu | wc -l
Посмотрим список самых агрессивных клиентов:
netstat -ntu | awk '' | cut -d: -f1 | sort | uniq -c | sort -n
Другие популярные средства стевого мониторинга
iptraf – сетевая статистика в режиме реального времени Команда iptraf запускает цветной интерактивный монитор, следящий за сетевыми IP. Этот монитор сетевых IP базируется на команде ncurses, которая выдает различную сетевую статистику, в том числе информацию о TCP, ведет подсчет UDP, выдает сведения о ICMP и OSPF, информацию о нагрузке на Ethernet, статистику по узлам сети, данные об ошибках контрольных сумм пакетов IP и многое другое. Монитор предоставляет в удобном для чтения виде следующие данные:
Статистику сетевого трафика по TCP подключениям
Статистику IP трафика по сетевым интерфейсам
Статистику сетевого трафика по протоколам
Статистику сетевого трафика по портам TCP/UDP и по размерам пакетов
Статистику сетевого трафика по адресам протоколов второго уровня
tcpdump – детальный анализ сетевого трафика Команда tcpdump – простая команда, выдающая дамп сетевого трафика. Однако, вам нужно хорошо понимать протоколы TCP/IP для того, чтобы использовать это средство. Например, для того, чтобы показать информацию о трафике DNS , введите следующее:
tcpdump -i eth1 'udp port 53'
Для того, чтобы показать все IPv4 HTTP пакеты, идущие на порт и с порта 80, т.е. выдать только те пакеты, которые содержат данные, и, например, не учитывать пакеты SYN и FIN и пакеты ACK-only, введите следующее:
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Для того, чтобы показать все сессии FTP для адреса 202.54.1.5, введите следующее:
tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'
Для того, чтобы показать все сессии HTTP для адреса 192.168.1.5, введите следующее:
tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'
Введите следующую команду и используйте для просмотра подробностей программу анализа wireshark:
tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80
Прочее
Иногда подвисание сервера может вызвать совершенно неожиданная причина.
Атака на ваш почтовый сервер может породить очередь сообщений из нескольких сотен тысяч сообщений. Решение — pfqueue для postfix MTA или qmHandle для Qmail MTA.
Иногда заканчивается место на диске, попытки его освободить ничего не дают, пространство снова исчезает. Это случается когда программа пытается создать файл, но для него не хватает места и файл остается открытым. В такой ситуации занятое файлом место может не учитываться утилитой du и его непросто найти. Остановите все сервисы, снова используйте du. Проверьте активные процессы и их аргументы ps -ax | less , используйте lsof для поиска открытых файлов.
Linux сколько времени работает сервер
Информацию по нагрузке на сервере под управлением операционной системы Linux вы можете получить, подключившись к оболочке (shell) операционной системы.
Доступ к оболочке операционной системы возможен через веб-консоль используемой услуги или через подключение к виртуальной машине по SSH.
Для анализа нагрузки на сервере вы можете использовать следующие системные утилиты: w, ps, top.
Ниже представлена краткая информация по каждой из утилит.
1. Утилита w.
Утилита w представляет информацию о времени, прошедшем с последнего запуска операционной системы, нагрузке на процессорные мощности и активных подключениях к оболочке операционной системы (shell).
Запускается командой:
w
Результат выполнения команды представлен на следующем скриншоте.
Средние значения нагрузки в Linux — это значения, показывающие потребность в исполняемых потоках (задачах) в виде усреднённого количества исполняемых и ожидающих потоков.
Информация о нагрузке в выводе команды выделена на скриншоте.
Указываются слева-направо три значения средней нагрузки за последние 1, 5 и 15 минут.
На скриншоте нагрузка за последнюю минуту составляет 0.84, а за последние 15 минут — 0.35.
Если значения нагрузки равны 0.0 — система находится в состоянии простоя.
Если среднее значение для 1 минуты выше, чем для 5 или 15 — нагрузка на сервере растёт.
Если среднее значение для 1 минуты ниже, чем для 5 или 15 — нагрузка на сервере снижается.
Если значения нагрузки выше, чем количество процессоров (CPU), то у вас могут быть проблемы с производительностью (в зависимости от ситуации).
2. Утилита ps.
Получить информацию по потреблению процессорных мощностей каждым из запущенных на сервере процессов можно командой:
ps -AH -o pid,pcpu,command
Результат выполнения команды представлен на следующем скриншоте.
Дополнительная информация по выводу команды:
1-ый столбец — PID, идентификатор процесса;
2-ой столбец — %CPU, потребление процессорных мощностей, %;
3-ий столбец — COMMAND, имя процесса или команда запуска процесса.
2. Утилита top.
Утилита top позволяет в реальном времени получить информацию о потреблении вычислительных ресурсов сервера с выводом информации по отдельным запущенным процессам.
Рекомендуем запускать утилиту командой:
top -c
, где дополнительный параметр c — отвечает за вывод полной команды.
Результат выполнения команды представлен на следующем скриншоте.
На скриншоте выделены:
— данные по средней нагрузке за 1, 5 и 15 минут;
— столбец %CPU с данными по нагрузке на процессорные мощности каждым из процессов;
— столбец COMMAND с указанием конкретного процесса (команды запуска процесса).
По умолчанию, вывод информации о процессах отсортирован по столбцу %CPU
Информация обновляется каждые 3 секунды, изменить период обновления можно нажав клавишу d и указав новое значение в секундах.