Thank you for reading this post, don't forget to subscribe!
«atop» — продвинутый интерактивный полноэкранный монитор производительности. Является аналогом top, но в отличие от него выводит только новые изменения об активных системных процессах. Позволяет контролировать загрузку ЦПУ, ОЗУ, HDD, компьютерной сети, а также распределение нагрузок по обрабатываемым процессам. Является удобным инструментом для администрирования системы.
Важной особенностью является возможность сохранения данных в файл собственного двоичного формата, процесс atop запускается сразу после установки и постоянно записывает информацию в /var/log/atop.log.
Установка
yum install epel-release && yum install atop
systemctl enable atop
Запуск
Для запуска достаточно запустить службу atop:
1 2 |
<strong><code>service atop start </code></strong> |
По умолчанию atop сохраняет метрики каждые 10 минут, данное значение можно изменить в файле /etc/default/atop или /etc/sysconfig/atop (переменная INTERVAL).
Чтение бинарных логов
По умолчанию бинарные логи хранятся в директории /var/log/atop, именование файлов производится в формате atop-YYYYMMDD.
atop -r /var/log/atop/atop_20170113
Горячие клавиши:
1 2 3 4 5 6 |
t - переход к следующему временному интервалу; Shift + t - переход к предыдущему временному интервалу; Shift + m - сортировка процессов по занимаемой резидентной памяти; Shift + с - сортировка процессов по потреблению CPU (по умолчанию); Shift + d - сортировка процессов по использованию диска; Shift + n - сортировка процессов по использованию сети; |
если возникнет ошибка
Kernel module 'netatop' not active or no root privs
при обращении к сетевой части "shift+n", то выкачиваем репо:
wget http://mirror.rackspace.com/elrepo/elrepo/el7/x86_64/RPMS/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
ставим:
1 |
rpm -Uvh elrepo-release*rpm |
и ставим пакет:
1 |
yum install kmod-netatop |
Ротация логов настраивается в файле:
/usr/share/atop/atop.daily
но можем создать
/etc/logrotate.d/atop
и добавить:
/var/log/atop/atop_202[0-9][0-9][0-9][0-9][0-9] {
missingok
daily
nodateext
rotate 3
notifempty
compress
nocreate
postrotate
/usr/bin/find /var/log/atop/ -maxdepth 1 -mount -name atop_202\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\* -mtime +40 -exec /bin/rm {} \;
endscript
}
==============================================
вывод окна по 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 - имя процесса. если оно заключено в скобки < > - это означает что закончился во время последнего интервала.
m
по mem
PID -
MINFLT - количество страниц восстановленых после ошибок. если страница ненайдена в памяти, то она береться из swap(SWIN) , это и есть восстановление
MAJFLT - количество крупных ошибок страниц памяти указанного процесса. если страница ненайдена в памяти, то она береться из swap(SWIN) , это и есть ошибка
VSTEXT - размер кода в памяти
VSIZE - размер всей памяти занятой процессом
RSIZE - зарезервировано памяти процессом, пользователем (занято реально). = RSS per process
VGROW -
RGROW -
RUID
EUID
MEM -
CMD -
d
по dsk
PID
RDDSK
WRDSK
WRDSK_CANCEL | WCANCEL - не скинутые с кеша на диск данные, которые ужи были удалены. и их скидывать на диск не нужно.
DSK
CMD
n
по netw
=== when kernel patch cnt is installed ===
s
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 -
v
общии хар-ки процессов(пользователь, когда запущен)
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 -
c
полная строка запуска процесса
PID
CPU
COMMAND-LINE
o
user-defined line of the process(file atoprc the keyword ownprocline)
u
показывает ресурсы по пользователям(работает a)
NPROCS - кол. активных или мертвых процессов за последний интервал времени
SYSCPU
USRCPU
VSIZE
RSIZE
RDDSK
WRDSK
RNET кол принятых сетевых пакетов
SNET кол отосланных сетевых пакетов
CPU
USER
p
активнасть процессов по программам(работает 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 перерисовать стр
OUTPUT DESCRIPTION
PRC Process level totals.
sys - процессорное время потребляемое процессами system mode-е
user - процессорное время потребляемое процессами user mode-е
#proc - кол процессов
#trun - кол потоков запущенных в текущий момент
#tslpi - кол пробуждаемых заснувших потоков
#tslpu - кол НЕпробуждаемых заснувших потоков
#zombie - кол зомби
#exit - кол закончившихся процессов за интервал. ? - означает что аккаунтинг процессов не включен
CPU - загрузка процессора
sys - процессорное время, затраченое на процессы из kernel mode
user - процессорное время, затраченое на процессы из user mode
irq - процессорное время, затраченое на irq
idle - время простоя процессора, пока нету процесов ждущих disk-I/O
wait w - время простоя процессора, пока процесы ждут disk-I/O
guest - кол процессора занимаемое гостевыми с-мами
=== # modprobe cpufreq_stats ===
avgf - средняя частота процессора
avgscal - средний процент масштабирования процессора
=== - ===
curf - текущая частота процессора
curs - текущий процент масштабирования процессора
=== - ===
steal - процессорное время потраченное на другие вирт. машины запущенные на этом железе
stl/cpu -
cpu - хар-ки по каждому отдельному процессору(ядру). Показываются лишь активные ядра, неактивные не показуються.
CPL - load average. количество потоков, которые доступны для выполнения процессором (то есть часть очередь задач) или, что ждут дискового ввода / вывода
avg1 - averaged over 1 minutes.
avg5 -
avg15 -
csw - число контекстных переключений
intr - количество программных прерываний
numcpu - кол процессоров
MEM
tot - кол физической памяти
free - свободная
cache - используется в качестве кэш страниц
dirty - объем памяти в кэш страницы, которые должны быть записаны на диск
buff - исп для метаданных файловой с-мы
slab - используется ядром для выделения памяти malloc(). dynamically allocated kernel memory
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
OPTIONS
#Interactive usage:
atop [-g|-m|-d|-n|-u|-p|-s|-c|-v|-o] [-C|-M|-D|-N|-A] [-af1x]\
[-L linelen] [-Plabel[,label]…] [ interval [ samples ]]
#Writing and reading raw logfiles:
atop -w rawfile [-a] [-S] [ interval [ samples ]]
atop -r [ rawfile ] [-b hh:mm ] [-g|-m|-d|-n|-u|-p|-s|-c|-v|-o]\
[-C|-M|-D|-N|-A] [-f1x] [-L linelen] [-Plabel[,label]…]
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] - вывести статистику по одному или несколькому критерию
# atop -PCPU
# atop -PCPU,DSK
# atop -PCPU,DSK -r /var/log/atop/atop_20110516
VARIABLES
$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 дня назад
atop -r y #за вчера читать статистику
-w сохранить статистику в ф-л бинарного лога
-r читать статистику с ф-ла лога
-b - begin time. вставляет в ф-л лога отметки времени HH:MM, по которым потом лог можно исследовать.
-e - end time.
-a - сохранение в лог всех процессов, в том числе и неактивных
-S - закончить сбор статистики принудительно в полночь
-L - длина строки вывода
В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал.
/etc/init.d/atop start
Потом по этому журналу atop'ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.
t +interval (1o min)
T -interval (10 min)
b - перейти на просмотр статистики на определеное время
r - начать просмотр ф-ла заново
atop -r /var/log/atop/atop_20100523 # просмотреть
С пакетом идет скрипт, который запускает atop каждый день в 00:00 с interv=10min и удаляет старые логи за 4 недели назад
0 0 * * * root /etc/atop/atop.daily
EXAMPLES
atop 5
atop -M 60 30 > /log/atop.mem
atop -w /tmp/atop.raw 10 60 #Каждые десять секунд записывать информацию в файл, всего 60 раз
atop -r /tmp/atop.raw #Прочитать содержимое файла в интерактивном режиме
atop -r yy #logfile of the day before yesterday
atop -PCPU,DSK -r /tmp/atop.raw
atop -r 20100107 -b 14:00
FILES
/etc/atoprc
~/.atoprc
flags 1Aaf
maxlinecpu 4
maxlinedisk 10
maxlineintf 5
#atopsarflags CMH
/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
atopsar
- вывод статистики 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)