Sidebar

zh:manual:web_monitoring

9. Web 监控

概况

你可以使用 Zabbix 检查几个网站可用性方面。

如果要使用 Web 检测功能,必须在 编译 Zabbix 的时候加入 cURL(libcurl) 的支持。

要使用 Web 监控,您需要定义 web 场景。Web 场景包括一个或多个 HTTP 请求或“步骤”。Zabbix 服务器根据预定义的命令周期性的执行这些步骤。

从 Zabbix2.2 开始,Web 场景和 Items,Triggers 等一样,是依附在 Hosts/Templates 的。这意味着 web 场景也可以创建一个模板,然后应用于多个主机。

所有的 web 场景会收集下列数据:

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

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

  • 平均下载速度
  • 响应时间
  • HTTP 状态码

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

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

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

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

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

配置 Web 场景

配置 web 场景:

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

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

?600

场景参数:

参数 说明
主机 (Host) 场景所属的主机名或模板的名字。
名称 (Name) 唯一的场景名称。
Zabbix 2.2 开始,这个名字支持用户宏和 {HOST.*}
应用 (Application) 选择一个场景属于的应用 。
Web 场景监控项在 监测中 (Monitoring)→最新数据 (Latest data) 栏中将会分组在选择的应用中。
新的应用 (New application) 对场景创建个新的应用。
更新间隔 (Update interval) (秒) 执行场景时间间隔,以秒为单位。
重试次数 (Attempts) 尝试执行 web 场景中步骤的次数。对于网络问题(超时,没有连接,等等) Zabbix 可以多次重复执行步骤。这个数字对场景的中的所有步骤都会生效。尝试次数最大可以设置为 10,默认值为 1。
注意 : Zabbix 不会因为一个错误的响应代码或者期望的字符串没有出现就会触发这个重试。
Zabbix 2.2 开始支持此参数。
代理 (Agent) 选择一个客户端。
zabbix 会模拟选择的浏览器,当一个网站对不同的浏览器返回不同的内容的时候是非常有用的。
zabbix 2.2 开始 ,这块可以使用用户自定义宏。
HTTP 代理 (HTTP proxy) 您可以指定要使用一个 HTTP 代理,使用格式 http://[username[:password]@]proxy.mycompany.com[:port]
默认使用 1080 端口。
如果指定,代理将覆盖代理相关联的环境变量,比如 http_proxy HTTPS_PROXY。如果没有指定,那么代理将不会覆盖代理相关的环境变量。
输入的值是通过“是 (as is)”, 不需要进行完整性检查。你也可以输入 SOCKS 代理地址。如果您指定了错误的协议,连接会失败,项目将成为不受支持的。没有指定的协议,代理将被视为一个 HTTP 代理、\ 注意 : HTTP 代理仅支持简单身份验证。
此字段中可以使用用户宏。
Zabbix 2.2 开始支持此参数。
变量 (Variables) 可以在场景中的步骤(URL,POST 变量)中使用变量。
它们具有以下格式:
{macro1}=value1
{macro2}=value2
{macro3}=regex:<regular expression>
例如:
{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 头 (Headers) 执行请求时将发送的自定义的 HTTP headers。
应使用与在 HTTP 协议中出现的语法相同的语法列出标题,可选地使用 CURLOPT_HTTPHEADER cURL 选项支持的一些其他功能。
例如:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
用户宏和 {HOST.*} 和可以在此字段中使用。
Zabbix 2.4 开始支持指定自定义头。
启用 (Enabled) 如果选中此复选框,则此场景处于启用状态,否则禁用。

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

基于现有的场景的属性创建另一个场景。
删除场景的历史记录和趋势数据。 这将使服务器在删除数据后立即执行场景。
如果 HTTP proxy 字段留空,使用 HTTP 代理的另一种方法是设置代理相关的环境变量。

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

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

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

配置步骤

步骤参数:

参数 说明
名称 (Name) 唯一步骤名称。
Zabbix 2.2 开始,该名称可以支持用户宏和 {HOST.*}
网址 (URL)

认证参数:

参数 说明
验证 (Authentication) 验证参数。
None - 未使用身份验证。
基本认证 - 使用基本认证。
NTLM authentication - 使用 NTLM (Windows NT LAN Manager) 身份验证。
选择身份验证方法将提供两个附加字段,用于输入用户名和密码。
从 Zabbix 2.2 开始 ,用户宏可以在用户和密码字段中使用 。
对等 SSL 验证 (SSL verify peer) 选中复选框以验证 Web 服务器的 SSL 证书。
服务器证书将自动从系统的证书颁发机构(CA)位置获取。 您可以使用 Zabbix 服务器或代理配置参数 SSLCALocation 覆盖 CA 文件的位置。
这将设置 CURLOPT_SSL_VERIFYPEER cURL 参数.
Zabbix 2.4 开始支持此选项。
SSL 验证主机 (SSL verify host) 选中复选框以验证 Web 服务器证书的 公用名称 (Common Name) 字段或 主题备用名称 (Subject Alternate Name) 字段是否匹配、\ 这将会设置 CURLOPT_SSL_VERIFYHOST cURL 参数。
Zabbix 2.4 开始支持此选项。
SSL 证书文件 (SSL certificate file) 用于客户端认证的 SSL 证书文件的名称。 证书文件必须为 PEM1格式。 如果证书文件还包含私钥,请将 SSL 密钥文件 (SSL key file) 字段留空。 如果密钥加密,请在 SSL 密钥密码 (SSL key password) 字段中指定密码。 包含此文件的目录由 Zabbix 服务器或代理配置参数 SSLCertLocation 指定。
HOST.*宏和用户宏可以在此字段中使用。
这将会设置 CURLOPT_SSLCERT cURL 参数、\ Zabbix 2.4 开始支持此选项。
SSL 密钥文件 (SSL key file) 用于客户端认证的 SSL 私钥文件的名称。 私钥文件必须为 PEM1格式。 包含此文件的目录由 Zabbix 服务器或代理配置参数 SSLKeyLocation 指定。
HOST.* 宏和用户宏可以在此字段中使用。
这将设置 CURLOPT_SSLKEY cURL 参数。
Zabbix 2.4 开始支持此选项。
SSL 密钥密码 (SSL key password) 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 服务器对证书的更改无需重启。
如果在单个文件中有客户端证书和私钥,只需在“SSL 证书文件”字段中指定它,并将“SSL 密钥文件”字段留空即可。 证书和密钥必须仍为 PEM 格式。 组合证书和密钥很容易:
cat client.crt client.key > client.pem

Display

要查看定义的 Web 场景的详细数据,请转到 监控中 (Monitoring)→Web 最新数据 (Latest data)。 单击方案名称以查看更详细的统计信息。

可以在 监控中 (Monitoring)→仪表板 (Dashboard) 中查看 Web 监控场景的概述。

监控扩展

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

Increase log level of all http pollers:
shell> zabbix_server -R log_level_increase="http poller"
Increase log level of second http poller:
shell> zabbix_server -R log_level_increase="http poller,2"

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