使用Zabbix,您可以检查网站的多个可用性方面。
要执行Web监控,Zabbix server 必须 最初 3-从源代码安装 支持cURL(libcurl)。
要激活Web监控,您需要定义Web场景。一个Web场景由一个或多个HTTP请求或“步骤”组成。这些步骤由Zabbix server按照预定义的顺序定期执行。如果某个主机由proxy监控,则步骤由proxy执行。
Web场景以与监控项、触发器等相同的方式附加到主机/模板。这意味着Web场景也可以在模板级别创建,然后一次性应用到多个主机。
在任何Web场景中都会收集以下信息:
在任何Web场景步骤中都会收集以下信息:
有关更多详细信息,请参见web monitoring items。
从执行Web场景中收集的数据将保存在数据库中。这些数据会自动用于图形、触发器和通知。
Zabbix还可以检查检索到的HTML页面是否包含预定义的string。它可以execute模拟的login,并跟踪页面上的模拟鼠标点击路径。
Zabbix Web监控支持HTTP和HTTPS。运行Web场景时,Zabbix可以选择性地跟随重定向(参见下面的Follow redirects选项)。最大重定向次数硬编码为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 | 您可以通过[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:<正则表达式> {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://主机/response/status {newvar}={{myvar}.btoa()} 这些宏可在步骤中通过{username}、{password}、{hostid}等形式引用。Zabbix会自动将其替换为实际值。注意带有 regex: 的变量需要一个步骤来get正则表达式的值,因此提取的值只能应用于后续步骤。若值部分以 regex: 开头,则其后内容将作为正则表达式搜索网页,匹配成功时将结果存入变量。必须包含至少一个子组以便提取匹配值。支持用户宏和{主机.*} macros。 在query字段或POST变量的表单数据中使用时,变量会自动进行URL编码;但在原始POST数据或直接用于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场景步骤中,点击步骤区块中的添加按钮。
密钥 配置 不得 在URL中使用时将解析为"******"。
步骤参数:
参数 | 描述 |
---|---|
Name | 唯一步骤名称。 支持User macros。注意,如果使用了用户宏,在web monitoring item名称中这些宏将不会被解析。 |
URL | 要连接并获取数据的URL。例如: https://www.example.com http://www.example.com/download 域名可以使用Unicode字符指定。在执行Web场景步骤时,它们会自动转换为ASCII格式的Punycode。 解析按钮可用于将可选的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选项。 |
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)匹配所需模式,否则该步骤将失败。如果为空,则不检查所需的string。 例如: Zabbix主页 Welcome.*admin 注意:此字段不支持引用在Zabbix前端创建的regular expressions。 支持用户宏和{主机.*} macros。 |
Required status codes | 预期的HTTP状态码列表。如果Zabbix收到的码不在列表中,则步骤将失败。 如果为空,则不检查状态码。 例如:200,201,210-299 支持用户宏。 |
Web场景步骤中的任何更改只有在保存整个场景时才会生效。
另请参见一个real-life example,说明如何配置Web监控步骤。
标签选项卡允许定义场景级别的 tags。
标签功能允许过滤Web场景和Web监控 items。
认证选项卡允许您配置场景的认证选项。选项卡名称旁边的绿色圆点表示已启用某种类型的HTTP认证。
认证参数:
参数 | 描述 |
---|---|
HTTP authentication | 选择认证选项: 无 - 不使用认证; 基本 - 使用基本认证; NTLM - 使用NTLM(Windows NT LAN Manager)认证; Kerberos - 使用Kerberos认证(另请参见:Configuring Kerberos with Zabbix); 摘要 - 使用摘要认证。 |
User | 输入用户名(最多255个字符)。 如果HTTP认证设置为基本、NTLM、Kerberos或摘要,则此字段可用。支持用户宏。 |
Password | 输入用户密码(最多255个字符)。 如果HTTP认证设置为基本、NTLM、Kerberos或摘要,则此字段可用。支持用户宏。 |
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密钥文件字段留空。如果密钥已加密,请在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:
Zabbix server可在不重启的情况下检测证书的更改。
如果您的客户端证书和私钥位于单个file中,请仅在“SSL证书文件”字段中指定它,并将“SSL密钥文件”字段留空。证书和密钥仍必须为PEM格式。合并证书和密钥非常简单:
要查看为 一个主机 配置的Web场景,请转至 监控 → 主机,
在列表中找到 主机,并点击最后一列中的 Web 超链接。点击
场景名称以 get 详细信息。
通过Web监控小部件,Web场景概览也可以在 仪表板 中显示。
Web场景执行的最近结果可在 监控 → 最新数据 部分查看。
有时需要记录接收到的HTML页面内容。 这在某些Web场景步骤失败时特别有用。 调试级别 5(trace)可用于此目的。 此级别可以在 debuglevel 和 debuglevel 配置文件中设置,或者通过使用 运行时控制 选项(-R log_level_increase="http poller,N"
,其中N为进程号)进行设置。 以下示例演示了在已设置调试级别 4 的情况下如何启动扩展监控:
# 提高所有http轮询器的日志级别:
zabbix_server -R log_level_increase="http poller"
# 提高第二个http轮询器的日志级别:
zabbix_server -R log_level_increase="http poller,2"
如果不需要扩展Web监控,可以使用 -R log_level_decrease
选项停止它。