8 使用浏览器监控项监控网站

在这一章节中,我们将介绍如何使用Zabbix的浏览器监控项功能来监控网站的可用性和性能。通过配置浏览器监控项,可以模拟用户访问网站的过程,检查网页加载时间、HTTP状态码等关键指标,确保网站对用户始终可用且响应迅速。接下来,我们将详细探讨如何设置和配置浏览器监控项,以及如何解读监控结果。

引言

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

此指南面向的读者

此指南专为Zabbix新用户设计,包含了启用网站基本监控所需的最少步骤,使用浏览器监控项进行监控。 如果您正在寻找深度定制选项或需要更高级的配置,请参阅浏览器监控项页面或Zabbix手册的配置部分。

先决条件

在继续本指南之前,您需要按照您操作系统的说明安装 download and install Zabbix server 和 Zabbix 前端。

本指南基于以下设置:

  • Zabbix 版本:7.0(从软件包安装)
  • 操作系统发行版:Ubuntu
  • 操作系统版本:22.04(Jammy)
  • Zabbix 组件:服务器,前端,Agent
  • 数据库:MySQL
  • Web 服务器:Apache

配置 WebDriver

浏览器监控项需要一个自动化框架(无论是Selenium Server还是一个简单的WebDriver,例如ChromeDriver)作为Web测试端点,该端点控制并交互与浏览器,执行诸如点击按钮或输入文本的测试命令。 作为示例,本指南将使用Docker容器中的Selenium Server与Chrome。

假设Docker已经配置好。本指南不涵盖Docker的配置。 对于安装说明,请参阅在Ubuntu上安装Docker Engine

1. 使用以下选项在Docker容器中启动Selenium Server与Chrome:

  • docker run --name browser - 运行一个名为"browser"的新Docker容器;
  • -p 4444:4444 - 将主机机器上的4444端口映射到容器上的4444端口(这是Selenium Server用于接收命令的端口);
  • -p 7900:7900 - 将主机机器上的7900端口映射到容器上的7900端口(这是Virtual Network Computing (VNC)服务器使用的端口,允许您远程查看浏览器GUI;需要VNC客户端);
  • --shm-size="2g" - 向容器分配2GB的共享内存(这对于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. 确保browser Docker容器正在运行且可访问。

  • 获取容器的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
       
       # 连接到192.0.2.1 4444端口 [tcp/*] 成功!
  • 使用curl从Selenium Server检索网页内容:
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 服务器

浏览器项由 browser poller Zabbix 进程执行和处理,这些进程需要通过调整 StartBrowserPollers 服务器配置参数来启用。 此外,WebDriverURL 参数应指定先前配置的 web 测试端点。

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

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

vi /etc/zabbix/zabbix_server.conf

2. 在 Zabbix 服务器配置文件中定位并设置 WebDriverURL 参数:

### 选项: WebDriverURL
       #   WebDriver 接口 HTTP[S] URL。例如,与 Selenium WebDriver 独立服务器一起使用的 http://localhost:4444。
       #
       # 必填:否
       # 默认:
       # WebDriverURL=
       
       WebDriverURL=192.0.2.1:4444

3. 重启 Zabbix 服务器。

systemctl restart zabbix-server

配置 Zabbix 前端

  1. 登录 Zabbix 前端。

  2. 在 Zabbix Web 界面中 创建主机

  • 主机名 字段中,输入主机名(例如,“git.zabbix.com”)。
  • 模板 字段中,输入或选择“通过浏览器的网站”模板。有关此模板的更多信息,请参阅 通过浏览器的网站
  • 主机群组 字段中,输入或选择主机群组(例如,新建主机群组“网站”)。

  • 选项卡中,切换到 继承和主机宏,查找以下宏并点击宏值旁边的 更改 以更新它:
    • {$WEBSITE.DOMAIN} - 域名(例如,git.zabbix.com/projects/ZBX/repos/zabbix/browse)
    • {$WEBSITE.GET.DATA.INTERVAL} - 项目数据更新间隔(例如,15m)

  1. 点击 添加 按钮创建主机。此主机将代表您要监控的网站。

查看收集的指标

恭喜!到这一步,Zabbix已经监控了你指定的网站。

要查看收集的指标,请导航至 监控 → 主机 菜单部分,并点击主机旁边的 仪表盘

此操作将带你进入主机仪表盘(在模板级别配置),显示从网站收集的最重要指标。

设置问题告警

Zabbix 可以通过多种方式通知您关于基础设施的问题。本指南提供了发送邮件告警的基本配置步骤。

1. 请导航至 用户设置 → 档案,切换到 媒体 标签页,并 添加您的邮箱

2. 请按照 接收问题通知 的指南操作。

下次当 Zabbix 检测到问题时,您应该会通过邮件收到告警。

测试您的配置

要测试您的配置,我们可以通过在Zabbix前端更新主机配置来模拟真实的问题。

1. 在Zabbix中打开您的网站主机配置。

2. 切换到 Macros 标签页并选择 Inherited and host macros

3. 点击,例如,先前配置的 {$WEBSITE.DOMAIN} 宏值旁边的 Change,并设置一个错误的域名(例如,/git.zabbix.com/projects/ZBX/repos/zabbix/browse)。

4. 点击 Update 来更新主机配置。

5. 过一会儿,Zabbix将检测到问题 "Failed to get JSON of the requested website",因为它将无法连接到指定的网站。 问题将出现在 Monitoring → Problems 中。

如果已配置告警,您也将收到问题通知。

6. 将宏值改回其先前的值以解决该问题并继续监控网站。

另请参阅

  • 创建监控项 - 如何开始监控额外的指标。
  • 问题升级 - 如何创建多步骤告警场景 (例如,首先向系统管理员发送消息,然后,如果问题在45分钟内未解决,向数据中心经理发送消息)。
  • 浏览器监控项 - 如何配置浏览器监控项。
  • 模板 Website by Browser - 关于Website by Browser模板的更多信息。