Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

9. Web监控

概述

您可以使用 Zabbix 对网站进行多方面可用性监控:

若要使用Web监控,Zabbix Server必须编译安装时加入cURL (libcurl) 库支持

要使用Web监控,您需要定义web场景。Web场景包括一个或多个HTTP请求或“步骤”。Zabbix server根据预定义的命令周期性的执行这些步骤。如果主机是通过代理监控的话,这些步骤将由代理执行。

从 Zabbix2.2 开始,Web 场景和监控项,触发器等一样,是依附在主机/模版上的。这意味着 web 场景也可以创建到一个模板里,然后应用于多个主机。

任何web场景会收集下列数据:

  • 整个场景中所有步骤的平均下载速度
  • 失败的步骤数量
  • 最近的错误信息

对于web场景的所有步骤,都会收集下列数据:

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

更多详情,请参见 web监控项

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

Zabbix还支持获取HTML内容中是否存在设置的字符串。还可以模拟登陆动作和模拟鼠标单击。

Zabbix web监控同时支持HTTP和HTTPS。当运行web场景时,Zabbix将选择跟踪重定向(请参见下面的选择跟踪重定向)。重定向硬编码的最大数量为 10 (使用 cURL 选项 CURLOPT_MAXREDIRS)。在执行web场景时,所有 Cookie 都会保存。

web监控使用HTTPS协议请参阅 已知问题

配置 Web 场景

配置web场景:

  • 转到:配置 -→主机(或者 模板)
  • 点击主机/模板行中的 Web
  • 点击右上角 创建场景(或点击场景名字进行编辑现有的场景)
  • 在场景的表单中输入参数

场景选项卡允许您配置此 Web 场景的通用参数。

所有必填字段都用红色星号标注。

许多Web场景参数都支持用户宏,但不应在URL中使用秘密宏,因为它们会解析为 "******" 。

场景参数:

参数 说
主机 所属的主机名或模板的名字。
名称 的场景名称。
Zabbix 2.2 开始,这个名字支持用户宏和 {HOST.*}
应用 一个场景属于的应用 。
Web 场景监控项在 监控→最新数据 栏中将会分组在选择的应用中。
新的应用 对场景 建个新的应用。
更新间隔 执行场 时间间隔。
自Zabbix 3.4.0起,支持时间的后缀,例如30s,1m,2h,1d。
自从Zabbix 3.4.0 开始。支持用户宏。注意,如果使用用户宏变量来改变值(如5m → 30s),将在下一个执行周期执行更新(在之后的示例中进行更多演示) 。
重试次数 尝试执 web 场景中步骤的次数。对于网络问题(超时,没有连接,等等)Zabbix可以多次重复执行步骤。这个数字对场景的中的所有步骤都会生效。尝试次数最大可以设置为 10,默认值为 1。
注意: Zabbix不会因为一个错误的响应代码或者期望的字符串没有出现就会触发这个重试。
Zabbix 2.2 开始支持此参数。
代理 一个客户端代理。
zabbix 会模拟选择的浏览器,当一个网站对不同的浏览器返回不同的内容的时候是非常有用的。
zabbix 2.2 开始 ,这块可以使用用户自定义宏。
HTTP代理 以指定要使用一个HTTP代理,使用格式[protocol://][username[:password]@]proxy.example.com[:port]
这将设置 CURLOPT_PROXY cURL选项。
可选 protocol:// 前缀可用于指定备用代理协议(协议前缀支持已在cURL7.21.7中添加)。如果未指定协议,则该代理将被视为HTTP代理。。
默认情况下,将使用1080端口。
如果指定,代理将覆盖代理相关联的环境变量,比如 http_proxy,HTTPS_PROXY。如果未指定,那么代理将不会覆盖代理相关的环境变量。输入的值是通过"as is", 不需要进行完整性检查。
你也可以输入SOCKS代理地址。如果您指定了错误的协议,连接会失败,项目将成为不受支持的。
注意 HTTP 代理仅支持简单身份验证。
此字段中可以使用用户宏。
Zabbix 2.2开始支持此参数。
变量 在场景中的步骤(URL,POST变量)中使用变量。
它们具有以下格式:
{macro1}=value1
{macro2}=value2
{macro3}=regex:<正则表达式>
例如:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
然后可以在{username},{password}和{hostid}的步骤中引用宏。 Zabbix 将自动将其替换为实际值。请注意,使用regex:的变量:需要一个步骤来获取正则表达式的值,因此提取的值只能应用于后续步骤。
如果值部分以 regex:开头,那么它之后的部分将被视为正则表达式,将搜索网页,如果找到,则将匹配存储在变量中。 必须存在至少一个子组,以便可以提取匹配的值。
Zabbix 2.2 开始支持变量中的正则表达式匹配。
Zabbix 2.2 开始,用户宏和{HOST.*} 可以在此字段中使用。
在查询字段或提交表单数据时,变量会自动进行 URL 编码,但使用 raw 方式提交数据或者直接在 URL 中使用时,必须手动进行 URL 编码。
头部 请求时将发送的自定义的HTTP头部
头部应使用与在HTTP协议中出现的语法相同的语法列出,还可选地使用 CURLOPT_HTTPHEADER cURL 选项支持的一些其他功能。
例如:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
用户宏和 {HOST.*} 和可以在此字段中使用。
Zabbix 2.4 开始支持指定自定义头。
启用 选中此复选框,则此场景处于启用状态,否则禁用。

注意,当编辑一个现有的场景时,会出现两个额外的按钮:

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

如果 HTTP proxy 字段留空,使用 HTTP 代理的另一种方法是设置代理相关的环境变量。

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

对于 HTTPS 检查 - 设置 HTTPS_PROXY 环境变量。 例如, HTTPS_PROXY=http:%%//%%proxy_ip:proxy_port//. 通过运行 shell 命令可以获得更多详细信息:# man curl//。

“步骤”选项卡允许您配置Web场景步骤。 要添加Web场景步骤,请在 步骤中 单击 添加

配置步骤

步骤参数:

参数 说
名称 的步骤名称。
Zabbix 2.2 开始,该名称可以支持用户宏和 {HOST.*}
URL 用于连接和检索数据的网址。 例如:
%% https://www.google.com %%
http://www.zabbix.com/download
Zabbix 3.4 以后,可以以Unicode编码指定域名。 执行 Web 场景步骤时,它们将自动被禁止转换为 ASCII。
解析 按钮可用于从 URL 中分离可选的查询字段(例如?name = Admin&password = mypassword),将属性和值放到查询字段以进行自动URL编码。
变量可以在 URL 中使用,使用 {macro} 语法。变量可以使用{{macro}.urlencode()}语法手动进行URL编码。
Zabbix 2.2 开始,用户宏和{HOST.*} 可以在此字段中使用。
Zabbix 2.4 开始,最多字符为 2048 个。
查询字段 URL HTTP GET变量。
指定属性和值对。
值将自动进行URL编码。来自场景变量,用户宏或{HOST。*}宏的值将被解析,然后自动进行 URL 编码。使用{{macro}.urlencode()}语法将对其进行双重URL编码。
Zabbix 2.2 开始开始支持用户宏和 {HOST.*}
Post HTTP POST变量。
Form data 模式下,指定属性和值。
值被自动进行 URL 编码。 来自场景变量、用户宏或 {HOST.*} 宏的值将被解析,然后自动进行 URL 编码。
Raw data 模式中,属性/值显示在一条线上,并与 & 符号连接。
Raw 方式的值可以使用 {{macro}.urlencode()} 或 {{macro}.urldecode()} 手动进行URL 编码/解码。
例如:id=2345&userid={user}
如果 {user} 被定义为 web 场景的变量,则当执行步骤时,它的值会被替换。如果你想对变量进行URL编码,用 {{user}.urlencode()} 替换 {user} 。
Zabbix 2.2 开始支持用户宏和 {HOST.*}
变量 于GET和POST方法的步骤级变量。
指定属性和值。
步骤级变量覆盖之前的场景变量或上一步中的变量。 然而,一个步骤变量的值仅影响之后的步骤(而不是当前步骤)。
它们具有以下格式:
{宏}=值
{宏}=regex:<正则表达式>
有关更多信息,请参阅 场景 级别上的变量描述。
Zabbix 2.2 开始支持步骤级变量。
在查询字段或提交表单数据时,变量会自动进行URL编码,但使用raw方式提交数据或者直接在URL中使用时,必须手动进行URL编码。
报文头 执行 求时将发送的自定义HTTP头部。
指定属性和值
步骤级别上的报文头将覆盖为该场景指定的报文头。
例如,设置“User-Agent:”为空时,将覆盖在场景上设置的User-Agent名称。
支持用户宏和 {HOST.*} 宏。
这将设置 CURLOPT_HTTPHEADER cURL 选项。
Zabbix 2.4 开始,支持指定自定义HTTP头部。
// 跟踪重定向// 选中该复 框以跟踪HTTP重定向。
将会设置 CURLOPT_FOLLOWLOCATION cURL 选项。
Zabbix 2.4 开始支持此选项。
检索模式 选择检 模式:
报文体 - 只检索来自HTTP响应的报文体
报文头 - 只检索来自HTTP响应的报文头
报文体和报文头 - 从HTTP响应中检索报文体和报文头
Zabbix 4.2开始支持此选项。
// 超时时间// Zab ix在处理URL上所花费的时间不会超过此设置的时间(从一秒钟到1小时)。 实际上,此参数定义为连接到URL的最大时间和执行HTTP请求的最长时间。 因此,Zabbix不会在步骤上花费超过2x 超时时间
支持时间后缀 ,例如30s, 1m, 1h。 支持用户宏
// 必需的字符串// 必需的正则 达式。
除非检索到的内容(HTML)匹配所需的模式,否则步骤将失败。 如果为空,则不执行检查所需字符串。
例如:
Zabbix 的主页
Welcome.*admin
注意: 在此字段中不支持引用在 Zabbix 前端中创建的 正则表达式
Zabbix 2.2 开始,支持用户宏和 {HOST.*}
必需的状态码 可以设置预 的HTTP状态代码列表。 如果Zabbix获取的HTTP状态码不在列表中,该步骤将认为为失败。
如果为空,则不执行检查状态码。
例如:200,201,210-299
Zabbix 2.2 开始,支持用户宏。

Web 场景步骤中的任何更改只有在保存整个场景时才会保存。

另请参见如何配置 Web 监控步骤的 实际示例

配置身份验证

身份验证选项卡允许您配置场景身份验证选项。

认证参数:

参数 说
认证 选项。
None - 未使用身份验证。
Basic - 使用基本认证。
NTLM - 使用 NTLM (Windows NT LAN Manager) 身份验证。
Kerberos - 使用Kerberos认证。可参考: Zabbix Kerberos配置
选择身份认证方法将提供两个附加字段,用于输入用户名和密码。
从 Zabbix 2.2 开始,用户宏可以在用户和密码字段中使用 。
SSL验证对等方 选中复选 以验证Web服务器的SSL证书。
服务器证书将自动从系统的证书颁发机构(CA)位置获取。 您可以使用 Zabbix server或代理配置参数 SSLCALocation 覆盖 CA 文件的位置。
这将设置 CURLOPT_SSL_VERIFYPEER cURL 选项。
Zabbix 2.4 开始支持此选项。
SSL验证主机 选中复 框以验证Web服务器证书的 公用名称(Common Name) 字段或 主题备用名称 (Subject Alternate Name) 字段是否匹配。
这将会设置 CURLOPT_SSL_VERIFYHOST cURL 选项。
Zabbix 2.4 开始支持此选项。
//SSL证书文件 // 用于客 端认证的SSL证书文件的名称。 证书文件必须为 PEM1格式。 如果证书文件还包含私钥,请将 SSL 密钥文件 字段留空。 如果密钥加密,请在 SSL 密钥密码 字段中指定密码。 包含此文件的目录由 Zabbix server或代理配置参数 SSLCertLocation 指定。
HOST.*宏和用户宏可以在此字段中使用。
这将会设置 CURLOPT_SSLCERT cURL 选项。
Zabbix 2.4 开始支持此选项。
SSL 密钥文件 用于客 端认证的SSL私钥文件的名称。 私钥文件必须为 PEM1格式。 包含此文件的目录由 Zabbix server或代理配置参数 SSLKeyLocation 指定。
HOST.* 宏和用户宏可以在此字段中使用。
这将设置 CURLOPT_SSLKEY cURL 选项。
Zabbix 2.4 开始支持此选项。
SSL 密钥密码 SSL 钥文件密码。
用户宏可以在此字段中使用。
这将设置 CURLOPT_KEYPASSWD cURL选项。
Zabbix 2.4 开始支持此选项。

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

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对证书的更改无需重启。

如果在单个文件中有客户端证书和私钥,只需在“SSL证书文件”字段中指定它,并将“SSL密钥文件”字段留空即可。 证书和密钥必须仍为PEM格式。组合证书和密钥很容易:

cat client.crt client.key > client.pem

展示

要查看为主机配置的Web场景,请转至 监控→主机,在列表中找到主机,然后单击最后一列中的Web超链接。单击场景名称以获取详细信息。

Web场景的概览也可以通过一个Web监控小部件显示在监控 → 仪表盘 中。

Web场景执行的最新结果在 监控 → 最新数据 中可用。

扩展监控

有时需要记录接收的HTML页面内容。如果某些Web场景步骤失败时,这将非常有用。 调试级别5(跟踪)用于此目的。 此级别可以在 服务器代理 代理配置文件中设置或使用运行时控制选项 (-R log_level_increase="http poller,N",其中 N 是进程号)来设置此级别。 以下示例说明如果调试级别4已设置,扩展监控如何启动:

提高所有http轮询器的日志级别:
       shell> zabbix_server -R log_level_increase="http poller"
       
       提高第二个http轮询器的日志级别:
       shell> zabbix_server -R log_level_increase="http poller,2"

如果不需要扩展Web监控,可以使用-R log_level_decrease选项来停止。