Бортовой журнал Ктулху

Мониторинг в Linux

Любая операционная система требует контроля за процессами и отслеживания параметров для поддержания ее в работоспособном состоянии.

 

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

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

Top - просмотр активных процессов

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

Terminal 1

Список наиболее часто используемых ключей утилиты:

t - отобразить общую информацию по всей системе;

m - отобразить информацию о памяти;

A - создает на одном экране несколько топов процессов по максимального потребления ресурсов. Может быть полезным для быстрого выявления самых ресурсоемких процессов;

f - выводит интерактивный экран настройки, позволяет быстро найти определенную задачу;

o - фильтры процессов;

r - выполнить утилиту renice для текущего процесса, позволяет изменить приоритет процесса;

k - выполнить утилиту kill для этого процесса;

z - отключить цветной вывод.

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

vmstat

vmstat 1

Эта команда показывает подробную информацию о памяти, процессах, страницах памяти, операциях ввода/вывода и нагрузке на процессор.

$ vmstat 3

Цифра три, значит, что информация будет выводиться каждые три секунды. В первом отчете содержится вся информация, накопленная с момента запуска системы, во всех последующих за интервал между вызовами утилиты. С полем memory и swap все понятно, они отображают состояние памяти, куда интереснее следующие поля.

Колонка bi показывает количество операций чтения с диска, а bo - вывода на диск. Колонки us и sy показывают загрузку процессора пользовательскими процессами и процессами системы соответственно, id отображает время простоя в процентах, во время ожидания работы диска. Колонки si и so отображают количество запросов записи и выгрузки страниц из swap.

Сокращение wa обозначает количество операций ввода/вывода, которые ждут своей очереди. В разделе procs, колонка r показывает количество процессов, ждущих своей очереди для выполнения на процессоре, а колонка b показывает процессы ждущие окончания дисковых операций. В колонке system, in - число выполненных прерываний, cs - число переключения контекста процессора в секунду.

w - просмотр пользователей

w 1

Утилита w позволяет посмотреть что делают другие пользователи сейчас на этом компьютере. Вы увидите время их входа, номер консоли и даже команду, которую выполняет пользователь.

$ w

Здесь первая запись, тот терминал, в котором мы выполнили w, а вторая - другой терминал, в котором просто открыта оболочка bash.

uptime

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

$ uptime

uptime 1

Значение загрузки системы чем меньше тем лучше.

ps - отображение процессов

Не всем подходит интерактивная утилита top, для некоторых случаев необходимо использовать ps. Чтобы вывести все процессы используйте опцию -A или -e

$ ps -A

ps 1

Для получения большего количества информации используйте опцию -l:

ps -Al


psal 1

Для максимально полного вывода используйте такую команду:

$ ps -AlF

psalf 1

Отображаем еще и потоки процессов:

$ ps -AlFH

psalfh 1

Вывести потоки сразу после процессов:

$ ps -AlLm

psallm 1

Список процессов с потоками в виде дерева:

$ ps -ejH

 

psejh 1

Отобразить информацию о безопасности:

$ ps -eM

psem 1

Вывести только нужный процесс:

$ w
0

pgrep 1

Или отобразить только процессы нужного пользователя:

$ w
1

pgreprev 1

free - использование памяти

Эта утилита позволяет увидеть информацию о свободной, использованной и кэшированной памяти. а также пространстве подкачки:

$ w
2

free 1

Или в более понятном формате:

$ w
3

freeh 1

iostat -активность диска

Утилита iostat показывает немного другую информацию. Здесь вы можете увидеть скорость чтения и записи с диска, а также общее количество прочитанных и записанных данных:

$ w
4

iostat 1

sar - активность системы

Утилита sar позволяет собирать и сохранять информацию о работе системы в любое время. Вы можете сохранить такие параметры, как загрузка системы, нагрузка на процессор, скорость работы с диском и другое.

Чтобы посмотреть сохраненную в логах информацию за все время используйте:

$ sar -n DEV | more

Также вы можете вывести только данные за последние 24 часа:

$ sar -n DEV -f /var/log/sa/sa24 | more

Или смотреть статистику в реальном времени:

$ sar 4 5

sar 1

mpstat - статистика ядер процессора

Эта утилита показывает нагрузку на каждое ядро процессора отдельно. Просто выполните:

$ mpstat -P ALL

mpstat 1

pmap - память процесса

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

$ pmap -d PID

sdgfsd 1

Рассмотрим несколько колонок:

mapped - количество памяти, в которую загружены файлы;

writeable/private - размер защищенного адресного пространства;

shared - общее пространство, для нескольких процессов.

ss - монитор сетевых подключений

ss 1

Утилита позволяет отобразить активные сетевые соединения, таблицу маршрутизации, замаскированные соединения, а также участие в широковещательных передачах. Также вы можете посмотреть информацию об открытых сокетах и портах. Как пользоваться утилитой читайте в статье команда ss в linux.

iptraf - сетевая статистика в реальном времени

iptraf 1

Команда iptraf позволяет отслеживать работу локальной сети. Она основана на Ncurses, а это значит, что вы будете иметь интерактивный доступ ко всем данным. Это информация о передаваемых данных по протоколах TCP, UDP, ICMP и OSPF, нагрузка на Ethernet, статистика узлов, ошибки контрольных сумм IP и многое другое.

tcpdump - анализ сетевого трафика

tcpd 1

В отличие от предыдущей утилиты tcpdump позволяет анализировать содержимое всех пакетов, проходящих через определенный порт. Например, вы можете отслеживать всю информацию о запросах к DNS с помощью следующей команды:

$ tcpdump -i eth0 'udp port 53'

Также вы можете вывести все пакеты только протокола http, только без служебных пакетов FIN, SYN, ASC:

$ tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

Теперь выведем все HTTP запросы на ip 192.168.1.8:

$ tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'

strace - системные вызовы

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

nethogs - анализ нагрузки на сеть

nethogs 1

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

Источник