24 April 2018

(Русский) Мониторинг веб сайтов

(Русский) Наша работа заключается в оказании технической поддержки клиентам и почти все они имеют свои веб сайты, у кого-то это просто сайт визитка, а у кого-то это интернет-магазин и основной инструмент получения прибыли компании, но желание у всех одно, сайт должен работать стабильно и круглосуточно.

Мы изучили рынок мониторинга сайтов и сервисов более чем достаточно, но так как мы занимаемся мониторингом на базе Zabbix, то хотели найти решение именно на этой платформе.

Изучив возможности мониторинга веб сайтов, встроенного в Zabbix, мы поняли, что нам этого мало. Встроенные средства отлично подойдут для мониторинга внутри одной компании, но нам требовался мониторинг сразу для множества клиентов с разными условиями, а также мониторинг не только доступности сайта, но и его доменного имени и SSL сертификата. Поэтому мы приняли решение разработать свой шаблон и скрипты для мониторинга сайта.

Основные метрики, которые требуется получить с вебсайта, чтобы быть уверенным в его доступности:

Чтобы решение было универсальным и работало на любом сервере, мы написали скрипт на Python, который всё это делает. Так же был создан шаблон в Zabbix для сбора данных.

Как всё это работает.

В шаблоне есть 3 приложения (Application) Web site, Domain name, SSL, которые содержат метрики (items) данного направления.

Все метрики имеют типа Zabbix trapper, потому что мы запускаем скрипт, собираем данные и отправляем пакетом на Zabbix сервер через утилиту zabbix_sender. Это позволяет нам разгрузить сам Zabbix сервер от выполнения скриптов (хорошо когда вы следите за 10 сайтами, а когда их 1000?)

В шаблоне также присутствует обнаружение (Low-level discovery) доменного имени сайта и наличие SSL сертификата на нём.

Ключевые настройки шаблона сделаны через макросы (User Macros), которые на можно всегда переопределить на хосте.

{$WEBSITE_METRICS_DEBUG}

 

Включить/Выключить режим отладки скрипта
{$WEBSITE_METRICS_TIMEOUT}

 

Таймаут на проверку подключения к сайту
{$WEBSITE_METRICS_TIMEOUT_RECOVERY} Таймаут на проверку восстановления доступа к сайту
{$WEBSITE_METRICS_URL}

 

Адрес сайта для проверки
{$WEBSITE_METRICS_PHRASE}

 

Фраза для проверки на сайте

 

Шаблон имеет набор item-ов которые запускают процесс мониторинга сайта (их можно отключить, заменив на выполнение скрипта через Cron)

Имя Ключ
Web “{$WEBSITE_METRICS_URL}” run tests

 

website_metrics.py[“–hostname”,{HOST.HOST},”–testsite”,{$WEBSITE_METRICS_URL},”–testphrase”,{$WEBSITE_METRICS_PHRASE},”–timeout”,{$WEBSITE_METRICS_TIMEOUT},”–debug”,{$WEBSITE_METRICS_DEBUG}]

 

Собственно, это простой вызов скрипта с передачей ему параметров, что выполнить и куда отправить данные.

После выполнения скрипта, формируется набор данных в виде:

Хост, метрика, значение

Затем пакет этих данных отправляется на Zabbix сервер.

website website_metrics.test.status 1
website website_metrics.test.time 0.11
website website_metrics.test.code 200
website website_metrics.test.speed 1367373
website website_metrics.test.message ”
website website_metrics.test.phrase_status 1

В итоге мы получаем ключевые метрики с сайта и на их основе формируются тригерры (Triggers).

Ключевыми триггерами являются:

Тригер Как проверяет За чем следит
Web site high average response time > 3 sec  Скорость ответа сайта, усреднённое за 15 минут Время отклика сайта

 

Web site is down 3 последних проверки Сайт недоступен

 

Web site Nodata

 

Фукнция нет данных Zabbix Нет данных от скрипта
Web site test phrase failed 3 последних проверки ключевой фразы Проверка на ключевую фразу
Certificate is expired Количество дней до истечения срока сертификата Если сертификат истек, то сайт будет выдавать ошибку
Certificate is invalid

 

Статус сертификата Сертификат есть, но нет к нему доверия у клиента
Certificate was changed

 

Изменился серийный номер сертификата Если сменили сертификат на сайте, желательно это видеть
Domain days to expire Количество дней до истечения срока домена

 

При истечении срока домена, регистратор прекращает обслуживание
Domain status Статус домена

 

Домен не истек, но не активен, блокировка сайта.

 

Все триггеры отсроены, с учетом практического применения, срабатывают они только при явных проблемах на сайте.

Где скачать

Данный шаблон и скрипт вы можете бесплатно скачать с GitHub,  а также в Zabbix Share.

Наши шаблоны мы будем выкладываем в открытый доступ в наш репозитарий Zabbix.

С радостью ответим на вопросы и предложения.