[comment]: # translation:outdated

[comment]: # ({b1d937a1-f18b8ec4})
# 8 使用浏览器监控项监控网站

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

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

本页将引导您完成使用浏览器监控项开始对网站进行基本监控所需的步骤。

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

[comment]: # ({b4ab39c1-0298d7f4})
**本指南适用对象**

本指南面向新的 Zabbix 用户，包含启用使用浏览器监控项对网站进行基本监控所需的最少步骤。
如果您需要深入的自定义选项或更高级的配置，请参阅 [浏览器监控项](/manual/config/items/itemtypes/browser) 页面或 Zabbix 手册中的 [配置](/manual/config) 部分。

[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）作为 Web 测试端点，用于控制浏览器并与之交互，执行诸如点击按钮或输入文本之类的测试命令。
本指南将以在 Docker 容器中运行带有 Chrome 的 Selenium Server 为例。

假定 Docker 已经配置完成。本指南不涵盖 Docker 的配置。
有关安装说明，请参见 [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)。

1\. 使用以下选项在 Docker 容器中启动带有 Chrome 的 Selenium Server：

-   **docker run --name browser** - 运行一个名为“browser”的新 Docker 容器；
-   **-p 4444:4444** - 将主机上的 4444 端口映射到容器中的 4444 端口（这是 Selenium Server 用于接收命令的端口）；
-   **-p 7900:7900** - 将主机上的 7900 端口映射到容器中的 7900 端口（这是虚拟网络计算（VNC）服务器使用的端口，允许你远程查看浏览器图形界面；需要 VNC 客户端）；
-   **--shm-size="2g"** - 为容器分配 2GB 共享内存（这对 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\. 确保 `browser` Docker 容器正在运行且可访问。

-   获取容器的 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!
```

-   使用 [curl](https://curl.se/) 从 Selenium Server 获取网页内容：

```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 documentation](https://docs.docker.com/engine/).
:::

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

[comment]: # ({4325dd8d-a02ee5f3})
#### 配置 Zabbix 服务器

浏览器监控项由 *browser poller* Zabbix 进程执行和处理，这些进程需要通过调整 [StartBrowserPollers](/manual/concepts/server/server_params#startbrowserpollers) 服务器配置参数来启用。  
此外，[WebDriverURL](/manual/concepts/server/server_params#webdriverurl) 参数应指定之前配置的 Web 测试端点。

默认情况下，StartBrowserPollers 参数设置为 1，因此您只需指定 Web 测试端点。

1\. 打开 Zabbix 服务器配置文件。

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

2\. 在 Zabbix 服务器配置文件中找到并设置 [WebDriverURL](/manual/concepts/server/server_params#webdriverurl) 参数：

```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\. 在 Zabbix Web 界面中[创建主机](/manual/config/hosts/host)：

- 在 *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} - 域名（例如，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]: # ({/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*，例如在 [之前配置的](#configure-zabbix-frontend) {$WEBSITE.DOMAIN} 宏值旁边，将其设置为错误的域名（例如，/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})
