atop - установка настройка

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:

По умол­ча­нию atop сохра­ня­ет мет­ри­ки каж­дые 10 минут, дан­ное зна­че­ние мож­но изме­нить в фай­ле /etc/default/atop или /etc/sysconfig/atop (пере­мен­ная INTERVAL).

Чтение бинарных логов

По умол­ча­нию бинар­ные логи хра­нят­ся в дирек­то­рии /var/log/atop, име­но­ва­ние фай­лов про­из­во­дит­ся в фор­ма­те atop-YYYYMMDD.

atop -r /var/log/atop/atop_20170113

 

Горя­чие клавиши:

если воз­ник­нет ошибка
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
ставим:

и ста­вим пакет:

Рота­ция логов настра­и­ва­ет­ся в файле:
/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, ADSKANET).

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)