Поиск по сайту:

Как контролировать использование ЦП в Linux с течением времени


Утилита top отображает текущее использование ЦП для каждого запущенного процесса, но что, если вы хотите отслеживать это во времени и отображать его на графике? Для этого есть несколько утилит, если у вашего облачного провайдера их еще нет.

В качестве примечания: если вы еще не установили утилиту htop (на фото выше), ее гораздо удобнее использовать, чем top по умолчанию.

Простое решение: используйте графики вашего облачного провайдера

Это решение, безусловно, самое простое в использовании, но оно не будет доступно для всех. Если вы используете AWS, CloudWatch упрощает мониторинг использования ЦП.

В консоли управления CloudWatch вы выбираете «Метрики», а затем просматриваете метрики для EC2. Метрика «CPUUtilization» отображает среднюю загрузку ЦП:

Средняя загрузка ЦП измеряется с шагом в 5 минут, но вы можете включить расширенный мониторинг экземпляра и увеличить его с шагом в 1 минуту. Однако это требует дополнительных затрат. Вы также можете легко установить сигналы тревоги, когда загрузка ЦП становится слишком высокой.

Если вы используете Google Cloud Platform, при выборе экземпляра на вкладке «Мониторинг» появляется график.

В Azure есть Azure Monitor, который отображает аналогичную информацию:

У большинства других облачных провайдеров, скорее всего, будет такой же график.

Использование /proc/loadavg

Лучший способ сделать это — посмотреть, откуда top получает информацию. /proc/loadavg содержит средние значения за 1, 5 и 15 минут. Вы можете зарегистрировать его с помощью cat

cat /proc/loadavg/
1.71 1.32 1.38 2/97 6429

Вы можете использовать это для создания графика, печатая каждую строку в CSV-файл с разделителями-запятыми, используя некоторую магию awk :

cat /proc/loadavg | awk '{print $1","$2","$3}' >> cpu.csv

Присоедините это к заданию cron , которое выполняется каждую минуту, меняйте журналы с помощью logrotate, и вы получите надуманный монитор процессора. Вы можете импортировать CSV-файл в Excel, где будет легко отобразить среднюю загрузку ЦП на линейной диаграмме.

Обратите внимание, что приведенная выше команда печатает средние значения за 1, 5 и 15 минут. Если вы запускаете его каждую минуту, на самом деле нет необходимости печатать средние значения за 5 и 15 минут, потому что вы можете вычислить это с помощью вычислений.

Установить системный стат

Утилита sar отлично подходит для мониторинга производительности системы. Он входит в состав sysstat, который, вероятно, не установлен в вашей системе по умолчанию. Вам нужно будет получить его из менеджера пакетов вашего дистрибутива. Для систем на основе Debian, таких как Ubuntu, это будет:

sudo apt-get install sysstat

Затем включите его, отредактировав /etc/default/sysstat и установив для параметра ENABLED значение true.

Это отслеживает вашу систему и генерирует отчет каждые 10 минут, меняя их через неделю. Вы можете изменить это поведение, отредактировав crontab sysstat в /etc/cron.d/sysstat или изменив параметры ротации в настройках sysstat в /etc/ sysstat/sysstat.

Вы можете создать отчет в реальном времени с помощью следующей команды:

sar -u 1 3

sysstat будет каждую минуту собирать фоновые данные об использовании ЦП и сохранять их в /var/log/sysstat/. Затем вы можете импортировать эти данные для анализа, используя программу для работы с электронными таблицами или специальный инструмент, такой как sargraph, который отображает красивую диаграмму:

Вы также можете использовать утилиты командной строки для построения подобных графиков, такие как ttyplot, но ни одна из них не сравнится по простоте использования (и внешнему виду) с графическим интерфейсом. Командная строка здесь лучше — графики лучше.

Monit может предупредить вас, если загрузка ЦП слишком высока

Monit — это пакет мониторинга с открытым исходным кодом для Unix, который проверяет работоспособность вашего сервера и может быть настроен для отправки вам уведомлений, если загрузка ЦП вашего сервера становится опасно высокой. Прочтите наше руководство по настройке, чтобы узнать больше.

Обратите внимание, что CloudWatch выполняет то же самое по умолчанию с сигналами тревоги и может работать с несколькими различными показателями, а не только с использованием ЦП.