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

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

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

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

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

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

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

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

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

Before proceeding with this guide, you need to [download and install](https://www.zabbix.com/download) Zabbix server and Zabbix frontend according to the instructions for your OS.

Depending on your environment, some steps in this guide may slightly differ.
This guide is based on an environment running Ubuntu.

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

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

Browser items require an automation framework (either Selenium Server or a plain WebDriver, for example, ChromeDriver) as a web testing endpoint that controls and interacts with a browser, executing test commands such as clicking buttons or entering text.
As an example, this guide will use Selenium Server with Chrome in a Docker container.

It is assumed that Docker is already configured. This guide does not cover the configuration of Docker.
For installation instructions, see [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/).

1\. Launch Selenium Server with Chrome in a Docker container with the following options:

-   **docker run --name browser** - runs a new Docker container named "browser";
-   **-p 4444:4444** - maps port 4444 on your host machine to port 4444 on the container (this is the port used by Selenium Server to accept commands);
-   **-p 7900:7900** - maps port 7900 on your host machine to port 7900 on the container (this is the port used by the Virtual Network Computing (VNC) server, allowing you to view the browser GUI remotely; requires a VNC client);
-   **--shm-size="2g"** - allocates 2GB of shared memory to the container (this is important for Chrome to run properly, as it can require a significant amount of shared memory to avoid crashes);
-   **-d** - runs the container in detached mode, meaning it will run in the background;
-   **selenium/standalone-chrome:latest** - specifies the Docker image to use; in this case, the latest version of [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\. Ensure that the `browser` Docker container is running and accessible.

-   Retrieve the IP address of the container (in this example, 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
#    ...
```

-   Test the connection to the container with [Ncat](https://nmap.org/ncat/):

```bash
nc -zv 192.0.2.1 4444

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

-   Retrieve the webpage content from Selenium Server with [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
For troubleshooting, refer to [Docker documentation](https://docs.docker.com/engine/).
:::

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

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

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

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

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

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

2\. Найдите и задайте параметр [WebDriverURL](/manual/appendix/config/zabbix_server#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]: # ({/538d8706-a02ee5f3})

[comment]: # ({5dcbc68f-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?at=refs%2Fheads%2Frelease%2F7.4).
- В поле *Host groups* введите или выберите группу узлов сети (например, новую группу узлов сети "Websites").

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

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

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

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

[comment]: # ({/5dcbc68f-6094e1b6})

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

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

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

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

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

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

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

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

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

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

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

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

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

[comment]: # ({/4cead10e-11902dbb})

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

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

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

2\. Перейдите на вкладку *Макросы* и выберите *Унаследованные и макросы узла сети*.

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

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

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

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

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

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

[comment]: # ({/06163b26-7f332a36})

[comment]: # ({458aaef8-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?at=refs%2Fheads%2Frelease%2F7.4) - дополнительная информация о шаблоне *Website by Browser*.

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