[comment]: # translation:outdated

[comment]: # ({b1d937a1-f18b8ec4})
# 8 Мониторинг веб-сайтов с помощью элементов данных браузера

[comment]: # ({/b1d937a1-f18b8ec4})

[comment]: # ({fc6e7bc8-eda05db8})
#### Введение

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

[comment]: # ({/fc6e7bc8-eda05db8})

[comment]: # ({b4ab39c1-0298d7f4})
**Для кого предназначено это руководство**

Это руководство предназначено для новых пользователей Zabbix и содержит минимальный набор шагов, необходимых для включения базового мониторинга веб-сайтов с помощью элементов данных Browser.
Если вам нужны возможности глубокой настройки или более расширенная конфигурация, см. страницу [Элементы данных Browser](/manual/config/items/itemtypes/browser) или раздел [Конфигурация](/manual/config) руководства Zabbix.

[comment]: # ({/b4ab39c1-0298d7f4})

[comment]: # ({7879a4ee-3a6a9a84})
**Предварительные требования**

Перед тем как продолжить работу с этим руководством, вам необходимо [загрузить и установить](https://www.zabbix.com/download) сервер Zabbix и веб-интерфейс Zabbix в соответствии с инструкциями для вашей ОС.

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

[comment]: # ({/7879a4ee-3a6a9a84})

[comment]: # ({3498dadf-0b26bd12})
#### Настройка WebDriver

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

Предполагается, что Docker уже настроен. В этом руководстве не рассматривается настройка Docker.
Инструкции по установке см. в разделе [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/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](https://hub.docker.com/r/selenium/standalone-chrome).

```bash
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):

```bash
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](https://nmap.org/ncat/):

```bash
nc -zv 192.0.2.1 4444

# Connection to 192.0.2.1 4444 port [tcp/*] succeeded!
```

-   Получите содержимое веб-страницы из Selenium Server с помощью [curl](https://curl.se/):

```bash
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>
# ...
```

::: noteclassic
Для устранения неполадок см. [документацию Docker](https://docs.docker.com/engine/).
:::

[comment]: # ({/3498dadf-0b26bd12})

[comment]: # ({4325dd8d-a02ee5f3})
#### Настройка сервера Zabbix

Элементы данных браузера выполняются и обрабатываются процессами Zabbix *browser poller*, которые необходимо включить, изменив параметр конфигурации сервера [StartBrowserPollers](/manual/concepts/server/server_params#startbrowserpollers).
Кроме того, параметр [WebDriverURL](/manual/concepts/server/server_params#webdriverurl) должен указывать на ранее настроенную конечную точку веб-тестирования.

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

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

```bash
vi /etc/zabbix/zabbix_server.conf
```

2\. Найдите и задайте параметр [WebDriverURL](/manual/concepts/server/server_params#webdriverurl) в файле конфигурации сервера Zabbix:

```ini
### 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.

```bash
systemctl restart zabbix-server
```

[comment]: # ({/4325dd8d-a02ee5f3})

[comment]: # ({9310e39d-6094e1b6})
#### Настройка веб-интерфейса Zabbix

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

2\. [Создайте узел сети](/manual/config/hosts/host) в веб-интерфейсе Zabbix:

- В поле *Host name* введите имя узла сети (например, "git.zabbix.com").
- В поле *Templates* введите или выберите шаблон "Website by Browser". Дополнительные сведения об этом шаблоне см. в разделе [Website by Browser](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/website_browser).
- В поле *Host groups* введите или выберите группу узлов сети (например, новую группу узлов сети "Websites").

![](../../../assets/en/manual/guides/browser_host.png){width="600"}

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

![](../../../assets/en/manual/guides/browser_macros.png){width="600"}

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

[comment]: # ({/9310e39d-6094e1b6})

[comment]: # ({9d4e66d5-b09d6e6d})
#### Просмотр собранных метрик

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

Чтобы просмотреть собранные метрики, перейдите в раздел меню [*Monitoring → Hosts*](/manual/web_interface/frontend_sections/monitoring/hosts) и нажмите *Dashboards* рядом с узлом сети.

![](../../../assets/en/manual/guides/browser_monitored_hosts.png){width="600"}

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

![](../../../assets/en/manual/guides/browser_dashboard.png){width="600"}

[comment]: # ({/9d4e66d5-b09d6e6d})

[comment]: # ({12e704dc-11902dbb})
#### Настройка оповещений о проблемах

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

1\. Перейдите в [*Настройки пользователя → Профиль*](/manual/web_interface/user_profile), откройте вкладку *Способы оповещения* и [добавьте свой адрес электронной почты](/manual/installation/quick_guides/basic_config/login#adding-user).

![](../../../assets/en/manual/quickstart/new_media.png){width="600"}

2\. Следуйте руководству [Получение уведомления о проблеме](/manual/installation/quick_guides/basic_config/notification).

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

[comment]: # ({/12e704dc-11902dbb})

[comment]: # ({98f0712b-7f332a36})
#### Проверьте вашу конфигурацию

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

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

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

3\. Нажмите *Change* рядом, например, со значением макроса {$WEBSITE.DOMAIN}, [настроенного ранее](#configure-zabbix-frontend), и задайте неверное доменное имя (например, /git.zabbix.com/projects/ZBX/repos/zabbix/browse).

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

5\. Через несколько мгновений Zabbix обнаружит проблему "Failed to get JSON of the requested website", поскольку не сможет подключиться к указанному веб-сайту.
Проблема появится в [*Monitoring → Problems*](/manual/web_interface/frontend_sections/monitoring/problems).

![](../../../assets/en/manual/guides/browser_problem.png){width="600"}

Если [настроены](#set-up-problem-alerts) оповещения, вы также получите уведомление о проблеме.

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

[comment]: # ({/98f0712b-7f332a36})

[comment]: # ({41652867-5a9ff105})
#### См. также

- [Создание элемента данных](/manual/config/items/item) — как начать мониторинг дополнительных метрик.
- [Эскалации проблем](/manual/config/notifications/action/escalations) — как создавать многошаговые сценарии оповещений
  (например, сначала отправить сообщение системному администратору, затем, если проблема не будет решена в течение 45 минут, отправить сообщение менеджеру центра обработки данных).
- [Элементы данных Browser](/manual/config/items/itemtypes/browser) — как настроить элементы данных Browser.
- Шаблон [Website by Browser](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/website_browser) — дополнительная информация о шаблоне *Website by Browser*.

[comment]: # ({/41652867-5a9ff105})
