В каждом интернет-ресурсе есть REST API. Когда мы настраиваем мониторинг, нам часто нужно отслеживать и сам метод. Это позволяет избежать искажения статистики метрик и одновременно контролировать доступность.
В Zabbix есть возможность создать веб-сценарии.
Первым шагом создаем шаблон:
После добавления шаблона находим его в общем списке и нажимаем кнопку «Создать веб-сценарий»:
Вводим имя сценария и переходим на вкладку «Шаги»:
В поле «Имя» мы вводим понятное нам название этой проверки. Затем мы заходим в раздел «Нетворк» на сайте и получаем curl нашего запроса. Я использую Postman для разбора этого запроса, поэтому я импортирую его туда.
Из строки GET мы переносим ссылку в поле URL и переходим к следующему этапу — header. Построчно мы копируем имя ключа и его значение в блок переменных. Если мы хотим отслеживать POST-запрос, возможно, нам потребуется добавить значения в поля Post поля (в зависимости от того, как реализовано API).
В конце пишем искомое значение (если нам нужно отследить определённый параметр) и код ответа. Обычно это 200. Вот как это выглядит в моём случае:
Переходим к самому главному — добавление триггера на наш веб-сценарий.
Возвращаемся к списку шаблонов, находим тот, который создали в начале статьи, и на этот раз нажимаем «Триггеры» и в правом верхнем углу «Создать триггер»:
Здесь нам нужно назвать его (это имя будет приходить в уведомление) и написать выражение проблемы и выражение восстановления.
Выражение проблемы (берет среднее за три попытки, и если больше единицы, то сценарий падает и триггер говорит об этом, при корректной работе будет ноль):
avg(/Название_шаблона/web.test.fail[Название_сценария],#3)>=1
Выражение восстановления (смотрит последний проход, если он равен нулю, то сценарий отрабатывает корректно):
last(/Название_шаблона/web.test.fail[Название_сценария])=0
Здесь я написал готовые выражения, необходимо подставить только ваши имена шаблона и сценария.
На этом настройка мониторинга API метода закончена, для уменьшения ручной работы можно копировать первый веб-сценарий и править его, или сформировать файл XML и загрузить в Zabbix через импорт.