Thursday, February 17, 2011

Лучшие систем мониторинга Linux машин

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

#1: top - список системных процессов и информации о них

top — консольная команда, которая выводит список работающих в системе процессов и информации о них. По умолчанию она в реальном времени сортирует их по нагрузке на процессор (обновляя список каждые 5 секунд).
Top_program
Полезные интерактивные команды при работе с top
[Пробел] Немедленно обновить содержимое экрана.
[h] Вывести справку о программе.
[t] Отобразить/скрыть общую информацию.
[m] Отобразить/скрыть информацию о памяти.
[k] Уничтожить процесс. Программа запрашивает у вас код процесса и сигнал, который будет ему послан.
[M] Сортировать по объёму используемой памяти.
[P] Сортировать по загрузке процессора.
[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
2  1 130400  54304  34572 202100    0    0    31     4   39   18  3  3 89  5
1  0 130400  54056  34668 202288    0    0    56   117  195  133  3  1 94  2
1  0 130400  54056  34668 202328    0    0    13     0  199  127  3  0 97  0
1  0 130400  52940  34672 203416    0    0   364     0  198  135  3  0 94  3
1  0 130400  52832  34700 203436    0    0     8   141  214  127  3  1 96  1
0  0 130400  52584  34704 203668    0    0    79     0  201  124  3  0 96  1
0  0 130400  51840  34704 204484    0    0   269     0  181  139  4  1 95  0

 

#3: w – отображает пользователей, находящихся в системе и то, что они делают

Команда 'w' печатает суммарную информацию об активности системы, включая данные о том, что делает каждый пользователь.
Пример вывода:
19:22:41 up 4 days, 18:06,  1 user,  load average: 0,07, 0,08, 0,08
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/4    192.168.0.7      19:04    0.00s  0.33s  0.01s w

 

#4: uptime – выдает текущий аптайм системы (время сколько она работает)

Утилита uptime показывает текущее время, время, которое проработала система, число пользователей в системе и среднюю загруженность системы за последние 1, 5, и 15 минут.
Пример вывода:
19:25:23 up 4 days, 18:09,  1 user,  load average: 0.06, 0.07, 0.07

 

#5: ps - выдача информации о состоянии процессов

Команда ps выдает информацию об активных процессах. Для того чтобы отобразить все процессы – используем ключ –A или –e
# ps -A
Пример вывода:
  PID TTY          TIME CMD
    1 ?        00:00:01 init
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 migration/0
    4 ?        00:00:01 ksoftirqd/0
    5 ?        00:00:00 watchdog/0
    6 ?        00:00:00 events/0
    7 ?        00:00:00 cpuset
    8 ?        00:00:00 khelper
    9 ?        00:00:00 netns
   10 ?        00:00:00 async/mgr
   11 ?        00:00:00 kintegrityd/0
   12 ?        00:00:05 kblockd/0
   13 ?        00:00:00 kacpid
   14 ?        00:00:00 kacpi_notify
   15 ?        00:00:00 kacpi_hotplug
   16 ?        00:00:00 ata/0
   17 ?        00:00:00 ata_aux
   18 ?        00:00:00 ksuspend_usbd
   19 ?        00:00:00 khubd
   20 ?        00:00:00 kseriod
   21 ?        00:00:00 kmmcd
   22 ?        00:00:00 bluetooth
   23 ?        00:00:00 khungtaskd
   24 ?        00:00:02 pdflush
   26 ?        00:01:56 kswapd0
….
…..
24829 ?        00:00:01 apache2
24830 ?        00:00:01 apache2
24831 ?        00:00:01 apache2
26377 ?        00:00:11 smbd
26601 ?        00:00:00 apache2
26611 ?        00:00:00 pickup
26756 ?        00:00:00 smbd
26770 ?        00:00:00 smbd
26798 ?        00:00:00 sshd
26869 pts/4    00:00:00 zsh
26904 pts/4    00:00:00 vmstat
26907 pts/4    00:00:00 vmstat
26946 pts/4    00:00:00 ps
Командой ps обрабатываются следующие опции:
-e
Вывести информацию обо всех процессах.
-d
Вывести информацию обо всех процессах, кроме лидеров групп.
-a Вывести информацию обо всех наиболее часто запрашиваемых процессах, то есть обо всех процессах, кроме лидеров групп и процессов, не ассоциированных с терминалом.
-f
Генерировать полный листинг (см. ниже раз яснение смысла колонок).
-l
Генерировать листинг в длинном формате (см. ниже).
-n файл_с_системой Считать, что операционная система загружена из файла_с_системой, а не из файла /unix.
-t список_терминалов
Выдавать информацию только о процессах, ассоциированных с терминалами из заданного списка_терминалов. Терминал - это либо имя файла-устройства, например ttyномер или console, либо просто номер, если имя файла начинается с tty.
-p список_идентификаторов_процессов Выдавать информацию только об указанных процессах.
-u список_идентификаторов_пользователей Выдавать информацию только о процессах с заданными идентификаторами или входными именами пользователей. Идентификатор пользователя выводится в числовом виде, а при наличии опции -f - в символьном.
-g список_идентификаторов_лидеров_групп Выводить информацию только о процессах, для которых указаны идентификаторы лидеров групп. Лидер группы - это процесс, номер которого идентичен его идентификатору группы. Shell, запускаемый при входе в систему, является стандартным примером лидера группы.

#6: free – использование памяти

Команда free служит для отображения общего количества свободной и использованной физической и swap памяти.
Пример вывода:
             total       used       free     shared    buffers     cached
Mem:        508972     502972       6000          0      39620     244656
-/+ buffers/cache:     218696     290276
Swap:      1510068     130296    1379772

 

#7: iostat – средняя нагружка на ЦП, дисковая активность

Команда iostat выводит статистику по I/O устройствам
iostat -d – вывод статистики только для устройств (в основном жёсткие диски)
iostat -dx – вывод расширенной статистики для устройств
Пример вывода:
Linux 2.6.28-128.1.14.el5    06/26/2010
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.60    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.97       512.03   16189010  260102688
sda3              0.00         0.00         0.00       1615          0

 

#8: sar - информация о функционировании системы

Есть два способа использования команды sar. При первом способе sar опрашивает и накапливает счетчики активности операционной системы на заданном числе интервалов, каждый из которых длится заданное число секунд. По умолчанию число интервалов равно 1. Устанавливается этот режим по умолчанию, управляет им процесс /etc/cron , интерпретируя справочные таблицы, лежащие в файле /usr/spool/cron/crontabs/sys. При втором способе (если не указан интервал опроса) sar выбирает данные из файла, куда они предварительно должны быть записаны. Этот файл либо указывается явно опцией -f, либо, по умолчанию
Пример:
В параллельном режиме 10 минут измерять загрузку ЦП, сохранив результаты в файле temp:
#  sar -o temp 60 10   &
Взять данные из файла temp:
# sar -A   -f temp    | pg

 

#9: mpstat - использование мультипроцессора

На многопроцессорных компьютерах mpstat позволяет получить статистику использования процессоров по отдельности, благодаря чему можно определить, насколько эффективно используется каждый процессор.
# mpstat -P ALL
Пример вывода:
Linux 2.6.31-22-generic-pae (serv.lan)  17.02.2011      _i686_  (1 CPU)
19:55:15     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
19:55:15     all    2,60    0,00    1,61    4,93    0,27    1,18    0,00    0,00   89,41
19:55:15       0    2,60    0,00    1,61    4,93    0,27    1,18    0,00    0,00   89,41

 

#10: pmap - использование процессами оперативной памяти

Команда pmap выдает данные о распределении памяти между процессами.
Пример использования:
root@serv ~ # ps -A | grep trans
2277 ?        03:56:26 transmission-da
root@serv ~ # pmap -d 2277
2277:   /usr/bin/transmission-daemon --config-dir /var/lib/transmission-daemon/info --allowed 192.168.0.* --peerport 51000 --auth --username myuser --password mypassword --watch-dir /megabig/transmission/torrents/ --download-dir /megabig/transmission/storage/
Address   Kbytes Mode  Offset           Device    Mapping
00110000    1204 r-x-- 0000000000000000 008:00001 libcrypto.so.0.9.8
0023d000      32 r---- 000000000012c000 008:00001 libcrypto.so.0.9.8
00245000      52 rw--- 0000000000134000 008:00001 libcrypto.so.0.9.8
00252000      16 rw--- 0000000000000000 000:00000   [ anon ]
00256000      64 r-x-- 0000000000000000 008:00001 libresolv-2.10.1.so
00266000       4 r---- 0000000000010000 008:00001 libresolv-2.10.1.so
00267000       4 rw--- 0000000000011000 008:00001 libresolv-2.10.1.so
00268000       8 rw--- 0000000000000000 000:00000   [ anon ]
0026a000       8 r-x-- 0000000000000000 008:00001 libdl-2.10.1.so
0026c000       4 r---- 0000000000001000 008:00001 libdl-2.10.1.so
0026d000       4 rw--- 0000000000002000 008:00001 libdl-2.10.1.so
0026e000      96 r-x-- 0000000000000000 008:00001 libsasl2.so.2.0.23
00286000       4 r---- 0000000000017000 008:00001 libsasl2.so.2.0.23
00287000       4 rw--- 0000000000018000 008:00001 libsasl2.so.2.0.23
00288000       8 r-x-- 0000000000000000 008:00001 libcom_err.so.2.1

…..
b6201000     328 rw--- 0000000000000000 000:00000   [ anon ]
b63bd000       4 ----- 0000000000000000 000:00000   [ anon ]
b63be000   10240 rw--- 0000000000000000 000:00000   [ anon ]
b6dbe000       4 ----- 0000000000000000 000:00000   [ anon ]
b6dbf000   10268 rw--- 0000000000000000 000:00000   [ anon ]
b77d0000      12 rw--- 0000000000000000 000:00000   [ anon ]
bf811000      84 rw--- 0000000000000000 000:00000   [ stack ]
mapped: 253228K    writeable/private: 245360K    shared: 0K
Последняя строка обозначает следующее:
mapped – общее количество памяти, отведенное под файл
writeable/private - общее количество приватного адресного пространства
shared - общее количество адресного пространства, которое данный процесс использует совместно другими процессами

#11: netstat- Сетевая статистика

Команда netstat показывает содержимое различных структур данных, связанных с сетью, в различных форматах в зависимости от указанных опций.
Получить список всех уникальных IP адресов:
# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq
Получить общее количество уникальных IP адресов:
# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq | wc –l
Выясняем дидосят ли наш сервер
# netstat -atun | awk '{print $5}' | cut -d: -f1 | sed -e '/^$/d' |sort | uniq -c | sort –n
Отображение суммарной информации для каждого протокола
# netstat -s | less
# netstat -t -s | less
# netstat -u -s | less
# netstat -w -s | less
# netstat –s
Выясняем что за приложение висит на определенных портах
netstat –tulpn

 

#12: ss - Сетевая статистика

Команда ss используется для захвата статистики сетевых сокетов. Она отображает информацию, сходную с выводом команды netstat.
Отобразим список всех установленных, закрытых или ожидающих TCP сокетов:
# ss –s
Выводим все открытые сетевые порты:
# ss –l
Для просмотра какой процесс использует открытый сокет используйте команду:
# ss –pl
Вывести все TCP сокеты
# ss -t –a
Вывести все UDP сокеты
# ss -u –a
Вывести все установленные HTTP подключения
# ss -o state established '( dport = :http or sport = :http )'

 

#13: iptraf – Сетевая статистика в реальном времени

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

#14: tcpdump – Детальный анализ сетевого трафика

Программа tcpdump служит для снятия дампов сетевого трафика.
Выводим траффик DNS запросов:
tcpdump -i eth0 'udp port 53'

 

#15: strace – системные вызовы

Позволяет записывает на стандартный вывод все трассировочные сообщения псевдоустройств от всех драйверов и модулей.
К примеру данная команда отобразит все системные вызовы процесса strace и запишет их в выходной файл:
$ strace -o output.txt /bin/foo
Будучи запущенной, программа strace выполняется до тех пор, пока ее не пррвет пользователь.
Выводить все трассировочные сообщения от драйвера с идентификатором 41:
$ strace 41 all all

 

#16: /Proc файловая система – различная статистика ядра

Файловая система /proc позволяет получить детальную информацию о различном железе и прочей информации ядра.
Примеры:
# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts

No comments:

Post a Comment