Как стать автором
Поиск
Написать публикацию
Обновить

Мониторинг нагрузки пользователей

Я владелец небольшого хостинга (около 200 активных клиентов) и меня заинтересовала тема мониторинга нагрузки на CPU и MySQL.
На некоторых крупных хостингах нагрузка на CPU измеряется в «CP» и на MySQL в «секундах».

Предлагаю Вашему вниманию идею и теоретическую реализацию данной схемы мониторинга на основе Process Accounting и Percona User Statistics.

Нагрузка на CPU


Единица измерения — CP (cpu points). Измеряется системой Process accounting в Linux.

Схема работы

Установим сначала демон psacct (RedHat) или acct (Debian).
yum install psacct или apt-get install acct

Демон собирает информацию по всем выполняемым процессам пользователя и записывает это в /var/account.
Далее, командой sa мы можем получить информацию по каждому пользователю и его нагрузке.
Я использую sa с флагом --user-summary:



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

Нагрузка на MySQL


Единица измерения — секунды. Измеряется с помощью Percona User Statistics.

Схема работы

Данные каждого запроса записываются в системную таблицу. В нашем случае, к колонке CPU_TIME прибавляется время каждого запроса.

К сожалению, для получения статистики на MySQL 5.5 требуется переустановка MySQL. Я нашел патч User Statistic, но только для MySQL 5.0.77

Вывод информации о нагрузке производится запросом к базе данных INFORMATION_SCHEMA:

SELECT `USER`,`CPU_TIME`  FROM  `USER_STATISTICS`  ORDER BY  `USER_STATISTICS`.`CPU_TIME` DESC;



Итог


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

Я реализовал такой подход:

  1. Каждый час собирается статистика нагрузки и записывается в таблицу биллинг системы WHMCS.
  2. Написанный модуль добавляет вкладку «Нагрузка» для хостинг-услуг.
  3. Во вкладке выводим график нагрузки по дням (CPU, MySQL).
  4. В случае превышения нагрузки пользователем, высылаем ему уведомления N-раз, в случае отсутствия реакции, производим блокировку аккаунта через API биллинга.


P.S. Система не претендует на совершенную и просто раскрывает методы подхода к измерению нагрузки пользователями.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.