9 Web 监控

概述

使用Zabbix可以监控网站的多个可用性方面。

要执行网页监控Zabbix server必须 最初 3-从源代码安装 支持cURL(libcurl)。

要启用网页监控,您需要定义网页场景。 场景由一个或多个HTTP请求或"步骤"组成。这些步骤 由Zabbix server按预定义顺序定期执行。如果 主机由proxy监控,相关步骤由proxy执行。

Web场景以与监控项相同的方式附加到主机/模板 触发器等。这意味着也可以在 模板级别,然后一次性应用于多个主机。

在任何Web场景中都会收集以下信息:

  • 整个场景所有步骤的平均每秒下载速度
  • 失败的步骤编号
  • 最后一条错误消息

在任何Web场景步骤中都会收集以下信息:

  • 每秒下载速度
  • 响应时间
  • 响应代码

更多详情,请参阅web monitoring items

从执行Web场景收集的数据保存在数据库中。 数据会自动用于图表、触发器和通知。

Zabbix还可以检查检索到的HTML页面是否包含预定义的 string. 它可以execute模拟的login并沿着模拟路径 页面上的鼠标点击。

Zabbix网页监控同时支持HTTP和HTTPS协议。当运行网页 场景下,Zabbix可选择性地跟随重定向(参见选项Follow 重定向 如下所示). 最大重定向次数硬编码为10 使用cURL选项 CURLOPT_MAXREDIRS)。 所有cookie在单个场景执行期间都会被保留。

配置Web场景

要配置一个Web场景:

  • 前往:配置 → 主机(或 模板
  • 在 主机/template 行中点击 Web
  • 点击右侧的创建Web场景(或点击场景名称以 编辑现有场景)
  • 在表单中输入场景的参数

Scenario(场景)选项卡允许您配置一个 Web场景

所有必填字段均以红色星号标记。

场景参数:

参数 描述
Name 唯一场景名称。
支持User macros注意:如果使用了用户宏,这些宏在web monitoring item名称中将保持未解析状态。
Update interval 场景执行的频率。
支持Time suffixes,例如30s、1m、2h、1d。
支持User macros注意:如果使用了用户宏且其值被更改(例如5m→30s),下一次检查将根据之前的值执行(以示例值为例会更晚执行)。
Attempts 执行Web场景步骤的尝试次数。当出现网络问题(超时、无法连接等)时,Zabbix可多次重试执行步骤。该数值将同等作用于场景的每个步骤。最多可指定10次尝试,默认值为1。
注意:Zabbix不会因响应码错误或不符合要求的string而重复执行步骤。
Agent 选择客户端 agent.
Zabbix将模拟所选浏览器行为. 当网站针对不同浏览器返回不同内容时, 此功能非常有用.
此字段支持使用用户宏.
HTTP proxy 您可以使用[protocol://][username[:password]@]proxy.example.com[:port]格式指定要使用的HTTP proxy.
这将设置CURLOPT_PROXY cURL选项.
可选前缀protocol://可用于指定替代proxy协议(协议前缀支持在cURL 7.21.7版本中添加). 若未指定协议, proxy将被视为HTTP proxy.
默认情况下将使用1080端口.
如果指定, proxy将覆盖http_proxy, HTTPS_PROXY等proxy相关环境变量. 若未指定, proxy将不会覆盖proxy相关环境变量. 输入的值将"原样"传递, 不进行完整性检查.
您也可以输入SOCKS proxy地址. 如果指定了错误的协议, 连接将失败且监控项将变为不支持状态.
注意: HTTP proxy仅支持简单认证.
此字段中可使用用户宏.
Variables 可在场景步骤中使用的变量(URL、post变量).
其格式如下:
{macro1}=value1
{macro2}=value2
{macro3}=regex:<正则表达式>
例如:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
随后可在步骤中通过{username}、{password}和{hostid}引用这些宏.Zabbix会自动将其替换为实际值.注意带有regex:的变量需要一个步骤来get正则表达式的值,因此提取的值只能应用于后续步骤.
若值部分以regex:开头,则其后内容将被视为在网页中搜索的正则表达式,若匹配成功则将匹配结果存入变量.必须至少包含一个子组以便提取匹配值.
支持用户宏和{主机.*} macros.
当在query字段或post变量的表单数据中使用时,变量会自动进行URL编码,但在原始post或直接用于URL时必须手动进行URL编码.
Headers HTTP头部用于执行请求时使用,可配置默认及自定义头部。
根据场景层级下拉菜单选择的Agent类型,头部将按默认设置分配并应用于所有步骤,除非在步骤层级进行了自定义定义。
需注意:在步骤层级定义头部将自动丢弃所有先前定义的头部(通过场景层级下拉菜单选择'User-Agent'分配的默认头部除外)。
但即使'User-Agent'默认头部也可通过在步骤层级指定来覆盖。
若需取消场景层级的头部设置,应在步骤层级将该头部名称赋空值。
头部列表需采用与HTTP协议相同的语法格式,可选支持CURLOPT_HTTPHEADER cURL选项的附加特性。
例如:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
支持用户宏和{主机.*} macros
Enabled 勾选此框表示场景处于激活状态,否则为禁用状态。

请注意,在编辑现有场景时,会出现两个额外的按钮 以以下形式提供:

基于现有场景的属性创建另一个场景。
删除场景的历史数据和趋势数据。这将使服务器在删除数据后立即执行该场景。

如果 HTTP proxy 字段留空,另一种方式用于 使用HTTP proxy的目的是设置与proxy相关的环境变量。

对于HTTP检查 - 设置http_proxy环境变量 Zabbix server 用户。例如, http_proxy=http://proxy_ip:proxy_port.

对于HTTPS检查 - 设置HTTPS_PROXY环境变量。对于 示例,HTTPS_PROXY=http://proxy_ip:proxy_port。更多详情请见 可通过运行shell命令获取:# man curl

步骤选项卡允许您配置Web场景的步骤。要添加 一个Web场景步骤,在Steps区块中点击Add

密钥 配置 不得 在URL中使用时,它们将被解析为"******"。

配置步骤

步骤参数:

参数 描述
Name 唯一步骤名称。
User macros 支持使用。注意:如果使用了用户宏,这些宏在web monitoring item名称中将保持未解析状态。
URL 用于连接并获取数据的URL。例如:
https://www.example.com
http://www.example.com/download
域名可以使用Unicode字符指定。在执行Web场景步骤时,它们会自动转换为Punycode编码的ASCII格式。
可使用解析按钮将可选的query字段(如?name=Admin&password=mypassword)从URL中分离出来,将属性和值移至query字段进行自动URL编码。
URL中可以使用变量,采用{macro}语法。变量可以通过{{macro}.urlencode()}语法手动进行URL编码。
支持用户宏和{主机.*} macros
限制为2048个字符。
Query fields URL的HTTP GET变量。
以属性和值对的形式指定。
值会自动进行URL编码。来自场景变量、用户宏或{主机.*}宏的值会被解析后自动进行URL编码。使用{{macro}.urlencode()}语法将会对它们进行双重URL编码。
支持用户宏和{主机.*} macros
Post HTTP POST变量。
表单数据模式下,以属性和值对的形式指定。
值会自动进行URL编码。来自场景变量、用户宏或{主机.*}宏的值会被解析后自动进行URL编码。
原始数据模式下,属性/值显示在单行上,并用&符号连接。
原始值可以使用{{macro}.urlencode()}或{{macro}.urldecode()}语法手动进行URL编码/解码。
例如:id=2345&userid={user}
如果{user}定义为Web场景的变量,在执行步骤时将被其值替换。若要对变量进行URL编码,请将{user}替换为{{user}.urlencode()}。
支持用户宏和{主机.*} macros
Variables 可用于GET和POST函数的步骤级变量。
以属性-值对形式指定。
步骤级变量会覆盖场景级变量或前一步骤的变量。但步骤级变量的值仅影响后续步骤(不影响当前步骤)。
其格式如下:
{macro}=值
{macro}=regex:<正则表达式>
更多信息请参阅配置web场景级别的变量描述。
当在query字段或post变量的表单数据中使用时,变量会自动进行URL编码;但在原始post或直接用于URL时需手动进行URL编码。
Headers 执行请求时发送的自定义HTTP头部.
需以属性-值对形式指定.
在步骤级别定义的头部仅适用于该特定步骤.
需注意:在步骤级别定义头部将自动丢弃所有先前定义的头部(通过场景级别下拉列表选择'User-Agent'分配的默认头部除外).
但即使是'User-Agent'默认头部,也可通过在步骤级别指定来覆盖.
例如:为头部分配名称但不设置值,将取消场景级别的默认头部设置.
支持用户宏和{主机.*}宏.
此设置对应CURLOPT_HTTPHEADER cURL选项.
从Zabbix 2.4开始支持自定义头部设置.
Follow redirects 勾选此复选框以跟随HTTP重定向。
这将设置CURLOPT_FOLLOWLOCATION cURL选项。
Retrieve mode 选择检索模式:
Body - 仅从HTTP响应中检索正文
Headers - 仅从HTTP响应中检索头部信息
Body and headers - 从HTTP响应中同时检索正文和头部信息
Timeout Zabbix在处理URL时不会超过设定的时间(从1秒到最长1小时)。实际上,此参数定义了连接到URL的最大时间以及执行HTTP请求的最大时间。因此,Zabbix在该步骤上花费的时间不会超过2 x 超时秒。
支持Time suffixes,例如30s、1m、1h。支持User macros
Required string 必需的正则表达式模式.
除非检索到的内容(HTML)匹配所需模式,否则该步骤将失败。若留空则不执行对必需string的检查.
例如:
Zabbix主页
Welcome.*admin
注意: 该字段不支持引用在Zabbix前端创建的regular expressions.
支持用户宏和{主机.*} macros.
Required status codes 预期的HTTP状态码列表。如果Zabbix获取到的状态码不在列表中,该步骤将失败。
如果为空,则不执行状态码检查。
例如:200,201,210-299
支持用户宏。

Web场景步骤的任何变更仅在以下情况下才会保存 整个场景已保存。

另请参阅real-life example了解如何 可以配置网页监控步骤。

配置标签

标签选项卡允许定义场景级别的 tags.

标记功能允许筛选Web场景和Web监控 items.

配置认证

认证选项卡允许您配置场景认证选项。选项卡名称旁的绿色圆点表示已启用某种HTTP认证类型。

认证参数:

参数 描述
Authentication 认证选项。
- 不使用认证。
基本 - 使用基本认证。
NTLM - 使用NTLM(Windows NT LAN Manager)认证。
Kerberos - 使用Kerberos认证。另见:Configuring Kerberos with Zabbix.
摘要 - 使用摘要认证。
选择认证方法将提供两个额外字段用于输入用户名和密码。
用户宏可用于用户和密码字段。
SSL verify peer 勾选复选框以验证Web服务器的SSL证书。
服务器证书将自动从系统级证书颁发机构(CA)位置获取。您可以使用Zabbix server或proxy配置参数SSLCALocation覆盖CA文件的位置。
这将设置CURLOPT_SSL_VERIFYPEER cURL选项。
SSL verify host 勾选复选框以验证Web服务器证书的通用名字段主题备用名字段是否匹配。
这将设置CURLOPT_SSL_VERIFYHOST cURL选项。
SSL certificate file 用于客户端认证的SSL证书file名称。证书file必须为PEM1格式。如果证书file包含私钥,则留空SSL密钥file字段。如果密钥已加密,请在SSL密钥密码字段指定密码。包含此file的目录由Zabbix server或proxy配置参数SSLCertLocation指定。
HOST.*宏和用户宏可用于此字段。
这将设置CURLOPT_SSLCERT cURL选项。
SSL key file 用于客户端认证的SSL私钥file名称。私钥file必须为PEM1格式。包含此file的目录由Zabbix server或proxy配置参数SSLKeyLocation指定。
HOST.*宏和用户宏可用于此字段。
这将设置CURLOPT_SSLKEY cURL选项。
SSL key password SSL私钥file密码。
用户宏可用于此字段。
这将设置CURLOPT_KEYPASSWD cURL选项。

[1] Zabbix仅支持PEM格式的证书和私钥文件。如果您拥有PKCS #12格式file的证书和私钥数据(通常扩展名为*.p12或*.pfx),您可以使用以下命令generate PEMfile:

openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
       openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key

Zabbix server无需重启即可获取证书变更。

如果您在单个file中拥有客户端证书和私钥,只需在"SSL证书file"字段中指定它,并留空"SSL密钥file"字段。证书和密钥仍必须为PEM格式。合并证书和密钥很简单:

cat client.crt client.key > client.pem

显示

要查看为一个主机配置的Web场景,请前往Monitoring → 主机, 在列表中找到主机并点击最后一列的Web超链接。点击场景名称可get详细信息。

Web场景的概览也可通过Web监控小部件在Monitoring → Dashboard中显示。

Web场景执行的最新结果可在Monitoring → Latest data部分查看。

扩展监控

有时需要记录接收到的HTML页面内容。这在某些Web场景步骤失败时特别有用。调试级别5(跟踪)正是为此目的而设。该级别可在 serverproxy配置文件中设置, 或使用运行时控制选项(-R log_level_increase="http poller,N", 其中N为进程号)。以下示例展示了在调试级别4已设置的情况下如何启动扩展监控:

# Increase log level of all http pollers:
       zabbix_server -R log_level_increase="http poller"
       
       # 提升第二个http poller的日志级别:
       
       zabbix_server -R log_level_increase="http poller,2"

若不需要扩展Web监控,可使用 -R log_level_decrease选项停止该功能。