Собираем метрики cPanel в Zabbix

Kate

Administrator
Команда форума
Многие провайдеры виртуального хостинга для предоставления услуги используют программу cPanel

cPanel
cPanel
cPanel является достаточно распространённым ПО, возможно, даже самой распространённой из всех коммерческих панелей управления для хостинга, особенно хостинг-провайдеров Европы и Северной Америки. Не последняя причина в том, что cPanel имеет расширенную функциональность для перепродажи хостинга.

Провайдер предлагает клиенту выбрать тарифный план. Среди параметров тарифного плана могут быть такие пункты:

Дисковое пространство Ресурсы RAM Ресурсы CPU И многое другое.

Для контроля использования ресурсов клиенту предлагается довольно бедный пункт меню - "Использование ресурсов". Без возможности установки каких либо уведомлений. Многие клиенты узнают, что причиной сбоя в работе сайта является, например исчерпание свободного дискового пространства, но уже по факту.

a2ae57e9f42a292cbc753d1ccd9ee479.png

Что в общем то и понятно, ведь cPanel не профессиональный комплекс мониторинга с построением дашбордов, отчетов, порогов, уведомлений и эскалаций.

Работая с мониторингом я применяю систему мониторинга Zabbix. Теперь рассмотрим, как можно метрики cPanel передать в Zabbix.

Для этого из коробки у cPanel есть API, на ряду с управлением можно запросить и параметры метрик. К сожалению не каждый провайдер хостинга настраивает cPanel с возможностью удаленной работы с WEB API, хотя возможность создания соответствующих токенов сохраняют.

Меня это не сильно расстроило ведь есть утилита uapi и доступ к консоли и cron. Вызываем утилиту uapi с следующими ключами:

uapi --output=json ResourceUsage get_usages
Пример вывода:

{"apiversion":3,"module":"ResourceUsage","func":"get_usages","result":{"status":1,"messages":null,"warnings":null,"errors":null,"data":[{"error":null,"usage":.....и так далее
Что бы иметь возможность забрать данные:

Запускаем запрос к этой утилите раз в минуту (или как вам нравится) Вывод направляем в файл, который будет доступен из интернета на одном из Ваших доменов. Например в кроне записано так:

* * * * * uapi --output=json ResourceUsage get_usages > /home/USERNAME/DOMEN/FILE.log
Далее переходим к конфигурированию Zabbix.

zabbix
zabbix
1. Создаем элемент данных типа HTTP agent и указываем точный URL до файла, не путать с путем для cron.

2. Тип данных выбираем Text и раз в минуту, или как вам удобней, забираем данные из файла в Zabbix. Текст у нас уже приходит в JSON формате.

Затем к нашему основному элементу данных создаем зависимые элементы данных с соответствующим парсингом. Например:

Для получения CPU будет следующий Preprocessing

JSONPath: $.result.data[12].usage
И так по каждому интересующему элементу данных.

Далее у меня получился следующий дашборд:

b54b8af350cb0e8b39cb30036202b1fa.png

Сюда ж можно вывести метрику внешнего мониторинга WEB, например Response time - время ответа и Download speed - скорость скачивания.

Zabbix позволяет установить по каждой метрике свои пороги и отправлять уведомления при их достижении, например в Telegram. К примеру если вы используете 70% выделенный Вам ресурсов CPU в течении 10 минут, то получите соответствующее уведомление, или если выделенное дисковое пространство будет подходить к концу, то можно так ж получать уведомление.

 
Сверху