[comment]: # ({d9bf322f-f34132a6})
# 2 真实场景

[comment]: # ({/d9bf322f-f34132a6})

[comment]: # ({608fb726-d43d02d4})
#### 概述

本节通过一个循序渐进的真实示例来说明如何使用 Web 监控。

将使用 Zabbix Web 监控来监控 Zabbix 前端。目标是确定其是否可用、是否提供正确的内容，以及其运行速度如何。为实现这一目标，需要执行多个步骤，包括检查第一页的可用性、使用用户名和密码登录、验证登录是否成功、退出登录，以及确认已成功退出。

[comment]: # ({/608fb726-d43d02d4})

[comment]: # ({51af514b-51af514b})
#### 场景

[comment]: # ({/51af514b-51af514b})

[comment]: # ({5c6f5f4d-6b72dd59})
##### 添加新的 web 场景

转到 *数据采集 → 主机*，选择一个主机，然后点击该主机所在行中的 *Web*。  
接着点击 *创建 web 场景*。 

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


在新的场景表单中，填写以下字段：

- **名称** - Frontend check
- **更新间隔** - 1m
- **尝试次数** - 1
- **Agent** - Zabbix

在 *变量* 部分，添加两个变量：*{password}* 和 *{user}*。  
将您现有的 Zabbix 用户凭据作为值输入。 

出于安全考虑，建议创建一个具有最小权限的单独用户用于监控目的。

如有需要，可切换到 *标签* 选项卡并添加 web 场景标签。

:::notetip
一旦完全配置完成，此 web 场景将自动向主机添加一个 Zabbix trapper 监控项。  
您可以使用 web 场景标签快速识别相关的监控项和触发器，或搜索已收集的数据。  
例如，本教程适合使用的标签为 `component: web-scenario` 和/或 `target: frontend`。 
:::

[comment]: # ({/5c6f5f4d-6b72dd59})

[comment]: # ({17b5bd92-475cbb1a})
##### 配置 web 场景步骤

切换到 *步骤* 选项卡并为该场景定义步骤。点击 *添加* 按钮以添加单个步骤。

[comment]: # ({/17b5bd92-475cbb1a})

[comment]: # ({75dcae2e-8e70e0cd})
###### 通用字段

对于下面描述的每个步骤，除步骤特定字段外，还需填写以下字段：

- **URL** - Zabbix 前端的 URL
- **Timeout** - 15s 
- **Required status codes** - 200

[comment]: # ({/75dcae2e-8e70e0cd})

[comment]: # ({d7edf15f-c793921e})
###### Web 场景步骤 1

检查第一页是否正确响应，返回 HTTP 响应代码 200，并包含文本 "Zabbix SIA"。

- 在 **Name** 字段中，输入 *First page*。
- 在 **Required string** 字段中，输入 *Zabbix SIA*。 
- 填写[通用字段](#common-fields)。 

完成步骤配置后，点击 *Add* 按钮。

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

[comment]: # ({/d7edf15f-c793921e})

[comment]: # ({713aa628-3bec9061})
###### Web 场景步骤 2

使用在场景级别定义的宏（变量）-*{user}* 和 *{password}* 登录 Zabbix 前端。 

- 在 **Name** 字段中，输入 *Login*。
- 在 **Post fields** 部分中，添加三个 post 字段： 
    - 值为 *{user}* 的 *name*
    - 值为 *{password}* 的 *password*
    - 值为 *Sign in* 的 *enter*
- 在 **Variables** 部分中，添加一个新变量 *{csrf_token}*，其值为 *regex:([0-9a-z]{64})*。 
该变量将捕获已分配的 CSRF token 值，以便在[步骤 4](#web-scenario-step-4)中重复使用。
- 填写[通用字段](#common-fields)。

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

::: noteimportant
请注意，Zabbix 前端在登录时使用 JavaScript 重定向，因此必须先执行登录，并且只有在后续步骤中才能检查登录后的功能。此外，登录步骤必须使用指向 **index.php** 文件的完整 URL。
:::

[comment]: # ({/713aa628-3bec9061})

[comment]: # ({635690e6-ea24f4e7})
###### Web 场景步骤 3

登录后，通过检查仅在登录状态下可见的字符串来验证是否成功——例如 *Administration*。

- 在 **Name** 字段中，输入 *Login check*。
- 在 **Required string** 字段中，输入 *Administration*。 
- 填写[通用字段](#common-fields)。

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

[comment]: # ({/635690e6-ea24f4e7})

[comment]: # ({06efb3e5-684b5527})
###### Web 场景步骤 4

验证前端的可访问性和登录后，添加一个注销步骤——否则 Zabbix 数据库中会堆积大量打开的会话记录。

- 在 **Name** 字段中，输入 *Logout*。
- 在 **Post fields** 部分中，添加两个 post 字段：
    - *reconnect*，值为 *1*
    - *\_csrf_token*，值为 *{csrf_token}*。
- 填写[通用字段](#common-fields)。

此步骤使用在[步骤 2](#web-scenario-step-2)中获取的变量 {csrf_token}

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

[comment]: # ({/06efb3e5-684b5527})

[comment]: # ({5bdfc52a-5c1c5393})
###### Web 场景步骤 5

为确认已注销，请检查 **Username** 字符串。

- 在 **Name** 字段中，输入 *Logout check*。
- 在 **Required string** 字段中，输入 *Username*。 
- 填写[通用字段](#common-fields)。 

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

[comment]: # ({/5bdfc52a-5c1c5393})

[comment]: # ({2b6fe488-5c42025e})
###### 步骤的完整配置

web 场景步骤的完整配置应如下所示：

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

[comment]: # ({/2b6fe488-5c42025e})

[comment]: # ({fd36f2c5-3e213338})
##### 检查结果

保存已完成的 web 监控场景。

该场景将被添加到主机。要查看 web 场景信息，请转到 *监测 → 主机*，在列表中找到该主机，然后单击最后一列中的 Web 超链接。

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

单击场景名称可查看更详细的统计信息：

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

[comment]: # ({/fd36f2c5-3e213338})
