Я уже писал и даже не раз о некоторых бесплатных курсах в академии Zabbix.
Там подробно рассказано о возможностях мониторинга сайтов с помощью Zabbix. Он всегда это умел делать, но в 7-й версии вышло крупное обновление. То, что там реализовано на сегодняшний день, отличается от того, что я настраивал ранее. Вообще все старые наработки, подходы и шаблоны можно забыть и взять то, что Zabbix предлагает из коробки. Например, вот эта моя статья полностью потеряла актуальность.
Мониторинг сайтов в Zabbix Server сейчас реализован следующим образом:
◽️У Zabbix есть интеграция с фреймворком для веб проверок Selenium. Достаточно его запустить в любом виде, например, в виде Docker контейнера, и в конфигурации сервера указать url до Selenium. Никаких настроек больше делать не надо.
◽️Есть готовый шаблон Website by Browser, который помимо сбора основных метрик (время загрузки, размер страницы, время dns запроса, время TCP хендшейков и других) умеет делать скриншоты страниц. В шаблон включена панель с метриками и возможностью быстро посмотреть скриншоты. Сделано просто и относительно удобно.
◽️С помощью Selenium и сценариев на JavaScript можно делать любые проверки сайтов - переходы, заполнение форм, аутентификация и т.д.
◽️Далее включаются все возможности Zabbix по разветвлённым оповещениям с эскалацией и костылестроению. Можно что-то перезапускать, чистить кэши, отправлять логи и т.д.
❗️Важное замечание по поводу скриншотов. Они хранятся в бинарном виде в базе, так что не увлекайтесь их созданием и не храните слишком много. Это будет приводить к серьёзному увеличению размера базы.
В базовых возможностях у вас есть преднастроенный шаблон для основных метрик, а для расширения функциональности можно писать свои. В уроке есть несколько примеров. Например, с Jira, когда выполняется ряд проверок с созданием скриншотов на каждом этапе:
1️⃣ Главная страница портала
2️⃣ Аутентификация - ввод логина и пароля
3️⃣ Страница системы после аутентификации
Секреты для аутентификации хранятся в макросах, доступ к которым может быть ограничен. Это уже не сказать, что просто настроить, но и сложного ничего нет. Selenium - известный продукт. Для него и примеров полно, и ИИ может помочь если что. Обычно проверки все типовые, под себя не сложно адаптировать чей-то пример. У вас получится микс из поддерживаемых методов Selenium и объектов айтема Browser.
Как всё это настроить в актуальной версии сервера - рассказано в документации. Там всё просто, у меня сразу получилось.
Единственное, что не понял, почему в стандартный шаблон мониторинга сайта не добавили айтем с кодом ответа веб сервера и триггер на него. Для того, чтобы это сделать, придётся по старинке добавить Веб сценарий с проверкой кода ответа и вручную для его настроить триггер.
При этом в шаблоне Website by Browser используется метод collectPerfEntries();, который включает в себя код ответа веб сервера. В json портянке базового ключа website.get.data он называется response_status. Достаточно создать ещё один зависимый айтем с JSONPath = $.performance_data.details[0].navigation.response_status с типом данных - целое числовое. И добавить на него триггер, если значение не 200. Странно, что это не сделали. Если будешь сам дорабатывать, то потом придётся при каждом обновлении следить за этим и вручную переносить изменения. Неудобно. Логично было бы такую полезную метрику сразу туда добавить.
И ещё заметил, что в шаблоне ко всем числовым метрикам добавлен множитель 0.001. Не знаю, зачем. С ним цифры получаются нереальные, слишком маленькие. А без множителя похожи на правду. Убрал его.
Помимо этого отвязал интервал создания скриншотов от остальных метрик, так как делать даже раз в минуту скриншот очень расточительно и не имеет смысла.
#zabbix