среда, 14 декабря 2011 г.

20 инструментов мониторинга системы, которые должен знать каждый.

Большинство дистрибутивов Linux предоставляются с кучей инструментов мониторинга. Эти утилиты предоставляют информацию о состоянии дел с производительностью системы и просто полезную для анализа. Основное предназначение мониторинговых утилит состоит в поиске "узкого места" в производительности дисковой подсистемы, процессора, памяти, сети. В данной шпаргалке перечислены несколько самых распространенных утилит, которые должен знать каждый.
  • top - Process Activity Command.
top - утилита, предоставляющая real-time данные об активности процессов в системе. По умолчанию отображает список по интенсивности нагрузки на процессор и обновляет данные каждые 3 секунд (изменяется с помощью клавиши d).
Наиболее часто используемые горячие клавиши:
t Отображение данных об общем количестве процессов и нагрузке.
m Отображение информации об общем использовании памяти.
A Сортировка отображения информации по группам самых высоконагруженных задач. Позволяет быстро выявить "пожирателя".
f Открывает интерактивное окно настройки отображения.
o Позволяет интерактивно изменять порядок столбцов информации.
r renice комманда.
k kill комманда.
z переключение режимов цветное/монохромное отображение.
h      отображение краткой справки.
  • 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

 4  0   1376 140812  25980 461588    0    0   102   188  323  152 26  7 65  2

 0  0   1376 147500  26020 457560    0    0    43    88 1024 3284 10  2 84  4

 0  0   1376 155808  26056 460524    0    0    63   113 1234 4186 26  4 68  2

 0  0   1376 158536  26096 457708    0    0    43    79 1203 3964  9  2 85  4

 1  1   1376 157172  26140 459300    0    0    43   117 1186 3629 12  4 81  3

 4  0   1376 146516  26208 469756    0    0    43   180 1410 3828 23  4 67  5

 0  0   1376 152592  26244 462992    0    0    43   152 1249 4283 11  3 82  4

 1  0   1376 152344  26252 462940    0    0     0     9 1434 2594 13  2 84  1
Отобразить Memory Utilization Slabinfo (если ядро поддерживает данные slabinfo)
# vmstat -m
Получить информацию об активных и неактивных страницах памяти:
# vmstat -a
  • w - Кто зашел в систему и что он делает.
w показывает информацию о конкретных пользователях в системе и их действиях.# w username
# w root

 17:58:47 up 5 days, 20:28,  2 users,  load average: 0.36, 0.26, 0.24
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

root     pts/0    10.1.3.145       14:55    5.00s  0.04s  0.02s vim /etc/resolv.conf

root     pts/1    10.1.3.145       17:43    0.00s  0.03s  0.00s w
  • uptime - Сколько работает система без перезагрузки.
uptime показывает как долго запущена система. Структура вывода: Текущее время, сколько система работает с момента последнего запуска, сколько пользователей в системе в данный момент, средняя нагрузка в системе за последние 1, 5 и 5 минут.
# uptime
 18:02:41 up 41 days, 23:42,  1 user,  load average: 0.00, 0.00, 0.00
1 can be considered as optimal load value. The load can change from system to system. For a single CPU system 1 - 3 and SMP systems 6-10 load value might be acceptable.
  • ps - Отображение процессов.
ps выводит список текущих процессов. Чтобы отобразить все процесса, используется ключ -A или -e
# ps -e
  PID TTY          TIME CMD
    1 ?        00:00:02 init
    2 ?        00:00:02 migration/0
    3 ?        00:00:01 ksoftirqd/0
    4 ?        00:00:00 watchdog/0
    5 ?        00:00:00 migration/1
    6 ?        00:00:15 ksoftirqd/1
....
.....
 4881 ?        00:53:28 java
 4885 tty1     00:00:00 mingetty
 4886 tty2     00:00:00 mingetty
 4887 tty3     00:00:00 mingetty
 4888 tty4     00:00:00 mingetty
 4891 tty5     00:00:00 mingetty
 4892 tty6     00:00:00 mingetty
 4893 ttyS1    00:00:00 agetty
12853 ?        00:00:00 cifsoplockd
12854 ?        00:00:00 cifsdnotifyd
14231 ?        00:10:34 lighttpd
14232 ?        00:00:00 php-cgi
54981 pts/0    00:00:00 vim
55465 ?        00:00:00 php-cgi
55546 ?        00:00:00 bind9-snmp-stat
55704 pts/1    00:00:00 ps

ps похоже на top, но предоставляет больше данных. К примеру:
Показывать полную информацию:
# ps -Al
Включить режим экстра полной информации (отображает аргументы командной строки, с которыми запущен процесс):
# ps -AlF
Показывает потоки ( LWP and NLWP)
# ps -AlFH
Показывает потоки после процессов
# ps -AlLm
Вывести список всех процессов
# ps ax
# ps axu
Вывести дерево процессов
# ps -ejH
# ps axjf
# pstree
Вывести данные о безопасности
# ps -eo euser,ruser,suser,fuser,f,comm,label# ps axZ
# ps -eM
Показать все процессы, запущенные пользователем falkorr
# ps -U falkorr -u falkorr u
Отображать вывод по шаблонам пользователя:
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan
Отобразить процессы, связанные только с Lighttpd
# ps -C lighttpd -o pid=
ИЛИ
# pgrep lighttpd
ИЛИ
# pgrep -u falkorr php-cgi
Отобразить имя процесса с PID 55977
# ps -p 55977 -o comm=
Отобразить 10 самых тяжелых для памяти процессов
# ps -auxf | sort -nr -k 4 | head -10
Отобразить 10 самых тяжелых для CPU процессов
# ps -auxf | sort -nr -k 3 | head -10
  • free - Использование памяти
Команда free отображает полный размер оперативной памяти, использование физической и swap памяти в системе, а также размер буферов, используемых ядром.
# free
            total       used       free     shared    buffers     cached
Mem:      12302896    9739664    2563232          0     523124    5154740
-/+ buffers/cache:    4061800    8241096
Swap:      1052248          0    1052248
  • iostat - Средние нагрузки на процессор и жесткий диск.
iostat отображает статистику использования CPU, а также данные ввода/вывода устройств, разделов и сетевой файловой системы (NFS).
# iostat
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)  06/26/2009
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.50    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.87       512.03   16189010  260102688
sda3              0.00         0.00         0.00       1615          0
  • sar - Сборка сведений и подготовка отчетов о системной активности.
sar используется для подготовки отчетов о системе. Чтобы собрать данные об активности:
# sar -n DEV | more
Отобразить данные за последние 24 часа:
# sar -n DEV -f /var/log/sa/sa24 | more
Отобразить real-time данные:
# sar 4 5
Примерный вывод:
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)  06/26/2009
06:45:12 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
06:45:16 PM       all      2.00      0.00      0.22      0.00      0.00     97.78
06:45:20 PM       all      2.07      0.00      0.38      0.03      0.00     97.52
06:45:24 PM       all      0.94      0.00      0.28      0.00      0.00     98.78
06:45:28 PM       all      1.56      0.00      0.22      0.00      0.00     98.22
06:45:32 PM       all      3.53      0.00      0.25      0.03      0.00     96.19
Average:          all      2.02      0.00      0.27      0.01      0.00     97.70
  • mpstat - Данные об использовании мультипроцессорных систем.
mpstat отображает активность каждого доступного процессора (процессор под номером 0 - первый).
# mpstat -P ALL
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)   06/26/2009
06:48:11 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
06:48:11 PM  all    3.50    0.09    0.34    0.03    0.01    0.17    0.00   95.86   1218.04
06:48:11 PM    0    3.44    0.08    0.31    0.02    0.00    0.12    0.00   96.04   1000.31
06:48:11 PM    1    3.10    0.08    0.32    0.09    0.02    0.11    0.00   96.28     34.93
06:48:11 PM    2    4.16    0.11    0.36    0.02    0.00    0.11    0.00   95.25      0.00
06:48:11 PM    3    3.77    0.11    0.38    0.03    0.01    0.24    0.00   95.46     44.80
06:48:11 PM    4    2.96    0.07    0.29    0.04    0.02    0.10    0.00   96.52     25.91
06:48:11 PM    5    3.26    0.08    0.28    0.03    0.01    0.10    0.00   96.23     14.98
06:48:11 PM    6    4.00    0.10    0.34    0.01    0.00    0.13    0.00   95.42      3.75
06:48:11 PM    7    3.30    0.11    0.39    0.03    0.01    0.46    0.00   95.69     76.89
  • pmap - Использование памяти процессом.
Команда pmap отображает карту памяти процесса. Полезно, чтобы узнать "узкое место" памяти.
# pmap -d PID
47394:   /usr/bin/php-cgi
Address           Kbytes Mode  Offset           Device    Mapping
0000000000400000    2584 r-x-- 0000000000000000 008:00002 php-cgi
0000000000886000     140 rw--- 0000000000286000 008:00002 php-cgi
00000000008a9000      52 rw--- 00000000008a9000 000:00000   [ anon ]
0000000000aa8000      76 rw--- 00000000002a8000 008:00002 php-cgi
000000000f678000    1980 rw--- 000000000f678000 000:00000   [ anon ]
000000314a600000     112 r-x-- 0000000000000000 008:00002 ld-2.5.so
000000314a81b000       4 r---- 000000000001b000 008:00002 ld-2.5.so
000000314a81c000       4 rw--- 000000000001c000 008:00002 ld-2.5.so
000000314aa00000    1328 r-x-- 0000000000000000 008:00002 libc-2.5.so
000000314ab4c000    2048 ----- 000000000014c000 008:00002 libc-2.5.so
.....
......
..
00002af8d48fd000       4 rw--- 0000000000006000 008:00002 xsl.so
00002af8d490c000      40 r-x-- 0000000000000000 008:00002 libnss_files-2.5.so
00002af8d4916000    2044 ----- 000000000000a000 008:00002 libnss_files-2.5.so
00002af8d4b15000       4 r---- 0000000000009000 008:00002 libnss_files-2.5.so
00002af8d4b16000       4 rw--- 000000000000a000 008:00002 libnss_files-2.5.so
00002af8d4b17000  768000 rw-s- 0000000000000000 000:00009 zero (deleted)
00007fffc95fe000      84 rw--- 00007ffffffea000 000:00000   [ stack ]
ffffffffff600000    8192 ----- 0000000000000000 000:00000   [ anon ]
mapped: 933712K    writeable/private: 4304K    shared: 768000K

Наиболее важна последняя строка:
mapped: 933712K общий объем памяти, выделенный файлам.
writeable/private: 4304K объем памяти в private address space
shared: 768000K объем адресного пространства, разделенного с другими процессами.
  • netstat и ss - Network Statistics
Команда netstat отображает данные о сетевых соединениях, роутинговых таблицах, статистике интерфейсов и прочем. Команда ss используется для съема дампа socket статистики. Позволяет увидеть примерно ту же информацию, что и netstat.
  • iptraf - Real-time Network Statistics
iptraf - это ncurses-based утилита для мониторинга real-time активности в сети, включая информацию о TCP, UDP счетчики, ICMP и OSPF информацию, нагрузку на сеть, статистику нодов, ошибки контрольных сумм IP и прочее. Отображает информацию в подобном виде:

  • tcpdump - Детальный анализ сетевой активности.
tcpdump - простая утилита для дампа трафика в сети. Однако для понимания необходимо глубокое понимание TCP/IP протокола.
Примеры: вывод информации о движении трафика, связанного с DNS:
# tcpdump -i eth1 'udp port 53'
Отображение всех IPv4 http пакетов с и на порт 80 (отображение пакетов только с данными, но не SYN, FINи ACK):
# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Отображение всех ftp сессий к 202.54.1.5:
# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'
Отображение всех HTTP сессий к 192.168.1.5:
# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'
Использовать wireshark, чтобы посмотреть детальную информацию о файлах:
# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80
  • strace - Системные вызовы.
strace позволяет отследить системные вызовы и сигналы. Удобно для отладки проблем с вебсерверами и прочих неурядиц. 
  • /proc - Различная статистика ядра.
Раздел файловой системы /proc хранит в себе детальную информацию о различных устройствах в системе и прочую информацию ядра Linux. Распространыенные примеры использования:
# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts
Подробнее тут.
  • Nagios - Серверная и сетевая утилита мониторинга.
Nagios - это популярное приложение для системного и сетевого мониторинга. Можно легко отслеживать информацию о хостах и сервисах. Отправлять предупреждения в случае, если что-то пойдет не так. Также есть форк nagios под названием FAN (Fully autimated nagios), предоставляющий out-of-box cd image, включающий в себя nagios и множество инструментов от сообщества, позволяющих упростить работу.
  • Cacti - Web-based утилита для мониторинга.
Cacti - сетевое графическое решение, позволяющее вкусить всю силу возможностей хранения данных и графических инструментов RRDTool's. Предоставляет данные в интуитивно понятном и легком в использовании интерфейсе.
  • KDE System Guard - Real-time отображение системной статистики.
KSysguard - утилита для мониторинга задач и системы для KDE. Она может быть запущена через ssh сессию, что предоставляет возможности мониторить локальные или сетевые хосты.
Подробней тут.
  • Gnome System Monitor - Real-time отображение системной статистики.
Системный монитор предоставляет базовую системную информацию, а также статистику использования ресурсов системы и запущенных процессов.

И бонусом немного больше:
nmap - сканирование открытых портов.
lsof - список открытых файлов, сетевых соединений и прочее.
ntop web based tool - утилита для отображения сетевой статистики в том виде, как top отображает для процессов. Показывает статус сети и трафик для множества протоколов.
Conky - утилита для мониторинга, написанная для X Window System. Широко конфигурируемая, позволяет отображать самый широкий спектр информации вплоть до количества писем в почтовом ящике, погоде и новостях с rss с минимальным потреблением ресурсов.
vnstat - консольный сетевой монитор. Записывает данные о сетевой активности в журнал, позволяя получить данные о часовом, дневном, месячном и общем трафике для выбранных интерфейсов. Полезен в связке с conky.
htop - улучшенная версия top.

Комментариев нет:

Отправить комментарий