ѕоговорим?јлиса это умеет

ћерион Ќетворкс

5 минут чтени€

ѕонимать состо€ние ваших серверов с точки зрени€ их загрузки и производительности - крайне важна€ задача. ¬ этой статье мы опишем несколько самых попул€рных методов дл€ проверки и мониторинга загрузки ÷ѕ” на Linux хосте.

 загрузка ÷ѕ” в Linux


ћетоды проверки


ѕровер€ем загрузку процессора с помощью команды top

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

 оманда состоит всего из трех букв: top

” вас откроетс€ окно в терминале, которое будет отображать запущенные сервисы в реальном времени, долю системных ресурсов, которую эти сервисы потребл€ют, общую сводку по загрузке CPU и т.д

¬ывод команды top

Ѕудем идти по пор€дку: перва€ строчка отображает системное врем€, аптайм, количество активных пользовательских сессий и среднюю загруженность системы. —редн€€ загруженность дл€ нас особенно важна, т.к дает понимание о среднем проценте утилизации ресурсов за некоторые промежутки времени.

“ри числа показывают среднюю загрузку: за 1, 5 и 15 минут соответственно. —читайте, что эти числа - это процентна€ загрузка, т.е 0.2 означает 20%, а 1.00 - стопроцентную загрузку. Ёто звучит и выгл€дит достаточно логично, но иногда там могут проскакивать странные значени€ - вроде 2.50. Ёто происходит из-за того, что этот показатель не пр€мое значение загрузки процессора, а нечто вроде общего количества "работы", которое ваша система пытаетс€ выполнить.   примеру, значение 2.50 означает, что текуща€ загрузка равна 250% и ваша система на 150% перегружена.

¬тора€ строчка достаточна пон€тна и просто показывает количество задач, запущенных в системе и их текущий статус.

“реть€ строчка позволит вам отследить загрузку ÷ѕ” с подробной статистикой. Ќо здесь нужно сделать некоторые комментарии:

  • us: процент времени, когда ÷ѕ” был загружен и которое было затрачено на user space (созданные/запущенные пользователем процессы)
  • sy: процент времени, когда ÷ѕ” был загружен и которое было затрачено на на kernel (системные процессы)
  • ni: процент времени, когда ÷ѕ” был загружен и которое было затрачено на приоритезированные пользовательские процессы (системные процессы)
  • id: процент времени, когда ÷ѕ” не был загружен
  • wa: процент времени, когда ÷ѕ” ожидал отклика от устройств ввода - вывода (к примеру, ожидание завершени€ записи информации на диск)
  • hi: процент времени, когда ÷ѕ” получал аппаратные прерывани€ (например, от сетевого адаптера)
  • si: процент времени, когда ÷ѕ” получал программные прерывани€ (например, от какого-то приложени€ адаптера)
  • st: сколько процентов было "украдено" виртуальной машиной - в случае, если гипервизору понадобилось увеличить собственные ресурсы

—ледующие две строчки показывают сколько зан€то/свободно оперативно пам€ти и файла подкачки, и не так релевантны относительно задачи проверки нагрузки на процессор. ѕод информацией о пам€ти вы увидите список процессов и процент ÷ѕ”, который они трат€т.

“акже вы можете нажимать на кнопку t, чтобы прокручивать между различными вариантами вывода информации и использовать кнопку q дл€ выхода из top


Ќемного более модный способ: htop

—уществует более удобна€ утилита под названием htop, котора€ предоставл€ет достаточно удобный интерфейс с красивым форматированием. ”становка утилиты экстремально проста:

ƒл€ Ubuntu и Debian:

sudo apt-get install htop

ƒл€ CentOS и Red Hat:

yum install htop

ƒл€ Fedora:

dnf install htop

ѕосле установки просто введите команду ниже:

htop

¬ывод команды htop

 ак видно на скриншоте, htop гораздо лучше подходит дл€ простой проверки степени загрузки процессора. ¬ыход также осуществл€етс€ кнопкой q


ѕрочие способы проверки степени загрузки ÷ѕ”

≈сть еще несколько полезных утилит, и одна из них (а точнее целый набор) называетс€ sysstat.

”становка дл€ Ubuntu и Debian:

sudo apt-get install sysstat

”становка дл€ CentOS и Red Hat:

yum install sysstat

 ак только вы установите systat, вы сможете выполнить команду mpstat - оп€ть же, практически тот же вывод, что и у top, но в гораздо лаконичнее.

¬ывод команды mpstat

—ледующа€ утилита в этом пакете это sar. ќна наиболее полезна, если вы ее вводите вместе с каким-нибудь числом, например 6. Ёто определ€ет временной интервал, через который команда sar будет выводить информацию о загрузке ÷ѕ”.

¬ывод команды sar

  примеру, провер€ем загрузку ÷ѕ” каждые 6 секунд:

sar 6

≈сли же вы хотите остановить вывод после нескольких итераций, например 10, добавьте еще одно число:

sar 6 10

“ак вы также увидите средние значени€ за 10 выводов.


 ак настроить оповещени€ о слишком высокой нагрузке на процессор

ќдним из самых правильных способов €вл€етс€ написание простого bash скрипта, который будет отправл€ть вам алерты о слишком высокой степени утилизации системных ресурсов.

#!/bin/bash

CPU=$(sar 1 5 | grep "Average" | sed 's/^.* //')
CPU=$( printf "%.0f" $CPU )

if [ "$CPU" -lt 20 ]
then
        echo "CPU usage is high!" | sendmail admin@example.com
fi

—крипт будет использовать обработчик sed и среднюю загрузку от команды sar.  ак только нагрузка на сервер будет превышать 85%, администратор будет получать письмо на электронную почту. —оответственно, значени€ в скрипте можно изменить под ваши требовани€ - к примеру помен€ть тайминги, выводить алерт в консоль, отправл€ть оповещени€ в лог и т.д.

≈стественно, дл€ выполнени€ этого скрипта нужно будет запустить его по крону:

crontab -e

ƒл€ ежеминутного запуска введите:

* * * * * /path/to/cpu-alert.sh


«аключение

—оответственно, лучшим способом будет комбинировать эти способы - например использовать htop при отладке и экспериментах, а дл€ посто€нного контрол€ держать запущенным скрипт.


ѕолезна ли ¬ам эта стать€?