Мониторинг Linux сервера

Материал из Ай да Linux Wiki
Перейти к навигации Перейти к поиску

Любому системному администратору приходится постоянно "мониторить" свой сервер на предмет его производительности. Большинство дистрибутивов Linux укомплектованы массой мониторингового софта. Большую помощь администратору окажут предлагаемые 20 базовых программ, при помощи которых можно выявить узкие места в системе:

  • Системы в целом
  • Дисков и других накопителей
  • Процессора и памяти
  • Сетей

Команда top — Активность процессов

Команда top показывает активность процессов, запущенных в системе в режиме реального времени. По умолчанию команда выводит наиболее ресурсоёмкие процессы и обновляет их список каждые 5 секунд.

Вот список некоторых горячих клавиш:

t Включает/отключает вывод общей информации

m Включает/отключает вывод информации о памяти

A Сортирует процессы на дисплее по степени потребления различных ресурсов системы. Полезно для быстрого выявления задач, которым не хватает ресурсов.

f Включает интерактивный интерфейс для настройки top. Позволяет решать с помощью программы top различные задачи.

o Позволяет интерактивно настраивать очередность представления параметров системы в выводе top

r Включает команду renice (приоритет)

k Включает команду kill

z Включает/отключает цветной режим представления top

Команда vmstat — Информация об активности системы, памяти и прочего

Команда vmstat выдает информацию о процессах, памяти, страницах памяти, IO, активности процессора.

 vmstat 3
 
 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 1  0      0 386224  37264 243944    0    0    38    21  107   246  3  1 96  1
 0  0      0 386264  37264 243944    0    0     0     0  268   379  3  0 97  0 
 0  0      0 386280  37272 243800    0    0     0     9  240   347  2  0 98  0
 0  0      0 386280  37272 243808    0    0     0     0  207   353  0  0 100  0
 0  0      0 386220  37272 243808    0    0     0     0  283   569  5  1 94  0
 0  0      0 386108  37272 243808    0    0     0     0  234   630  2  0 98  0

Информация об использовании памяти от Slabinfo

 vmstat -m

Информация об активных/неактивных страницах памяти

 vmstat -a

Дополнительная информация: Как вычислить узкие места в использовании ресурсов Linux системы?

Команда w — Кто вошел в систему и что он делает

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

 w имя_пользователя

Например:

 w vivek
 
 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 сообщит, сколько времени работает система

 uptime
 
 18:02:41 up 41 days, 23:42,  1 user,  load average: 0.00, 0.00, 0.00

Команда ps — Выводит процессы

Команда ps выводит "моментальный снимок" идущих в системе процессов. Чтобы просмотреть список всех процессов, нужно применить опции -A или -e:

 ps -A
 PID TTY      TIME C   MD
 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
 ....
 .....
 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
 ....

Полный формат представления

 ps -Al

Сверх-полный формат (показывает какой командой запущен каждый процесс):

 ps -AlF

Потоки, треды (LWP и NLWP)

 ps -AlFH

Потоки, треды (Threads) после процессов

 ps -AlLm

Показать все процессы на сервере

 ps ax
 ps axu

Показать дерево процессов

 ps -ejH
 ps axjf
 pstree

Показать информацию о безопасности

 ps -eo euser,ruser,suser,fuser,f,comm,label
 ps axZ
 ps -eM

Показать все процессы пользователя

 ps -U vivek -u vivek 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

Показать только ID процесса bash

 ps -C bash -o pid=
 8708
 8883

или

 pgrep bash

или

 pgrep -u vivek bash

Показать имя процесса по его ID

 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 покажет общее количество свободной и используемой физической памяти, своп, буферы и кэш ядра:

 free
              total       used       free     shared    buffers     cached
 Mem:       1034244     581060     453184          0      26488     215060
 -/+ buffers/cache:     339512     694732
 Swap:      1148608          0    1148608

Команда iostat — Загрузка процессора, активность диска

Команда iostat выводит статистику по процессору, а также статистику ввода/вывода дисков, разделов и сетевых файловых систем (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 делает срезы состояния системы через заданные промежутки времени и сохраняет эти срезы в файлы sa1, sa2, sa3...sa24.

Чтобы просмотреть срез работы в сети:

 sar -n DEV | more

Чтобы просмотреть срез работы в сети из файла sa24:

 sar -n DEV -f /var/log/sa/sa24 | more

Можно также смотреть срезы активности системы в режиме реального времени:

 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

где цифры 4 и 5 означают частоту и продолжительность срезов (см. ман sar).

Команда mpstat — Загруженность нескольких CPU

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

 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 выдает схему потребления памяти указанным процессом.

Например, чтобы получить схему потребления памяти процессом 47394, введите:

 pmap -d 47394

И получите нечто вроде:

 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 количество "личного" пространства адреса
 shared: 768000K количество пространства, общего (shared) с другими адресами

Команды netstat и ss — Сетевая статистика

Команда netstat выводит сетевые соединения, таблицы маршрутов, статистику по сетевым интерфейсам и прочее. Команда ss ведет дамп статистики сокетов, что позволяет получать информацию сходную с таковой команды netstat.

Команда iptraf — Сетевая статистика в реальном времени

Команда iptraf — интерактивная разноцветная команда, мониторящая сетевые соединения. В удобном формате представит следующие показатели:

  • Трафик по соединению TCP
  • Статистику сетевого трафика
  • Статистику трафика по протоколам
  • Статистику трафика по TCP/UDP портам и по размеру пакетов
  • Статистику трафика по Layer2 адресам

Команда tcpdump — Детальный анализ трафика

Эта простая команда требует для работы с ней хорошего понимания протокола TCP/IP.

Например, чтобы просмотреть трафик по DNS, следует ввести:

 tcpdump -i eth1 'udp port 53'

Чтобы вывести все IPv4 HTTP пакеты, входящие и исходящие из порта 80, то есть учитывать только пакеты данных, а не пакеты SYN, FIN и ACK-only, введите следующую команду:

 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'

Чтобы просмотреть детальную информацию по файлам, введите:

 tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

Можно использовать для этой цели программу wireshark

Команда strace — Системные вызовы

Программа отслеживает системные вызовы и сигналы. Полезно для отладки веб сервера и прочих серверных проблем. Как пользоваться этой программой рассказано в статье "trace the process".

Файловая система /proc — Всевозможная статистика ядра

Файловая система /proc содержит детальную информацию о различных устройствах и прочую информацию ядра Linux. Для ее просмотра используйте:

 cat /proc/cpuinfo
 cat /proc/meminfo
 cat /proc/zoneinfo
 cat /proc/mounts

Nagios — Мониторинг сервера и сетей

Nagios — популярная мониторинговая копьютерная система с открытыми исходниками. Она держит под контролем все ваши хосты, сети, сетевое оборудование и сервисы. Если что-то идет неправильно, то она даст предупреждение; пошлет сообщение, если дела нормализовались.

FAN расшифровывается как Полностью Автоматизированный Nagios и обеспечивает установку Nagios и множества инструментов от сообщества Nagios. CDRom в обычном ISO формате обеспечивает удобную установку сервера Nagios.

Cacti — Он-лайн мониторинговый инструмент

Cacti - интерфейс к RRDTool, позволяющий создавать разнообразные графики, используя информацию из MySQL. Обеспечивает быструю обработку, продвинутое графическое представление, множественные методы сбора данных, управление пользователями прямо "из коробки". Имеет интуитивный и простой интерфейс. Собирает данные о сетях, CPU, памяти, пользователях, Apache, DNS серверах и о многом другом. Смотрите статью "how to install and configure Cacti network graphing under CentOS / RHEL"

KDE System Guard — Отчеты и графики о состоянии системы в реальном времени

KSysguard — это приложение KDE, производящее мониторинг системы в реальном времени, в том числе и через сеть в сеансе ssh. Позволяет мониторить локальную и удаленные системы. Графическое представление использует так называемые сенсоры, собирающие выводимую информацию. Сенсоры может представлять простые параметры, либо более сложную информацию в виде таблиц. Для каждого типа данных существует один или несколько дисплеев, которые организованы в блоки, которые можно сохранять и загружать независимо друг от друга. Таким образом, KSysguard не просто простой менеджер задач, но также и мощный инструмент контроля за большим сервером.

Gnome System Monitor — Отчеты и графики о состоянии системы в реальном времени

System Monitor позволяет отслеживать основную информацию о системе и мониторить системные процессы, системные ресурсы и файловые системы. С его помощью можно изменять поведение вашей системы. Хотя и не такой мощный как KSysguard, он обеспечивает мониторинг основных параметров системы как то:

  • Показывает базовую информацию о системном "железе" и софте
  • Показывает версию ядра Linux
  • Показывает версию GNOME
  • Оборудование
  • Физическая память
  • Процессоры и их скорости
  • Статус системы
  • Свободное место на дисках
  • Процессы
  • Память и своп
  • Сети
  • Файловые системы
  • Примонтированные ФС и информацию о них

Бонус: Еще несколько инструментов

  • nmap — отыщет на сервере открытые порты
  • lsof — Выводит список открытых файлов, сетевые соединения и многое другое.
  • ntop — Он-лайн приложение, позволяет увидеть сетевые соединения примерно так же как команда top выводит процессы, мониторит трафик по каждому из протоколов: UDP, TCP, DNS, HTTP и других.
  • Conky — Инструмент мониторинга системы для Х-ов. Гибко настраивается и позволяет отслеживать многие параметры: CPU, память, пространство свопа, использование дисков, температуру, процессы, сетевые соединения, батарею, системные сообщения, почту и так далее.
  • GKrellM — Может использоваться для мониторинга: статуса CPU, памяти, дисков, сетей, локальных и удаленных почтовых ящиков и прочего.
  • vnstat — Консольный анализатор трафика. Ведет лог трафика по часам, дням и месяцам для избраных соединений.
  • htop — Усовершенствованная версия top, интерактивный монитор процессов, способный выдавать картину в виде дерева.
  • mtr — Инструмент диагностики сетевых соединений, сочетает в себе трейсрутер и пингователь.

Ссылки

open-club.ru