用户通过Zabbix可以检查网站的可用性。
要执行Web监控,Zabbix server的初始configured(配置)必须支持cURL (libcurl) 。
若要启用web监控需要用户定义web场景。Web场景由一个或者多个HTTP请求或着"steps"(步骤)组成。这些步骤由Zabbix server以预设的顺序定制执行。如果主机由proxy完成监控,则这些步骤由proxy执行。
Web场景以与监控项、触发器等相同的方式应用到主机/模板上。这意味着WEb场景也可以在模板一级上创建,然后一次性应用于多个主机。
在任何的Web场景中Zabbix都会收集到以下信息:
在任何web场景步骤中都会收集以下信息:
更多的信息,用户可以查看 web monitoring items。
从执行web场景中收集的数据保存在数据库中。这个数据自动用于图形、触发器和通知。
Zabbix还可以检查检索到的HTML页面是否包含预定义的字符串。它可以执行模拟登录,并遵循页面上模拟鼠标点击的路径。
Zabbix网络监控同时支持HTTP和HTTPS。当运行网络场景时,Zabbix将选择性地遵循重定向(请参阅下面的选项Followredirects)。 重定向的最大数量硬编码为10 (使用cURL选项CURLOPT_MAXREDIRS) 所有cookie都会在单个场景的执行过程中保留。
要配置Web场景:
场景选项卡允许您配置Web场景的通用参数。
所有必填输入字段都标有红色星号。
场景参数:
参数 | 描述 |
---|---|
Name | 独特的场景名称。 User macros得到支持。注意如果使用用户宏,这些宏将在web monitoring item名称中保持未解析状态。 |
Update interval | 场景执行的频率。 Time suffixes得到支持,例如30s, 1m, 2h, 1d。 User macros得到支持。注意如果使用用户宏且其值被更改(例如5m → 30s),下一次检查将根据先前的值执行(在示例值中更远的未来)。 新Web场景将在创建后的60秒内进行检查。 |
Attempts | 执行Web场景步骤的尝试次数。在网络问题(超时、无连接等)的情况下,Zabbix可以重复执行步骤多次。设置的数字将对场景的每个步骤产生同等影响。最多可以指定10次尝试,默认值为1。 注意:Zabbix不会因为错误的响应代码或与所需的string不匹配而重复步骤。 |
Agent | 选择客户端agent。 Zabbix将假装成所选浏览器。当网站对不同浏览器返回不同内容时,这很有用。 可以在该字段中使用用户宏。 |
HTTP proxy | 您可以指定一个HTTP proxy使用,格式为[protocol://][username[:password]@]proxy.example.com[:port] 。这设置了CURLOPT_PROXY cURL选项。 可选的 protocol:// 前缀可用于指定替代proxy协议(协议前缀支持在cURL 7.21.7中添加)。没有指定协议时,proxy将被视为HTTP proxy。默认情况下,将使用1080端口。 如果指定,proxy将覆盖与proxy相关的环境变量,如http_proxy, HTTPS_PROXY。如果没有指定,proxy将不会覆盖与proxy相关的环境变量。输入的值将“原样”传递,不进行合理性检查。 您也可以输入SOCKSproxy地址。如果您指定错误的协议,连接将失败,监控项将变得不受支持。 注意仅支持使用HTTP proxy的简单身份验证。 可以在该字段中使用用户宏。 |
Variables | 可在场景步骤中使用的变量(URL、POST变量)。 它们具有以下格式: {macro1}=value1 {macro2}=value2 {macro3}=regex:<regular expression> {macro4}=jsonpath:<jsonpath> {macro5}=xmlxpath:<xmlxpath> {macro6}={{macro}.function()} (参见macro functions)。 注意从Zabbix 7.0.4开始,支持在变量中使用JSONPath、XML XPath和宏函数。 例如: {username}=Alexei {password}=kj3h5kJ34bd {hostid}=regex:hostid is ([0-9]+) {url}=jsonpath:$.host_url {status}=xmlxpath://host/response/status {newvar}={{myvar}.btoa()} 然后可以在步骤中引用这些宏,如{username}, {password}, {hostid}等。Zabbix将自动将它们替换为实际值。注意,带有 regex: 的变量需要一步来获取正则表达式的值,因此提取的值只能应用于后续步骤。如果值部分以 regex: 开头,则其后的部分被视为在网页中搜索的正则表达式,如果找到,将匹配存储在变量中。至少必须存在一个子组,以便可以提取匹配的值。支持用户宏和{HOST.*} 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 支持用户宏和{HOST.*} macros。 |
Enabled | 如果选中此框,场景处于活动状态,否则处于禁用状态。 |
请注意,当编辑现有场景时,表单中还有两个额外按钮:
![]() |
根据现有场景的属性创建另一个场景。 |
![]() |
删除场景的历史和趋势数据。这将使服务器在删除数据后立即执行场景。 |
如果HTTP proxy字段为空,另一种使用HTTP proxy的方法是设置与proxy相关的环境变量。
对于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场景步骤,请在步骤块中点击添加。
秘密user macros不得在URL中使用,因为它们将解析为"******"。
步骤参数:
参数 | 描述 |
---|---|
Name | 唯一的步骤名称。 支持使用User macros(用户宏)Note 如果使用用户宏,那么这些宏在web monitoring item名称中将处于未解析的状态。 |
URL | URL用于连接和检索数据。例如: https://www.example.com http://www.example.com/download 域名可以使用Unicode字符指定。在执行web场景步骤时,域名会自动转换为ASCII格式。 Parse按钮可以用于分离可选查询字段(like ?name=Admin&password=mypassword)与URL,将属性和值移动到Query fields(查询字段)中方便进行自动的URL编码。 变量可以应用在URL中通过使用{macro}语法。用户可以使用{{macro}.urlencode()}语法直接手动编码URL变量。 支持使用用户宏与{HOST.*} macros。 字符数量限制在2048个。 |
Query fields | 应用于URL的HTTP GET变量。 以配对的方式指定属性与对应的数值。 数值会自动进行URL编码。来气场景变量、用户宏或{HOST.*}宏的值会被解析,然后自动进行URL编码。系统使用{{macro}.urlencode()}语法对数值进行双重URL编码。 支持用户宏和{HOST.*} macros(宏)。 |
Post | HTTP POST 变量。 在Form data(表单数据)模式下,数据的属性和数值会对应显示。 数值会进行自动地URL加密。来自场景变量、用户宏或 {HOST.*}宏的数据会被自动解析,然后进行URL编码。 在Raw data(原始数据)模式下,属性/数值会显示在同一行中,并以& 符号相连。 {{macro}.urlencode()} 或 {{macro}.urldecode()} 语法手动对原始值进行 URL 编码/解码。 例如,id=2345&userid={user} 如果 {user} 被定义为web场景的变量,执行步骤时会被替换为它的值。如果您希望对变量进行 URL 编码,请将 {user} 替换为 {{user}.urlencode()}. 支持使用用户宏和{HOST.*} macros。 |
Variables | 应用于 GET 和 POST 函数的步骤级变量。 数据的属性和数值会对应显示 步骤级变量会覆盖场景级变量或上一步中的变量。 但是,步骤级变量的值仅影响之后的步骤(而不影响当前步骤)。 它们具有以下格式 {macro}=value {macro}=regex:<regular expression> 更多的信息请查看scenario(场景)界别的变量描述。 变量在用于查询字段或用于发布变量的表单数据时会自动进行 URL 编码,但在原始发布或直接在 URL 中使用时必须手动进行 URL 编码。 |
Headers | 执行请求时将发送的自定义 HTTP 标头。 数据的属性和数值会对应显示 步骤级别的标头将覆盖为场景指定的标题。 应该注意的是,在步骤级别定义标头会自动丢弃所有先前定义的标头,但通过从场景级别的下拉列表中选择“用户代理”来分配的默认标头除外。 但无论如何,即使'User-Agent' 默认标头也可以通过在步骤级别指定它来覆盖。 _例如,设置没有值的 'User-Agent' 属性将删除在场景级别设置的 User-Agent 值。 支持用户宏和{HOST.*} 宏。 设定CURLOPT_HTTPHEADER cURL选项。 |
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 Timeout。 支持Time suffixes(支持时间后缀),例如 30s、1m、1h。 支持User macros(用户宏)。 |
Required string | 要求使用正则表达式模式。 除非检索到的内容 (HTML) 与所需的模式匹配,否则该步骤将失败。如果为空,则不检查所需的字符串。 例如: Zabbix主页 Welcome.*admin Note: 根据regular expressions原则,不支持引用在 Zabbix 前端创建。 支持User macros(用户宏)。 |
Required status codes | 预期的 HTTP 状态代码列表。如果 Zabbix 获得不在列表中的代码,则该步骤将失败 如果为空,则不检查状态代码。 例如:200,201,210-299 支持 用户宏。 |
Web 场景步骤中的任何更改只有在保存整个场景时才会保存。
更多有关Web 配置监控步骤的信息,可以查看real-life example (真实案例)。
Tags(标签)配置选项允许定义场景级别的标签。
标签允许过滤 Web 场景和 Web的监控项。
Authentication(认证)配置选项允许用户配置场景身份认证功能。选项卡名称旁边的绿点表示启用了某种类型的 HTTP 身份验证。
认证参数:
参数 | 描述 |
---|---|
HTTP authentication | 选择认证选项: None - 不使用认证; Basic - 使用基本验证; NTLM - 使用NTLM (Windows NT LAN Manager)认证方式; Kerberos - 使用 Kerberos 验证 (更多信息,请参考: Configuring Kerberos with Zabbix); Digest - 使用 Digest 认证。 |
User | 输入用户名称(最多支持255个字符)。 当HTTP authentication设置为Basic(基础)、NTLM、Kerberos或者Digest,则用户可以填写本字段。支持使用用户宏。 |
Password | 输入用户密码(最多支持255个字符)。 当HTTP authentication设置为Basic(基础)、NTLM、Kerberos或者Digest,则用户可以填写本字段。支持使用用户宏。 |
SSL verify peer | 勾选复选框以验证 Web 服务器的 SSL 证书。 服务器证书将自动从系统范围的证书颁发机构 (CA) 位置获取。用户可以使用 Zabbix server 或 proxy 配置参数SSLCALocation覆盖 CA 文件的位置。 设置CURLOPT_SSL_VERIFYPEER cURL选项。 |
SSL verify host | 标记复选框以验证Web 服务器证书的Common Name 字段或Subject Alternate Name 字段是否匹配。 配置CURLOPT_SSL_VERIFYHOST cURL选项。 |
SSL certificate file | 用于客户端身份验证的 SSL 证书文件的名称。证书文件必须为PEM1 格式。如果证书文件还包含私钥,请将SSL key file (SSL密钥文件)字段留空。如果密钥已加密,请在SSL key password(SSL密钥密码) 字段中指定密码。 包含此文件的目录由 Zabbix server 或 proxy 配置参数由SSLCertLocation指定。 支持 HOST.* 宏和用户宏。配置CURLOPT_SSLCERT cURL选项。 |
SSL key file | 用于客户端身份验证的 SSL 私钥文件的名称。私钥文件必须是PEM1 格式。包含此文件的目录由 Zabbix server 或 proxy 配置参数由SSLKeyLocation指定。 支持使用 HOST.* 宏和用户宏。配置CURLOPT_SSLKEY cURL选项。 |
SSL key password | SSL 私钥文件密码。 支持用户宏。 配置CURLOPT_KEYPASSWD cURL选项。 |
[1] Zabbix 仅支持 PEM 格式的证书和私钥文件。 如果用户拥有PKCS #12 格式文档(通常带有扩展名*.p12 或者*.pfx)的证书和私钥数据,可以使用以下命令从中生成 PEM 文件:
Zabbix server 无需重启即可获取证书中的更改。
如果你在单个文件中有客户端证书和私钥,只需在 "SSL certificate file(SSL 证书文件)" 字段中指定它,并将 "SSL key file(SSL秘钥文件)" 字段留空。证书和密钥必须仍为 PEM 格式。组合证书和密钥是比较容易的:
若用户要查看为主机配置的 Web 场景,请转到Monitoring → Hosts(监控→主机)在列表中找到主机并单击最后一列中的 Web 超链接。 单击方案名称以获取详细信息。
Web 场景的概述也可以通过 Web 监控部件显示在Dashboards 中。
Web 场景执行的最新结果可在Monitoring → Latest data (监控→最新数据)中找到。
记录收到的 HTML 页面内容是十分必要的。尤其是当某些 Web 场景步骤失败 。调试级别 5(跟踪)的存在便是应用于此目的。此级别可以在server 和 proxy 配置文件中设置,也可以使用运行控制选项 (-R log_level_increase="http poller,N"
, 其中 N 是进程号)。以下示例演示了如何在已设置调试级别 4 的情况下启动扩展监控:
# Increase log level of all http pollers:
zabbix_server -R log_level_increase="http poller"
# Increase log level of second http poller:
zabbix_server -R log_level_increase="http poller,2"
如果不需要扩展 Web 监控,可以使用 -R log_level_decrease
选项。