Системы мониторинга для Linux. Важно знать каждому админу! Тестировалось на Debian 6

Вам нужен мониторинг производительности сервера Linux?

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

Вопросы в данной статье касаются таких проблем:

Выявление узких мест.

Узкие места хранения данных на диске.

Мониторинг процессора и памяти для выявления узких мест и повышения производительности.

Слабые места в настройке и отладке сети.

Итак. Поехали.

1)

Первая в нашем списке будет всем известная команда top

команда top

результат выполнения команды top

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

Часто используемые горячие клавиши

t — отображает сводную информацию

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

A — Сортирует дисплей top-потребителей различных системных ресурсов. Полезно для быстрой идентификации производительности «голодных» задач в системе.

f — Данная опция позволяет выбрать/отобрать нужные или ненужные колонки в отображении результатов вывода команды top (своего рода конфигурация top)

o — позволяет интерактивно выбрать колонку top

r — позволяет изменить приоритеты процесса

k — убить процесс, все равно что kill id

z — позволяет поменять основной цвет на моно

 

 2)

vmstat — Активность системы, Железа и Системная информация

Команда vmstat сообщает сведения о процессах, памяти, подкачки, блоках ввода-вывода, ловушках, и о работе процессора.

Команда vmstat

Команда vmstat

vmstat 10    — будет выводить результат работы команды на экран после каждых 10ти секунд сохраняя старые результаты вывода на экране

vmstat -m   — отображает использование памяти в виде единоразового вывода информации

vmstat -a     -  мы получим информацию об активных/неактивных страницах памяти

 

3)

w — отображает кто вошел в систему и что делает

Команда w в Linux

Команда w в Linux

w username отображает указанного пользователя

Команда w username

Команда w username

 4)

uptime — отображает время «поднятия» системы после последнего включения

uptime системы

Команда uptime системы

5)

ps — отображает список текущих процессов подобно top, но имеет гораздо больше ключей для отображения конкретной информации

ps -A — отобразится полный список процессов системы

команда ps -A

команда ps -A

ps -Al — показывает длинный формат вывода

ps -AlF — показывает екстра полный режим с выводом командной строки запущенного процесса

ps -AlFH — показывает екстра полный режим в виде дерева дочерних процессов от главного

ps ax — показать все процессы на сервере

ps axu — показать все процессы на сервере с выводом командной строки

Посмотреть дерево процессов

# ps -ejH
# ps axjf
# pstree

Информация безопасности

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

Посмотреть все процессы запущенные от пользователя root

ps -U root -u root 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 для заданного процесса, в данном случае apache2

leo@debianvirtual:~$ ps -C apache2 -o pid=
4636
6862
30958
30959
30960
30962
30963
leo@debianvirtual:~$

ИЛИ ТАК

leo@debianvirtual:~$ pgrep apache2
4636
6862
30958
30959
30960
30962
30963
leo@debianvirtual:~$

Или по названию процесса запущенного заданным пользователем

leo@debianvirtual:~$ pgrep -u root apache2
4636
leo@debianvirtual:~$

Как узнать имя процесса по ID?
leo@debianvirtual:~$ ps -p 4636 -o comm=
apache2
leo@debianvirtual:~$

Как узнать 10 самых ресурсоемких по памяти процессов ?

leo@debianvirtual:~$ ps -auxf | sort -nr -k 4 | head -10

root      4636  0.0  7.1  47236 18092 ?        Ss   Aug05   1:02 /usr/sbin/apache2 -k start

mysql     2765  0.0  6.5 138080 16636 ?        Sl   Aug05   5:08  \_ /usr/sbin/mysqld —basedir=/usr —datadir=/var/lib/mysql —user=mysql —pid-file=/var/run/mysqld/mysqld.pid —socket=/var/run/mysqld/mysqld.sock —port=3306

www-data  6862  0.0  4.8  47372 12264 ?        S    Sep06   0:00  \_ /usr/sbin/apache2 -k start

www-data 30963  0.0  4.8  47372 12264 ?        S    Sep04   0:00  \_ /usr/sbin/apache2 -k start

www-data 30962  0.0  4.8  47372 12264 ?        S    Sep04   0:00  \_ /usr/sbin/apache2 -k start

www-data 30960  0.0  4.8  47372 12264 ?        S    Sep04   0:00  \_ /usr/sbin/apache2 -k start

www-data 30959  0.0  4.8  47372 12264 ?        S    Sep04   0:00  \_ /usr/sbin/apache2 -k start

www-data 30958  0.0  4.8  47372 12264 ?        S    Sep04   0:00  \_ /usr/sbin/apache2 -k start

leo      27972  0.0  2.0   7820  5140 pts/0    Ss   14:28   0:00          \_ -bash

leo      29643  0.0  1.5   7820  3988 pts/0    D+   16:32   0:00              \_ -bash

 

Самые ресурсоемкие задачи для процессора

leo@debianvirtual:~$  ps -auxf | sort -nr -k 3 | head -10
www-data  6862  0.0  4.8  47372 12264 ?        S    Sep06   0:00  \_ /usr/sbin/apache2 -k start
www-data 30963  0.0  4.8  47372 12264 ?        S    Sep04   0:00  \_ /usr/sbin/apache2 -k start
www-data 30962  0.0  4.8  47372 12264 ?        S    Sep04   0:00  \_ /usr/sbin/apache2 -k start
www-data 30960  0.0  4.8  47372 12264 ?        S    Sep04   0:00  \_ /usr/sbin/apache2 -k start
www-data 30959  0.0  4.8  47372 12264 ?        S    Sep04   0:00  \_ /usr/sbin/apache2 -k start
www-data 30958  0.0  4.8  47372 12264 ?        S    Sep04   0:00  \_ /usr/sbin/apache2 -k start
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
statd      907  0.0  0.2   1936   540 ?        Ss   Aug05   0:00 /sbin/rpc.statd
root         9  0.0  0.0      0     0 ?        S    Aug05   0:00  \_ [netns] root         8  0.0  0.0      0     0 ?        S    Aug05   0:00  \_ [khelper] leo@debianvirtual:~$

 

6)

free — использование памяти

Команда free отображает общее количество свободной и занятой физической и подкачки памяти в системе, а также буферы, используемые ядром.

Коаманда free

Команда free

7)

pmap — использование памяти процесса

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

результат выполнения команды pmap

mapped: 2644K  Общий объем памяти, отображается на файлы

writeable/private: 800K   Количество частных адресов

shared: 0K объем адресного пространства, это процесс обмена с другими


8,9)

netstat and ss  — отображают статистику сети

Команда NetStat отображает сетевые соединения, таблицы маршрутизации, статистики интерфейсов, маскированные соединения и многоадресное членство. Команда ss используется для дампа статистики. Это позволяет показывать информацию, аналогичную NetStat. Немножко позже я опишу эти две команды в следующих статьях(так как там очень много информации попробую разделить на две части данную статью)

10)

iptraf — статистика сети в реальном времени

Команда iptraf — это интерактивная и красочная утилита для мониторинга локальной сети. Это программа, которая генерирует различные статистические данные сети, включая TCP информацию, UDP , ICMP и OSPF, Ethernet нагрузки, узловую статистику, ошибки контрольной суммы IP, и другие.
По умолчанию почему то разработчики не включили в дистрибутив, ну да ладно, скачаемс (apt-get install iptraf)

Интерфейс

iptraf

iptraf

 

iptraf

iptraf

 

iptraf

iptraf

Интерфейс интуитивно понятен, так что не буду сильно расписывать, идем дальше.

 11)

 tcpdump — детальный анализатор сетевого траффика

 tcpdump является простой командой, дамп трафика в сети. Однако, вам нужно хорошее понимание TCP / IP протокол, чтобы использовать этот инструмент.

Для анализатора траффика DNS Вам необходимо ввести следуюющее

tcpdump -i eth1 ‘udp port 53′

tcpdump

 

Все проходящие пакеты на 80-м порту на сетевом интерфейсе eth1 с tcp протоколом

tcpdump -i eth1 ‘tcp port 80′

Пакеты, которые идет на указанный ip по порту 80 на сетевом интерфейсе eth0 и протоколу tcp

tcpdump -ni eth0 ‘dst 94.231.36.68 and tcp and port 80′

Записываем в файл output.txt

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

 

12)

/Proc разная статистика ядра
/Proc — этот процесс содержит подробные сведения о различных аппаратных устройствах и другой информации Linux ядра

Некоторые примеры использования

# cat /proc/cpuinfo  процессор
# cat /proc/meminfo  память
# cat /proc/zoneinfo окружение
# cat /proc/mounts подмонтировано

Офф документация

 

13) Команда SS в будущей статье

Список будет дополняться