Мониторинг веб-сайтов с помощью элементов данных браузера

Введение

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

Для кого предназначено это руководство

Это руководство предназначено для новых пользователей Zabbix и содержит минимальный набор шагов, необходимых для включения базового мониторинга веб-сайтов с помощью элементов данных браузера. Если вам нужны возможности глубокой настройки или более расширенная конфигурация, см. страницу Элементы данных браузера или раздел Конфигурация руководства Zabbix.

Предварительные требования

Перед тем как продолжить работу с этим руководством, вам необходимо загрузить и установить сервер Zabbix и веб-интерфейс Zabbix в соответствии с инструкциями для вашей ОС.

В зависимости от вашей среды некоторые шаги в этом руководстве могут немного отличаться. Это руководство основано на среде, работающей под управлением Ubuntu.

Настройка WebDriver

Элементы данных браузера требуют фреймворка автоматизации (либо Selenium Server, либо обычного WebDriver, например ChromeDriver) в качестве конечной точки веб-тестирования, которая управляет браузером и взаимодействует с ним, выполняя тестовые команды, такие как нажатие кнопок или ввод текста.
В качестве примера в этом руководстве будет использоваться Selenium Server с Chrome в контейнере Docker.

Предполагается, что Docker уже настроен. В этом руководстве настройка Docker не рассматривается.
Инструкции по установке см. в разделе Install Docker Engine on Ubuntu.

1. Запустите Selenium Server с Chrome в контейнере Docker со следующими параметрами:

  • docker run --name browser - запускает новый контейнер Docker с именем "browser";
  • -p 4444:4444 - сопоставляет порт 4444 на вашем хосте с портом 4444 в контейнере (это порт, который Selenium Server использует для приема команд);
  • -p 7900:7900 - сопоставляет порт 7900 на вашем хосте с портом 7900 в контейнере (это порт, который использует сервер Virtual Network Computing (VNC), позволяя удаленно просматривать графический интерфейс браузера; требуется VNC-клиент);
  • --shm-size="2g" - выделяет контейнеру 2 ГБ общей памяти (это важно для корректной работы Chrome, так как ему может требоваться значительный объем общей памяти, чтобы избежать сбоев);
  • -d - запускает контейнер в отсоединенном режиме, то есть в фоновом режиме;
  • selenium/standalone-chrome:latest - указывает используемый образ Docker; в данном случае это последняя версия Selenium Server with Chrome.
docker run --name browser \
-p 4444:4444 \
-p 7900:7900 \
--shm-size="2g" \
-d selenium/standalone-chrome:latest

2. Убедитесь, что контейнер Docker browser запущен и доступен.

  • Получите IP-адрес контейнера (в этом примере, 192.0.2.1):
ip addr

# 1: lo: <LOOPBACK,UP,LOWER_UP>
#    ...
# 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> ...
#    inet 192.0.2.1/16 brd 192.0.255.255 scope global docker0
#    ...
  • Проверьте соединение с контейнером с помощью Ncat:
nc -zv 192.0.2.1 4444

# Connection to 192.0.2.1 4444 port [tcp/*] succeeded!
  • Получите содержимое веб-страницы из Selenium Server с помощью curl:
curl -L 192.0.2.1:4444

# <!DOCTYPE html>
# <html lang="en">
# 
# <head>
#   <meta charset="utf-8"/>
#   <link href="favicon.svg" rel="icon" type="image/svg">
#   <meta content="width=device-width, initial-scale=1" name="viewport"/>
#   <link href="logo192.png" rel="apple-touch-icon"/>
#   <link href="manifest.json" rel="manifest"/>
#   <title>Selenium Grid</title>
# </head>
# 
# <body>
# ...

Для устранения неполадок см. документацию Docker.

Настройка сервера Zabbix

Элементы данных браузера выполняются и обрабатываются процессами Zabbix browser poller, которые необходимо включить, изменив параметр конфигурации сервера StartBrowserPollers. Кроме того, параметр WebDriverURL должен указывать на ранее настроенную конечную точку веб-тестирования.

По умолчанию параметр StartBrowserPollers установлен в 1, поэтому вам нужно указать только конечную точку веб-тестирования.

1. Откройте файл конфигурации сервера Zabbix.

vi /etc/zabbix/zabbix_server.conf

2. Найдите и задайте параметр WebDriverURL в файле конфигурации сервера Zabbix:

### Option: WebDriverURL
#   WebDriver interface HTTP[S] URL. For example http://localhost:4444 used with Selenium WebDriver standalone server.
#
# Mandatory: no
# Default:
# WebDriverURL=

WebDriverURL=192.0.2.1:4444

3. Перезапустите сервер Zabbix.

systemctl restart zabbix-server

Настройка веб-интерфейса Zabbix

1. Войдите в веб-интерфейс Zabbix.

2. Создайте узел сети в веб-интерфейсе Zabbix:

  • В поле Host name введите имя узла сети (например, "git.zabbix.com").
  • В поле Templates введите или выберите шаблон "Website by Browser". Дополнительные сведения об этом шаблоне см. в разделе Website by Browser.
  • В поле Host groups введите или выберите группу узлов сети (например, новую группу узлов сети "Websites").

  • На вкладке Macros переключитесь на Inherited and host macros, найдите следующие макросы и нажмите Change рядом со значением макроса, чтобы обновить его:
    • {$WEBSITE.DOMAIN} - Доменное имя (например, git.zabbix.com/projects/ZBX/repos/zabbix/browse)
    • {$WEBSITE.GET.DATA.INTERVAL} - Интервал обновления данных элемента данных (например, 15m)

3. Нажмите кнопку Add, чтобы создать узел сети. Этот узел сети будет представлять веб-сайт, который вы хотите мониторить.

Просмотр собранных метрик

Поздравляем! На этом этапе Zabbix уже отслеживает указанный вами веб-сайт.

Чтобы просмотреть собранные метрики, перейдите в раздел меню Monitoring → Hosts и нажмите Dashboards рядом с узлом сети.

Это действие откроет панель узла сети (настроенную на уровне шаблона) с наиболее важными метриками, собранными с веб-сайта.

Настройка оповещений о проблемах

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

1. Перейдите в User settings → Profile, откройте вкладку Media и добавьте свой адрес электронной почты.

2. Следуйте руководству по получению уведомления о проблеме.

В следующий раз, когда Zabbix обнаружит проблему, вы должны получить оповещение по электронной почте.

Проверьте вашу конфигурацию

Чтобы проверить вашу конфигурацию, мы можем смоделировать реальную проблему, изменив конфигурацию узла сети в веб-интерфейсе Zabbix.

1. Откройте конфигурацию узла сети вашего сайта в Zabbix.

2. Перейдите на вкладку Macros и выберите Inherited and host macros.

3. Нажмите Change рядом, например, со значением макроса {$WEBSITE.DOMAIN}, настроенным ранее, и задайте неверное доменное имя (например, /git.zabbix.com/projects/ZBX/repos/zabbix/browse).

4. Нажмите Update, чтобы обновить конфигурацию узла сети.

5. Через несколько мгновений Zabbix обнаружит проблему "Failed to get JSON of the requested website", поскольку не сможет подключиться к указанному сайту. Проблема появится в Monitoring → Problems.

Если оповещения настроены, вы также получите уведомление о проблеме.

6. Измените значение макроса обратно на прежнее, чтобы устранить проблему и продолжить мониторинг сайта.

См. также

  • Создание элемента данных - как начать мониторинг дополнительных метрик.
  • Эскалации проблем - как создавать многошаговые сценарии оповещений (например, сначала отправить сообщение системному администратору, а затем, если проблема не решена в течение 45 минут, отправить сообщение менеджеру центра обработки данных).
  • Элементы данных Browser - как настроить элементы данных Browser.
  • Шаблон Website by Browser - дополнительная информация о шаблоне Website by Browser.