8 Мониторинг веб-сайтов с помощью элементов данных браузера
Введение
На этой странице описаны шаги, необходимые для начала базового мониторинга веб-сайтов с помощью элементов данных браузера.
Для кого предназначено это руководство
Это руководство предназначено для новых пользователей Zabbix и содержит минимальный набор шагов, необходимых для включения базового мониторинга веб-сайтов с помощью элементов данных Browser. Если вам нужны возможности глубокой настройки или более расширенная конфигурация, см. страницу Элементы данных Browser или раздел Конфигурация руководства 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
# HTTP[S] URL интерфейса WebDriver. Например, http://localhost:4444 используется с автономным сервером Selenium WebDriver.
#
# 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 уже отслеживает указанный вами веб-сайт.
Чтобы просмотреть собранные метрики, перейдите в раздел меню Мониторинг → Узлы сети и нажмите Панели рядом с узлом сети.

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

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

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.