Немного про мониторинг web страничек через zabbix. Собственно, zabbix умеет из коробки мониторить несколько аспектов доступности web-сайтов.
https://www.zabbix.com/documentation/5.0/ru/manual/web_monitoring
Каждым веб-сценарием собирается следующая информация:
- средняя скорость загрузки в секунду для всех шагов для всего сценария
- номер шага, который завершился с ошибкой
- последнее сообщение об ошибке
На каждом шаге веб-сценария собирается следующая информация:
- скорость загрузки в секунду
- время ответа
- код ответа
Можно использовать аутентификацию, можно отправлять POST запросы. И вот я встрял при настройке запроса с передаваемыми JSON данными для аутентификации типа:
curl --location --request POST 'https://internet-lab.ru/api/login'
--header 'Content-Type: application/json'
--data-raw '{
"login": "zabbix",
"password": "ПАРОЛЬ"
}'
Не работает и всё. Потом всё-таки получилось сделать. На что следует обратить внимание:
При настройке шага сценария указываем тип запроса Post type как Raw data. В поле Raw post пишем наш JSON, мне пришлось убрать переводы строк, с ними не хотело работать.
Поскольку у нас JSON, то добавляем заголовок Content-Type и в значении пишем application/json.
И ещё один момент, curl может отрабатывать без проблем, а zabbix — ни в какую. На страничке могут быть редиректы. Ставим галку Follow Redirects и радуемся. Остальные настройки такие же как при обычных web-проверках.
Очень не хватает возможности отладки, надеюсь, встроят.
Для мониторинга веб сайта будем использовать стандартный функционал zabbix. Следим за доступностью сайта, временем ответа сайта в миллисекундах, скоростью доступа к сайту. Используется только стандартный функционал, скриптов не будет.
Идем в Настройка -> Узлы и жмем Создать узел сети
В списке хостов появился новый trakrd.ru
Дальше настроим мониторинг сайта. На странице со списком хостов, в строке trakrd.ru нажимаем на ссылку Web
В разделе web сценариев у нас пусто, создаем новый сценарий проверки, нажав на Создать вэб сценарий
Переходим на вкладку Шаги и нажимаем Добавить. Откроется форма, заполняем ее
Имя - имя шага сценария URL - адрес страницы для проверки Требуемая строка - вводим какое-нибудь слово или фразу, которая присутствует на проверяемой странице. По наличию этой фразы система будет принимать решение о доступности сайта Требуемые коды состояния - код ответа сервера, который означает, что все в порядке — 200
Настройка графиков мониторинга сайта
Идем снова в Настройка -> Узлы и жмем в строке trakrd.ru Графики -> Создать график
Вводим имя графика и добавляем Элемент данных – Response time for step “trakrd.ru” of scenario “trakrd.ru”
По аналогии добавим график скорости загрузки сайта, выбрав в качестве элемента данных Download speed for scenario “trakrd.ru”
Оповещение о недоступности сайта
Добавим триггер, который будет срабатывать при недоступности сайта. Заходим Настройка -> Узлы и жмем в строке trakrd.ru Триггеры -> Создать триггер. Вводим имя триггера и добавляем Выражение
{trakrd.ru:web.test.fail[trakrd.ru].last(#3)}<>0
Для проверки добавим trakrd.ru в файл hosts сервера zabbix с адресом 127.0.0.1
cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 trakrd.ru
10 444
Для начало необходимо создать группу шаблона для web проверок:
«Configuration» -> «Templates» -> кнопка «Create template» назовем его web
Заполняем поле «New group»
Далее создать приложение у данного шаблона:
закладка «Applications» -> кнопка «create application» назовем его web1
И перейдем на закладку сценариев, для создания сценария проверки и создадим первый сценарий для сайта:
«Web scenarios» -> кнопка «Create web scenario»
мы заполняем:
- Name — имя сценария
- Application — выбираем ранее созданное приложение web1
- Update interval — частота проверок нашего сайта
- Agent — выбираем, что по душе ближе
Переходим на закладку «Steps», сдесь необходимо создать, что именно будем проверять, жмем ссылку «Add» в блоке Steps
Заполняем:
- Name — имя шага проверки
- URL — собственна сама страница, которую будем «дергать»
- Timeout — время, которое данная проверка будет ожидать загрузки страницы, прежде чем пометить ее как ошибочной
- Required string — текст, который мы ходим проверить в случае успешной загрузки страницы
- Required status codes — 200, ОК — страница загружена
Жмем «Update» -> кнопку «Add»
Триггеры уведомление недоступности сайта
Следующим этапом будет создание триггера для уведомления нас в случае если после N проверок мы получили ошибку.
Преходи на закладку «Triggers» -> кнопка «Create trigger»
Создаем непосредственно триггер
Name
Expression:
{web:web.test.fail[domain.com].last(#5)}<>0 and {web:web.test.fail[domain.com].last(#4)}<>0 and {web:web.test.fail[domain.com].last(#3)}<>0 and {web:web.test.fail[domain.com].last(#2)}<>0 and {web:web.test.fail[domain.com].last(#1)}<>0 |
В результате данного триггера, в случае не прохождения проверки нашей тестовой страницы в течении 5 последних раз — сформировать уведомление приоритета важности «Hight» и отправить тем, способом согласно, которому настроены уведомления у Вас в zabbix
После добавления N сайтов, можно построить красивый график, в котором будет отражена информация по скорости загрузки того или иного сайта, а также его времени ответа
Перейдем на закладку «Graphs» и нажмем кнопку «create graph»
заполним названия и типы графиков, ждем ссылку «Add», тут самое интересное, можно выбрать по каким критериям рисовать графики:
- Download speed for scenario — скорость загрузки всего сценария
- Download speed for step — скорость загрузки конкретного шага сценария
- Failed step of scenario — ошибки для всего сценария
- Response code for step — код ответа для шага сценария
- Response time for step — время ответа для шага сценария
Выбираем необходимое и в конечном итоге можно несколько занятся украшательством, выбрать цвета и иные параметры для того или иного сайта:
В результате имеем графики следующего вида:
Продолжаю свой цикл статей по настройке системы мониторинга на базе популярного бесплатного продукта. В этот раз мы подробно рассмотрим вопрос настройки мониторинга web сайта в подготовленном ранее zabbix сервере. В качестве примера возьмем какой-нибудь сторонний ресурс и проверим на нем предложенный стандартный функционал.
Содержание:
- 1 Введение
- 2 Добавление web сайта к мониторингу
- 3 Создание сценариев проверки сайта
- 4 Настройка графиков мониторинга веб сайта
- 5 Оповещение о недоступности сайта
- 6 Заключение
- 7 Дополнительные материалы по Zabbix
Введение
Для мониторинга веб сайта мы будем использовать стандартный функционал zabbix. Вот параметры, за которыми будем наблюдать:
- доступность сайта
- время ответа сайта в миллисекундах
- скорость доступа к сайту
Для этого мы выполним следующую последовательность действий:
- Добавим наблюдаемый сайт в систему.
- Настроим сценарии проверки.
- Создадим графики с данными.
- Добавим триггер на проверку доступность сайта.
Приступаем к настройке мониторинга. Использовать будем только стандартный функционал, доступный после установки. Никаких дополнительных пользовательских параметров или работы скриптов не будет.
Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:
- Установка CentOS 7.
- Настройка CentOS 7.
- Установка и настройка zabbix сервера.
То же самое на Debian 9, если предпочитаете его:
- Установка Debian 9.
- Базовая настройка Debian 9.
- Установка и настройка zabbix на debian.
Добавление сайта принципиально не отличается от добавления любого другого хоста. Идем в Configuration -> Hosts и жмем Create host:
Открывается стандартная форма. Вводим название хоста. Выбираем любую группу, для удобства лучше создать отдельную для сайтов. У меня ее нет, я просто выбираю группу Templates. Для примера будем мониторить сайт yandex.ru. В поле DNS name пишем yandex.ru, все остальное оставляем как есть и жмем Add:
В списке хостов появился новый с именем Yandex.ru.
Создание сценариев проверки сайта
Теперь нам необходимо настроить непосредственно сам мониторинг сайта. Для этого на той же странице со списком хостов, напротив нашего нового нажимаем на ссылку Web:
В разделе web сценариев у нас пусто, создаем новый сценарий проверки, нажав на Create scenario:
На первой вкладке Scenario заполняем необходимые поля:
- Имя сценария.
- Интервал проверки.
- Агент, от имени которого будет выполняться проверка:
Переходим на вкладку Steps и нажимаем там на Add. Откроется форма, заполняем ее. Указываем:
- Имя шага сценария.
- Адрес страницы для проверки.
- В строку Required string вводим какое-нибудь слово или фразу, которая присутствует на проверяемой странице. По наличию этой фразы система будет принимать решение о доступности сайта. Возьмем для примера слово Яндекс, которое присутствует в правом нижнем углу сайта.
- Указываем необходимый код ответа сервера, который будет означать, что все в порядке — 200:
Нажимаем Update. Шаг сценария добавлен, теперь нажимаем Update еще раз на странице самого сценария, чтобы добавить его к сайту:
Теперь нужно подождать пару минут, чтобы стали поступать новые данные проверки. Посмотреть их, как обычно, можно в разделе Monitoring -> Latest data. Выбираем наш хост и проверяем данные мониторинга:
Все в порядке, данные стали поступать. Теперь для удобства отобразим их на графике.
Настройка графиков мониторинга веб сайта
Тут нет ничего нового, все, как обычно. Идем снова в Configuration -> Hosts и жмем Graphs напротив нашего хоста:
Нажимаем на Create graph:
И заполняем необходимые поля:
Нажимаем на Add и добавляем источник данных:
Можете сами поиграться с параметрами графика и выбрать то, что вам больше подходит. Я оставлю все стандартное, хотя нужные мне графики я аккуратно рисую, чтобы было более наглядно и удобно пользоваться. Должно получиться примерно так:
Посмотреть на график можно тут же на вкладке Prewiew. Когда закончите с настройкой, нажимаете Add.
По аналогии добавляете график скорости доступа к сайту, выбирая в качестве источника данных Download speed for scenario «yandex.ru»:
Полезного тут больше нечего рисовать. Двух графиков достаточно.
Оповещение о недоступности сайта
Теперь добавим триггер, который будет срабатывать при недоступности сайта. Чтобы получать оповещения об этом событии, их необходимо настроить. Как настроить оповещения zabbix на email я рассказывал отдельно. Рекомендую ознакомиться и сделать соответствующие настройки. Эту тему я не буду сейчас поднимать, переходим сразу к реализации.
Опять идем в раздел Configuration -> Hosts и нажимаем на Triggers напротив нашего хоста. Открывается стандартная страница с пустым списком, нажимаем справа Create trigger:
Заполняем необходимые поля:
И жмем напротив Expression на кнопку Add. Открывается форма для описания триггера. Заполняем, как показано на картинке:
Эти параметры означают, что если в последних трех проверках значение параметра web.test.fail не будет равно 0, что означает доступность сайта, то срабатывает триггер. Проверяем данные и жмем Add:
Теперь нам нужно проверить работу триггера. Для этого надо сделать сайт yandex.ru недоступным. Я просто зайду на сервер и добавлю в файл hosts строку:
127.0.0.1 yandex.ru
Вы можете выбрать какой-то еще способ. Если это ваш сайт, можете его погасить для теста ?
Странно, но способ с hosts у меня не сработал. Не знаю почему, не стал долго разбираться. С консоли сервера я не мог скачать страничку яндекса, но заббикс каким-то образом это делал. Не помог даже его перезапуск. В итоге пришлось просто на время отключить dns сервер, чтобы добиться срабатывания триггера.
Ждем прохождения трех проверок и проверяем. Для этого открываем Dashboard и смотрим на статусы хостов:
Все в порядке, триггер сработал. Я включил обратно dns сервер, и стал ждать следующего срабатывания с информацией о восстановлении соединения. Все в порядке, триггер сработал еще раз и мне прилетело на почту об этом уведомление:
Вот и все, мониторинг веб сайта работает, параметры доступа фиксируются, оповещение о доступности сайта настроено. Для полноты картины можно создать Screen с выводом всех необходимых параметров на один экран. Его настройки уже будут зависеть от конкретной ситуации и тех данных, которыми вы располагаете. К примеру, если у вас настроен мониторинг веб сервера, то можно разместить рядом графики его загрузки и параметры доступа к сайту. Туда же можно добавить загрузку самого сервера по процессору и памяти и вывести график использования сетевого интерфейса.
В этом плане Zabbix очень гибок и позволяет настроить все на любой вкус и под любые требования.
Более подробно о мониторинге за временем отклика сайта читайте в отдельной статье на этот счет. Там описана теория процесса и практические рекомендации, вместе с готовым триггером.
Заключение
Добавлю несколько слов, как можно использовать данный мониторинг web сайта. У меня было два хостинга и хотелось выбрать один более быстрый. Загрузка самого сервера по железу была настолько низка, что ее можно было вообще не брать в расчет. Более важным параметром было именно время отклика сервера и скорость доступа к нему. Я запустил сайт на обоих серверах и настроил мониторинг. По его параметрам выбрал более быстрый сервер.
Конечно, тут нужно понимать, что данные подобного мониторинга очень условны и зависят о того, где располагается сам сервер заббикса. Возможна ситуация, когда мониторинг всех сайтов будет показывать примерно одни и те же цифры из-за ограничения самого сервера мониторинга. Нужно иметь это ввиду. Еще достаточно часто при проверке времени отклика сайта появляются большие провалы по времени до 5-10-15 секунд. Это сильно влияет на среднее время доступа. Возникают эти провалы из-за временных сетевых проблем не обязательно на самом сайте. Это тоже нужно учитывать при анализе полученных данных.
В любом случае нужно с головой подходить к анализу данных мониторинга сайта. В большинстве случаев важны не сами значения, а общие тенденции их изменения в сравнении и с другими хостами. Учитывайте это. На этом у меня все.