Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Администрирование систем Linux. Мониторинг использования ресурсов системы

Оригинал: Resource monitoring
Автор: Paul Cobbaut
Дата публикации: 12 марта 2015 г.
Перевод: A. Панин
Дата перевода: 31 марта 2015 г.

Глава 19. Мониторинг использования ресурсов системы

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

Давайте рассмотрим некоторые инструменты, которые могут использоваться для мониторинга использования ресурсов системы помимо рассмотренных ранее команд ps fax, df -h, free -om и du -sh.

19.1. Четыре базовых типа ресурсов системы

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

  • Ресурсы центрального процессора

  • Ресурсы сети

  • Ресурсы оперативной памяти

  • Ресурсы устройств для хранения данных

19.2. Утилита top

В начале процесса мониторинга использования ресурсов системы вы можете прибегнуть к использованию утилиты top. Данная утилита позволяет осуществлять мониторинг использования ресурсов оперативной памяти, центрального процессора и пространства подкачки. Утилита top автоматически обновляет вывод. После запуска данной утилиты вы можете использовать множество команд, таких, как команда k, предназначенная для завершения работы процессов, команды t или m, предназначенные для показа и скрытия информации о процессах и использовании памяти или команда 1, предназначенная для переключения между режимами вывода информации об использовании ресурсов каждого отдельного центрального процессора или всех центральных процессоров.

top - 12:23:16 up 2 days,  4:01, 2 users, load average: 0.00, 0.00, 0.00
Tasks:  61 total,   1 running,  60 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3% us,  0.5% sy, 0.0% ni, 98.9% id, 0.2% wa, 0.0% hi, 0.0% si
Mem:    255972k total,   240952k used,    15020k free,    59024k buffers
Swap:   524280k total,      144k used,   524136k free,   112356k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1 root      16   0  2816  560  480 S  0.0  0.2   0:00.91 init
 2 root      34  19     0    0    0 S  0.0  0.0   0:00.01 ksoftirqd/0
 3 root       5 -10     0    0    0 S  0.0  0.0   0:00.57 events/0
 4 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 khelper
 5 root      15 -10     0    0    0 S  0.0  0.0   0:00.00 kacpid
16 root       5 -10     0    0    0 S  0.0  0.0   0:00.08 kblockd/0
26 root      15   0     0    0    0 S  0.0  0.0   0:02.86 pdflush
... 

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

[paul@RHELv4u3 ~]$ top p 3456 p 8732 p 9654

19.3. Утилита free

Утилита free является стандартным инструментом из состава различных дистрибутивов Linux, предназначенным для осуществления мониторинга объема неиспользованной памяти. Вы можете использовать утилиту free для вывода информации через каждые x секунд, но вывод не будет таким же идеальным, как у предыдущего инструмента.

[paul@RHELv4u3 gen]$ free -om -s 10
total       used       free     shared    buffers     cached
Mem:        249        222         27          0         50        109
Swap:       511          0        511

total       used       free     shared    buffers     cached
Mem:        249        222         27          0         50        109
Swap:       511          0        511

[paul@RHELv4u3 gen]$

19.4. Утилита watch

Более интересных результатов можно достичь при комбинировании утилиты free с утилитой watch. Эта утилита может исполнять команды с задержкой, а также выделять изменения в выводе (в случае использования параметра -d).

[paul@RHELv4u3 ~]$ watch -d -n 3 free -om
...
Every 3.0s: free -om                             Sat Jan 27 12:13:03 2007
total       used       free     shared    buffers     cached
Mem:           249        230         19         0          56        109
Swap:          511          0        511

19.5. Утилита vmstat

Для получения статистики использования ресурсов центрального процессора, устройств хранения данных и памяти в однострочном формате в составе дистрибутивов имеется утилита vmstat. В примере ниже показан вывод утилиты vmstat, обновляющей значения параметров 100 раз в течение каждых двух секунд (или до момента нажатия сочетания клавиш Ctrl-C). В столбце r приводится количество процессов, ожидающих доступности ресурсов центрального процессора, а количество процессов в неактивном состоянии приводится в столбце b. Объем станиц памяти в пространстве подкачки остается неизменным и равным 144 килобайтам, объем свободной оперативной памяти резко снизился с 16.7 МБ до 12.9 МБ. Для получения информации об остальных данных, выводимых утилитой vmstat, следует обратиться к странице руководства man vmstat.

[paul@RHELv4u3 ~]$ vmstat 2 100
procs ----------memory--------- --swap-- ---io--- --system-- ---cpu----
r  b  swpd   free   buff  cache  si  so  bi   bo   in    cs us sy id wa
0  0   144  16708  58212 111612   0   0   3    4   75    62  0  1 99  0
0  0   144  16708  58212 111612   0   0   0    0  976    22  0  0 100 0
0  0   144  16708  58212 111612   0   0   0    0  958    14  0  1 99  0
1  0   144  16528  58212 111612   0   0   0   18 1432  7417  1 32 66  0
1  0   144  16468  58212 111612   0   0   0    0 2910 20048  4 95  1  0
1  0   144  16408  58212 111612   0   0   0    0 3210 19509  4 97  0  0
1  0   144  15568  58816 111612   0   0 300 1632 2423 10189  2 62  0 36
0  1   144  13648  60324 111612   0   0 754    0 1910  2843  1 27  0 72
0  0   144  12928  60948 111612   0   0 312  418 1346  1258  0 14 57 29
0  0   144  12928  60948 111612   0   0   0    0  977    19  0  0 100 0
0  0   144  12988  60948 111612   0   0   0    0  977    15  0  0 100 0
0  0   144  12988  60948 111612   0   0   0    0  978    18  0  0 100 0

[paul@RHELv4u3 ~]$

19.6. Утилита iostat

Утилита iostat может выводить статистическую информацию об использовании ресурсов устройств для хранения данных и центрального процессора. Использованный в примере ниже параметр -d сообщает утилите iostat о необходимости вывода информации об использовании ресурсов устройств для хранения данных (500 раз в течение каждых двух секунд). В первом блоке данных приведена статистическая информация об использовании описанных ресурсов с момента последней перезагрузки системы.

[paul@RHELv4u3 ~]$ iostat -d 2 500
Linux 2.6.9-34.EL (RHELv4u3.localdomain)        01/27/2007

Device:         tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hdc            0.00         0.01         0.00        1080         0
sda            0.52         5.07         7.78      941798   1445148
sda1           0.00         0.01         0.00         968         4
sda2           1.13         5.06         7.78      939862   1445144
dm-0           1.13         5.05         7.77      939034   1444856
dm-1           0.00         0.00         0.00         360       288

Device:         tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hdc            0.00         0.00         0.00          0          0
sda            0.00         0.00         0.00          0          0
sda1           0.00         0.00         0.00          0          0
sda2           0.00         0.00         0.00          0          0
dm-0           0.00         0.00         0.00          0          0
dm-1           0.00         0.00         0.00          0          0
...
[paul@RHELv4u3 ~]$

Вы можете получать больший объем статистических данных, использовав команду iostat -d -x, или получать исключительно статистические данные, касающиеся центрального процессора, воспользовавшись командой iostat -c.

[paul@RHELv4u3 ~]$ iostat -c 5 500
Linux 2.6.9-34.EL (RHELv4u3.localdomain) 01/27/2007

avg-cpu:  %user   %nice    %sys %iowait   %idle
0.31    0.02    0.52    0.23    98.92

avg-cpu:  %user   %nice    %sys %iowait   %idle
0.62    0.00   52.16   47.23     0.00

avg-cpu:  %user   %nice    %sys %iowait   %idle
2.92    0.00   36.95   60.13     0.00

avg-cpu:  %user   %nice    %sys %iowait   %idle
0.63    0.00   36.63   62.32     0.42

avg-cpu:  %user   %nice    %sys %iowait   %idle
0.00    0.00    0.20    0.20    99.59

[paul@RHELv4u3 ~]$

19.7. Утилита mpstat

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

paul@laika:~$ mpstat -P ALL
Linux 2.6.20-3-generic (laika)  02/09/2007

CPU %user  %nice   %sys  %iowait   %irq   %soft  %steal   %idle   intr/s
all  1.77   0.03   1.37     1.03   0.02    0.39    0.00   95.40  1304.91
  0  1.73   0.02   1.47     1.93   0.04    0.77    0.00   94.04  1304.91
  1  1.81   0.03   1.27     0.13   0.00    0.00    0.00   96.76     0.00
paul@laika:~$

19.8. Утилиты sadc и sar

Утилита sadc предназначена для записи данных, связанных с использованием ресурсов системы, в файлы /var/log/sa??, где символы ?? заменяются на номер текущего дня месяца. По умолчанию демон crond исполняет сценарий sal через каждые 10 минут, а сценарий sal, в свою очередь, запускает на секунду утилиту sadc. Также ежедневно перед полночью демон crond исполняет сценарий sa2, который, в свою очередь, запускает утилиту sar. Утилита sar читает данные, собранные утилитой sadc в течение дня, и помещает сгенерированный на их основе отчет в файл /var/log/sa/sar??. Эти отчеты, созданные утилитой sar, содержат большой объем статистических данных.

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

[paul@RHELv4u3 sa]$ sar -u | head
Linux 2.6.9-34.EL (RHELv4u3.localdomain)        01/27/2007

12:00:01 AM       CPU     %user     %nice   %system   %iowait    %idle
12:10:01 AM       all      0.48      0.01      0.60      0.04    98.87
12:20:01 AM       all      0.49      0.01      0.60      0.06    98.84
12:30:01 AM       all      0.49      0.01      0.64      0.25    98.62
12:40:02 AM       all      0.44      0.01      0.62      0.07    98.86
12:50:01 AM       all      0.42      0.01      0.60      0.10    98.87
01:00:01 AM       all      0.47      0.01      0.65      0.08    98.80
01:10:01 AM       all      0.45      0.01      0.68      0.08    98.78
[paul@RHELv4u3 sa]$

Существуют и другие полезные параметры утилиты sar, такие, как sar -I PROC, позволяющий выводить информацию об обработке запросов прерываний для каждого из обработанных запросов прерываний и для каждого центрального процессора, или sar -r, управляющий обработкой статистических данных, связанных с памятью. Для ознакомления с другими параметрами утилиты sar обратитесь к странице руководства man sar.

19.9. Утилита ntop

Утилита ntop не будет присутствовать в системе после стандартной процедуры установки дистрибутива Red Hat. После запуска данная утилита начнет генерацию подробных отчетов о сетевом трафике, которые доступны в формате html по адресу http://localhost:3000.

19.10. Утилита iftop

Утилита iftop выводит статистическую информацию об использовании пропускной способности определенных сетевых устройств различными соединениями, представленными сокетами. На серверах, работающих под управлением дистрибутива Red Hat, данная утилита также недоступна по умолчанию.

1.91Mb 3.81Mb 5.72Mb 7.63Mb 9.54Mb
--------------|-------------|--------------|-------------|--------|----
laika.local        => barry                      4.94Kb  6.65Kb  69.9Kb
                   <=                            7.41Kb  16.4Kb   766Kb
laika.local        => ik-in-f19.google.com          0b   1.58Kb  14.4Kb
                   <=                               0b    292b   41.0Kb
laika.local        => ik-in-f99.google.com          0b     83b   4.01Kb
                   <=                               0b     83b   39.8Kb
laika.local        => ug-in-f189.google.com         0b     42b    664b
                   <=                               0b     42b    406b
laika.local        => 10.0.0.138                    0b      0b    149b
                   <=                               0b      0b    256b
laika.local        => 224.0.0.251                   0b      0b     86b
                   <=                               0b      0b      0b
laika.local        => ik-in-f83.google.com          0b      0b     39b
                   <=                               0b      0b     21b

19.11. Утилита iptraf

Используйте утилиту iptraf для получения вывода с цветовой разметкой, содержащего информацию о проходящем через сетевые карты IP-трафике.

[root@centos65 ~]# iptraf 
[root@centos65 ~]# iptraf -i eth0

19.12. Утилита nmon

Другим популярным и распространенным инструментом для отслеживания сетевой активности является утилита nmon.

Утилита nmon

19.13. Утилита htop

Вы можете использовать утилиту htop вместо утилиты top.

Утилита htop


Предыдущий раздел: Оглавление Следующий раздел:
Глава 18. Управление распределением памяти   Глава 20. Управление пакетами программного обеспечения