Многие провайдеры виртуального хостинга для предоставления услуги используют программу 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":.....и так далее
Что бы иметь возможность забрать данные:
Запускаем запрос к этой утилите раз в минуту (или как вам нравится) Вывод направляем в файл, который будет доступен из интернета на одном из Ваших доменов. Например в кроне записано так:
* * * * * 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 минут, то получите соответствующее уведомление, или если выделенное дисковое пространство будет подходить к концу, то можно так ж получать уведомление.
UPDATE: 11.11.2021
Как показала практика использования такого подхода не оптимально. При обновлении версии Cpanel с стороны хостера меняются местами данные в выводе, дополняются новыми данными.
Zabbix ж мы нацелили на номер пункта данных:
JSONPath: $.result.data[12].usage
Теперь пере нацеливаем выборку на название, что нужно было бы и изначально сделать. Например: Вписав:
id - поле поиска
lvecpu - что искать
usage - название поля которое нужно вывести
Пример:
JSONPath: $.result.data.[?(@.id=='lvecpu')].usage
Но только этого изменения не достаточно, т.к. в выборке будет не число, а текст вида [10]. Далее на нужно выбрать само число, применим регулярку: (\d+)
В итоге предобработка выглядит так:
Если у вас есть вопросы или непреодолимое желание поблагодарить, - пишите.
Комментарии (4)
Mobiaaa
26.08.2021 11:04Это графики не Cpanel, а CloudLinux
Без CloudLinux (таких правда мало хостеров) этих данных не будет
Scorpey Автор
26.08.2021 11:09От части Ваша правда.
Вот официальный ман: https://docs.cpanel.net/cpanel/metrics/cpu-and-concurrent-connection-usage/
"This interface allows you to view and monitor resource usage on your cPanel account. For more information, read CloudLinux’s documentation. "
ZombieHamster
Я правильно понимаю что утилита uapi работает только на сайтах хостящихся на ucoz.net?
Scorpey Автор
Это утилита cPanel вот ссылка на мануал
https://api.docs.cpanel.net/cpanel/introduction/