3 июн. 2021 г.

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

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



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

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

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

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


Что в общем то и понятно, ведь 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":.....и так далее

Что бы иметь возможность забрать данные:

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

* * * * * uapi --output=json ResourceUsage get_usages > /home/USERNAME/DOMEN/FILE.log

 Далее переходим к конфигурированию Zabbix.



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

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

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

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

    JSONPath:    $.result.data[12].usage

И так по каждому интересующему элементу данных.

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


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

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

Если у вас есть вопросы или непреодолимое желание поблагодарить, - пишите.





Комментариев нет:

Отправить комментарий