Atop linux как пользоваться

Обновлено: 05.07.2024

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

При запуске он включает в ядре механизм process accounting. Никогда не убивайте atop через kill -9, так как не будет отключен механизм process accounting и лог ф-л разрастеться до больших размеров

atop - это такой комбайн, который сочетает в себе возможности top, netstat, iostat, accounting и так далее. может записывать состояние системы в сжатый файл и позже оспроизводить их в console UI или используя sar подобный режим atopsar предоставлять кучу репортов.
ВОЗМОЖНОСТИ

потребление ресурсов каждым процессом
отслеживание (занесение в журнал) информации об уровне нагрузки на каждый ресурс
подсветка наиболее критичных ресурсов цветами
возможность просмотра информации только об активных процессах
статистика суммарного потребления ресурсов по пользователям и по процессам

Некоторые возможности atop доступны для обычного ядра Linux, а некоторые, в частности, отслеживание дисковой активности, требуют обязательного наложения патча на ядро.
INTERACTIVE COMMANDS

маленькие б-вы - показать другую информацию по активным прцессам
большие б-вы - сортировать по другим значениям
g

вывод окна по cpu(default). общий вывод

PID - process-id. ? -если процесс не является стандартной записю из accounting. с патчем поле будет выводиться коректно.
RUID - действительное user-id под которым обробатываеться процесс
EUID - действующее user-id под которым обробатываеться процесс
THR - общее количество потоков для процесса
SYSCPU - потребление CPU за последний интервал в р-ме system. kernel mode. обычно системные вызовы.
USRCPU - потребление CPU за последний интервал в р-ме user
VGROW - рост виртуальной памяти втечении последнего интервала
RGROW - резидентный(реальный, занятый процессом ОП) рост памяти втечении последнего интервала. может быть отрицательным, если процесс отгружаеться из памяти в swap
=== cnt patch ===
number of read- and write transfers on disk, and the number of received and transmitted network packets are shown for each process
=== kernel patch is not installed and the kernel supports per-process io statistics (>= 2.6.20) ===
RDDSK - I/O необходимое на swapping не учитывается.
с установленным патчем показывает кол обращений к физическому диску для считывания с него данных(минуя кеш)
без установленного патча - количество данных считаные с диск(минуя кеш).
WRDSK - I/O необходимое на swapping не учитывается.
с установленным патчем показывает кол обращений к физическому диску для записи на него данных(минуя кеш)
без установленного патча - количество данных отосланных на диск(минуя кеш).
=== kernel patch is not installed and the kernel does not support per-process io statistics ===
username, number of threads in the thread group
=== ===
ST - статус процесса.
N в первой позиции говорит, что процесс был запущен во время последнего интервала.
Вторая позиция показывает закончился ли процес за время последнего интервала:
E - exit
S - terminated by a signal
C - terminated by a signal но остался core dump
EXC - код выхода процесса.
E - закончившиеся процессы.
S or C - фатально убитые процессы.
S - состояние процесса.
R - в текущий момент обробатываються
S - в пробуждаемом сне(ждут события)
D - в непробуждаемом сне
Z - зомби(ожидают синхронизации с родителями)
T - остановленные(suspended or traced)
W - swapping
E - exit,закончившиеся.
CPUNR - идентифицирует CPU который обрабатывает процесс
CPU - процент занятости выбранного ресурса (default - cpu)
CMD - имя процесса. если оно заключено в скобки < > - это означает что закончился во время последнего интервала.

PID -
MINFLT - количество страниц восстановленых после ошибок. если страница ненайдена в памяти, то она береться из swap(SWIN) , это и есть восстановление
MAJFLT - количество крупных ошибок страниц памяти указанного процесса. если страница ненайдена в памяти, то она береться из swap(SWIN) , это и есть ошибка
VSTEXT - размер кода в памяти
VSIZE - размер всей памяти занятой процессом
RSIZE - зарезервировано памяти процессом, пользователем (занято реально). = RSS per process
VGROW -
RGROW -
RUID
EUID
MEM -
CMD -

PID
RDDSK
WRDSK
WRDSK_CANCEL | WCANCEL - не скинутые с кеша на диск данные, которые ужи были удалены. и их скидывать на диск не нужно.
DSK
CMD

=== when kernel patch cnt is installed ===

show scheduling-related process-info

PID -
TRUN - колич потоков в рабочем состаяние R
TSLPI - колич потоков в состояние пробуждаемого сна S
TSLPU - количество потоков в состоянии бесперебойного сна D
POLI - политика разделения времени между процесами: нормальная с разделение времени(norm), циклическая реального времени(rr) и FIFO реального времени(fifo)
NICE - коефициент мягкости NICE
PRI - приоритет процессов от 0 (наивысший) до 139 (наинизший). 0 to 99 - для процессов реального времени, фиксирован. 100 to 139 - для обычных процессов, приоритет меняеться взависимости от последнего потребления процессора и уступчевости(nice)
RTPR - приоритет реального времени по POSIX-стандарту. 0 - для обычных процессов norm. 1(lowest) - 99 (highest)- для процессов реального времени (rr или fifo)
CPUNR - текущий процессор обробатывающий процесс
ST - статус
EXC - код выхода
S - состояние
CPU -
CMD -

общии хар-ки процессов(пользователь, когда запущен)

PID -
PPID - pid процесса родителя.0, если процес родитель не поддержует механизм accaunting.
RUID -
RGID -
EUID -
EGID -
FSUID - Filesystem user-id under which this process executes
=== в старых версиях ===
USERNAME -
GROUP -
=== - ===
STDATE -
STTIME -
ENDATE - дата, когда процесс закончился
ENTIME - время, когда процесс закончился
ST -
EXC -
S -
CPU -
CMD -

полная строка запуска процесса

PID
CPU
COMMAND-LINE

user-defined line of the process(file atoprc the keyword ownprocline)
u

показывает ресурсы по пользователям(работает a)

NPROCS - кол. активных или мертвых процессов за последний интервал времени
SYSCPU
USRCPU
VSIZE
RSIZE
RDDSK
WRDSK
RNET кол принятых сетевых пакетов
SNET кол отосланных сетевых пакетов
CPU
USER

активнасть процессов по программам(работает a)

NPROCS
SYSCPU
USRCPU
VSIZE
RSIZE
RDDSK
WRDSK
RNET
SNET
CPU
CMD

предпоследняя строка(% по исследуемому ресурсу) меняется в зависимости от указанных опций:

C сорт по CPU
M по MEM
D по DSK
N по NET
A automatically(по общей нагруженности). Сортировка по самому загруженому ресурсу втечении установленого интервала(может быть ACPU, AMEM, ADSK, ANET).

Miscellaneous interactive commands:

h help
V version number and date
x вкл/выкл цвет
z pause
i interval timer (default: 10 seconds)
t
r сбросить все счетчики в zero и просматривать активность процессов зщаново
U search string for specific user names as a regular expression
P search string for specific process names as a regular expression
a показ только активных/всех процессов. что бы узнать все количество ресурсов(память, диск,CPU, …), занимаемое комбинированным показателем(пользователь, имя процесса) обязательно смотрим его с включенным параметром a, то есть - для всех процессов, также и неактивных сейчас.
==============================
f показ active/all system resources
1 счетчик обычный/кол в сек
l количество выводимых строк по статистику cpu,disk,interface. по умолчанию показываються все активные параметры за последний интервал времени
k послать сигнал процессу
================
^F след стр процессов
^B пред стр процессов
^L перерисовать стр

page cache = cache + buff

SWP
tot -
free -
vmcom - защищенное вирт пространство для всех процессов. ядро лишь удостоверяеться в том что оно не превышает предела, если настроен строгий overcommit (vm.overcommit_memory равна 2).
vmlim - максимальный предел пространства памяти(swap size plus 50% of memory size)
PAG -
scan - количество отсканированных страниц
stall - число раз, когда ядро пытается вернуть страницы из-за срочной необходимости
swin - количество страниц памяти считанных со swap
swout - количество страниц памяти записанных в swap
LVM/MDD/DSK
busy -
read - кол запросов на чтение
write - кол запросов на запись
KiB/r - number of KiBytes per read
KiB/w - number of KiBytes per write
MBr/s - number of MiBytes per second throughput for reads
MBw/s - number of MiBytes per second throughput for writes
avq - средняя глубина очереди запросов
avio - среднее число мс на обработку запроса на поиск, задержку и передачу данных
NET (TCP/IP)
=== transport - activity of the transport layer (TCP and UDP) ===
tcpi - количество полученных сегментов TCP в том числе полученные по ошибке
tcpo - количество переданных сегментов TCP исключая те, которые содержат только повторение октетов
udpi - кол полученных UDP-датаграмм
udpo - кол переданных UDP-датаграмм
tcpao - number of active TCP opens
tcppo - number of passive TCP opens
tcprs - number of TCP output retransmissions(количество повторных передач TCP)
=== - ===
tcpie - the number of TCP input errors
tcpoe - the number of TCP output resets
tcpor - the number of TCP output retransmissions
udpnp - the number of UDP no ports
udpie - the number of UDP input errors
=== network - IP layer ===
ipi - кол пришедших IP-датаграм, включая ошибочные
ipo -
ipfrw - число полученных IP датаграмм, которые были направлены в другие интерфейсы
deliv - число дейтаграмм IP которые были доставлены в местные протоколы более высокого уровня
icmpi - the number of received ICMP datagrams
icmpo - the number of transmitted ICMP datagrams
=== one line per active interface ===
загрузка интерфейса - для half duplex определяется путем сравнения скорости интерфейса с числом битов переданных и полученных в секунду. для full duplex скорость интерф сравнивается с наивысшим числим переданных или полученных байт. — - если скорость не может быть определена.
pcki - кол принятых пакетов
pcko - кол переданных пакетов
si - эффективное количество бит полученных в секунду, Mbps
so - эффективное количество бит переданных за одну секунду, Mbps
coll - the number of collisions
mlti - the number of received multicast packets
erri - the number of errors while receiving a packet
erro - the number of errors while transmitting a packet
drpi - the number of received packets dropped
drpo - the number of transmitted packets dropped

interval - частота обновления данных
samples - количество обновлений. после - выйти с программы.
=== ===
-l ограничивает вывод системной статистики по ресурсам таким кол строк:maximum number of per-cpu lines is set to 0, the maximum number of disk lines to 5 and the maximum number of interface lines to 3
-P [system-level statistics:«CPU»,»cpu» «CPL» «MEM»,»SWP»,»PAG»,»DSK» and «NET»] [process-level statistics:«PRG»,»PRC»,»PRM»,»PRD» and «PRN»] [ALL] - вывести статистику по одному или несколькому критерию

$ATOPACCT - the name of a specific process accounting file can be specified (accounting should have been activated on beforehand). When this environment variable is present but its contents is empty, process accounting will not be used at all.

RAW DATA STORAGE

имя ф-ла:
- за сегодня
y - за вчера
yy - за позавчера
yyyy - за 4 дня назад

-w сохранить статистику в ф-л бинарного лога
-r читать статистику с ф-ла лога
-b - begin time. вставляет в ф-л лога отметки времени HH:MM, по которым потом лог можно исследовать.
-e - end time.
-a - сохранение в лог всех процессов, в том числе и неактивных
-S - закончить сбор статистики принудительно в полночь
-L - длина строки вывода

В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал.

t +interval (1o min)
T -interval (10 min)
b - перейти на просмотр статистики на определеное время
r - начать просмотр ф-ла заново

С пакетом идет скрипт, который запускает atop каждый день в 00:00 с interv=10min и удаляет старые логи за 4 недели назад

0 0 * * * root /etc/atop/atop.daily

/var/log/atop/atop_YYYYMMDD - журнал лога работы демона atop
/tmp/atop.d/atop.acct - kernel writes the accounting records if the standard accounting to the file /var/log/pacct or /var/account/pacct is not used

- вывод статистики atop уровня с-мы. из ф-ла лога atop/

atopsar - текущая статистика
atopsar -m -r /var/log/atop/atop_20100523 -b 10:00 -e 14:30 статистика в определенный период
atopsar -A -r /var/log/atop/atop_20100523 - стат по каждому процессу
atopsar -t 60 10 - стат TCP
atopsar -c 60 5 - eport is generated about current CPU utilization of the system during 5 minutes (five times with an interval of sixty seconds)

Мониторингов нагрузки на сервер много — zabbix, Icinga 2 и другие — но все они ставятся довольно долго, и для мониторинга требуется большое количество серверов.

Мы рекомендуем atop: устанавливается быстро, ресурсов потребляет мало. Единственный минус — работать с ним можно только через ssh. Если для вас это не проблема, расскажем, как поставить atop и пользоваться им.

Установка и настройка

Debian/Ubuntu
установка
apt-get install atop

автозапуск
update-rc.d atop defaults

запуск
/etc/init.d/atop start

Centos
установка
yum install atop

автозапуск
systemctl enable atop

запуск
systemctl start atop

Конфигурационный файл
/etc/default/atop

Пример конфигурацонного файла:

Как пользоваться atop?

Команда atopsar — это встроенный анализатор логов atop, который позволит быстро найти проблему и смотреть лог в нужное вам время.

Основные ключи:
-b — с какого времени надо вывести лог
-e — до какого времени надо вывести лог

Общая нагрузка:
-d — нагрузка на каждый диск отдельно
-m — нагрузка на оперативную память и swap
-с — нагрузка на процессор, отдельно по каждому ядру
-p — количество процессов и тредов
-w — нагрузка на ipv4
-W — ошибки на ipv4
-i — нагрузка на интерфейс

Поиск отдельных процессов:
-O — top-3 процессов CPU
-G — top-3 процессов RAM
-D — top-3 процессов диск
-N — top-3 процессов сеть

Если вам этого недостаточно, можно посмотреть полный снимок нагрузки на сервер командой:
atop -r путь до лога , можно сразу указать временные рамки.

Например: atop -r /var/log/atop/atop_20190128 -b 09:35:01 -e 10:55:01

Откроется тот же atop, в котором видна вся нагрузка на сервере, где можно выставлять сортировку по процессам, но за только на нужное время. Чтобы открыть следующий снимок нагрузки, нажмите t , предыдущий снимок — T . Время снимка указано в первой строке посередине экрана. Больше информации в статье «Нагрузка на сервер: определение причин».

Нагрузка на RAM

Нагрузка по сетевым интерфейсам
atopsar -r /var/log/atop/atop_20190128 -i -b 00:40:00 -e 01:30:00

Нагрузка по сетевым интерфейсам

Нагрузка на диски
atopsar -r /var/log/atop/atop_20190128 -d -b 01:10:00 -e 01:30:00

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

Проанализировать, что именно нагружает сервер, можно с помощью специальных утилит. Их довольно много; в статье мы рассмотрим три из них:

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

При медленной работе сайта дополнительно рекомендуем воспользоваться сервисом PageSpeed Insights от Google, который анализирует скорость загрузки страниц и сообщает, каким образом можно оптимизировать работу сайта. Также можно попытаться оптимизировать работу сайта за счет переноса каталога временных файлов MySQL в tmpfs.

Как было сказано выше, утилита top предустановлена в UNIX-системах, поэтому для запуска вам достаточно подключиться к серверу по SSH и выполнить команду top.

Вывод утилиты выглядит следующим образом:


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

Сведения о системе

Слева вверху указано текущее время системы, далее:

Up - время работы системы с последнего запуска.

User - количество текущих пользователей.

Load average - средняя нагрузка на сервер: отображаются значения за одну, пять и 15 минут назад.

Tasks - общее количество запущенных процессов в разных статусах (running - выполняемые; sleeping - в ожидании; stopped - остановленные; zombie - "зомби", дочерние процессы, ожидающие завершения родительского процесса).

Cpu(s) - процент времени процессора, затраченного на выполнение процессов, в том числе:

us - пользовательские процессы (высокое значение данного показателя может указывать, в том числе, на проблемы в коде сайта, необходимость его оптимизации);

sy - процессы ядра;

id - неиспользуемые ресурсы (чем выше этот показатель, тем лучше);

wa - операции ввода/вывода, т.е. дисковые операции.

Mem, Swap - сведения об использовании оперативной памяти (total - общий объем, free - объем свободной памяти, used - объем использованной памяти).

Сведения о процессах

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

PID - идентификатор процесса;

USER - пользователь, запустивший процесс;

PR - приоритет процесса;

NI - измененный приоритет (присвоенный пользователем с помощью команды nice);

VIRT - объем используемой виртуальной памяти (здесь выводится тот объем памяти, который был запрошен процессом, даже если фактически используется меньше);

RES - объем используемой оперативной памяти (в данном случае, если процесс запросил 50Мб памяти, а использует 10Мб, будет выведено 10Мб);

SHR - объем памяти, разделяемой с другими процессами (т.е. память, которая может быть использована другими процессами);

S - статус процесса (running - запущен; sleeping - в ожидании; zombie - процесс-"зомби");

%CPU - процент использования процессорного времени;

%MEM - процент использования оперативной памяти;

TIME - общее время работы процесса;

COMMAND - имя процесса (команда, которой был запущен процесс).

Управление

Для работы с утилитой top используются следующие клавиши:

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

M - сортировка по используемой памяти

P - сортировка по нагрузке на процессор (используется по умолчанию)

T - сортировка по времени работы процесса

A - сортировка по максимальному потреблению различных ресурсов

u - сортировка по имени пользователя (потребуется ввести имя пользователя)

k - завершить процесс (потребуется указать его идентификатор, PID)

n - изменить количество процессов в выводе (потребуется указать нужное количество)

c - вывести полный путь запущенного процесса (столбец COMMAND)

h - вывод справки

q - выход из программы

В отличие от top, утилиту htop сначала необходимо установить на сервер:

Ubuntu / Debian:

CentOS:

И после запустить:

Вывод команды выглядит следующим образом:


Аналогично выводу top, в верхней части представлена информация о системе, ниже - список процессов. Значения столбцов в htop те же, что в top (они описаны выше).

Сверху слева вы можете видеть данные о нагрузке каждого ядра процессора, объем занятой памяти, сведения о количестве процессов, значения load avearage (средней нагрузки) за последние 1, 5 и 15 минут и аптайм системы.

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

Чтобы отсортировать их по занятой памяти (или любому другому параметру), просто кликните на название нужного столбца, например MEM. Для обратной сортировки (от меньшего к большему) достаточно кликнуть на тот же столбец еще раз. Также для управления сортировкой можно использовать клавиши M (сортировка по памяти), P (по процессору), T (по времени), аналогично утилите top.

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

u - вывести процессы конкретного пользователя.

Для управления используются клавиши F1 - F10:

F1 - вывод справки

F2 - настройка вывода (добавление, удаление столбцов, отображение расширенной информации в верхнем блоке и пр.)

F3 - поиск процессов

F4 - фильтрация процессов (вывод процессов, имеющих в названии указанное слово)

F5 - вывод дерева процессов (родительские и дочерние процессы)

F6 - изменить тип сортировки

F7 / F8 - повышение / понижение приоритета

F9 - завершение процесса (в отличие от top, не требуется указание PID - просто выделите с помощью мыши или клавиатуры нужный процесс и нажмите F9. Для подтверждения завершения процесса нажмите Enter, для отмены - Esc).

F10 - выход из программы

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

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

Привет, %username% ! Мониторинга много не бывает, а значит такие инструменты как Zabbix, Prometheus и другие имеют какие-то недостатки. Одним из основных недостатков может быть то, что для мониторинга нужна инфраструктура. А если у нас один сервер, то нам может быть достаточно такого инструмента как atop .

Устанавливается быстро, ресурсов потребляет мало. Единственный минус — работать с ним можно только в CLI.

Установка выполняется стандартным способом:

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

-b — с какого времени надо вывести лог;

-e — до какого времени надо вывести лог;

-d — нагрузка на каждый диск отдельно;

-m — нагрузка на оперативную память и swap;

-с — нагрузка на процессор, отдельно по каждому ядру;

-p — количество процессов и тредов;

-w — нагрузка на ipv4;

-W — ошибки на ipv4;

-i — нагрузка на интерфейс;

Поиск отдельных процессов:

-O — TOP-3 процессов по CPU;

-G — TOP-3 процессов по RAM;

-D — TOP-3 процессов по диску;

-N — TOP-3 процессов по сети;

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

А можно сразу указать временные рамки:

Откроется тот же atop , в котором видна вся нагрузка на сервере, где можно выставлять сортировку по процессам, но за только на нужное время. Чтобы открыть следующий снимок нагрузки, нажмите t , предыдущий снимок — T . Время снимка указано в первой строке посередине экрана. В качестве примера посмотрим на нагрузку на RAM с 19:35:00 до 21:15:00 от 5 декабря 2020 г.

Нагрузка на RAM

Нагрузка по сетевым интерфейсам:

Нагрузка по сетевым интерфейсам

Нагрузка на диски:

Нагрузка на диски

Думаю для базовой диагностики упомянутой в этой статье информации достаточно. На этом всё! Profit!

Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат, а так же подписывайся на канал.

Читайте также: