深入浅出Zabbix 3.0 -- 第十章 Web 监控

第十章 Web 监控

Web monitoring是用来监控Web站点多方面的可用性,可以监控Web站点的下载速度、返回码和响应时间。Zabbix能够检测HTML中包含的预先定义的字符串,也可以模拟登录网站和鼠标的动作,对特定的结果进行比较,例如特定字符串、返回码等,从而判断站点服务的可用性。Zabbix支持HTTP和HTTPS协议,并在完成每一步模拟访问时会对cookie进行保存。

在Zabbix中设置Web监控时,需要先定义web scenarios(场景),一个webscenarios是由多个HTTP请求(steps)组成,这些steps(步骤)会按照预先定义的顺序执行。和定义监控项一样,web scenarios也可以在主机或模板级别定义。

10.1 Web监控项

Web 监控项主要有两种:Scenario items 和Scenario step items。这些监控项默认历史保存时间为30天,趋势保存时间为90天。

10.1.1 Scenario items

Web Scenario创建完成后Zabbix会自动添加下面的监控项,并连接它们到已经选中的应用。

  • Download speed for scenario<Scenario>:该监控项收集整个Scenario有关的平均下载速度数据,单位为bytes per second。监控项的key是:web.test.in[Scenario,,bps],类型是:Numeric(float)。
  • Failed step of scenario<Scenario>:该监控项将显示整个Scenario中失败的step的数量,如果所有step都执行成功返回0。监控项的key是:web.test.fail[Scenario],类型是: Numeric(unsigned)。
  • Last error message of scenario<Scenario>:该监控项返回Scenario的最后的错误信息文本,如果Scenario中有失败的step时会保存一个新的值,如果所有step都成功执行时没有新的值被保存。监控项的key是:web.test.error[Scenario],类型是: Character。

Scenario items也可以用来创建触发器和定义通知条件。

例如:

  • 创建一个Web ScenarioFailed的触发器时, 触发器表达式可以定义为: {host:web.test.fail[Scenario].last()}<>0
  • 创建一个Web ScenarioFailed的触发器时,在触发器名称中使用问题的描述信息。触发器名称可以定义为:

Web scenario "Scenario" failed: {ITEM.VALUE}

触发器表达式可以定义为:

{host:web.test.error[Scenario].strlen()}>0 and{host:web.test.fail[Scenario].min()}>0

  • 创建一个Webapplication is slow的触发器时,触发器表达式可以定义为:

{host:web.test.in[Scenario,,bps].last()}<10000

在实际环境中,请把Scenario 替换成你定义的场景的实际名称。

10.1.2 Scenario step items

在Scenario中每个step创建完成后Zabbix会自动添加下面的监控项,并连接它们到选中的应用。

  • Download speed for step<Step> of scenario <Scenario>:该监控项收集step有关的平均下载速度数据,单位为 bytesper second。监控项的key是: web.test.in[Scenario,Step,bps],类型是: Numeric(float)。
  • Response time for step<Step> of scenario <Scenario>:该监控项收集step有关的响应时间的数据,单位为秒。响应时间是从请求开始计时,直到所有信息传输完毕。监控项的key是:web.test.time[Scenario,Step,resp],类型是:Numeric(float)。
  • Response code for step <Step>of scenario <Scenario>:该监控项显示step的返回代码,如50x、40x等在实际环境中应该重点监控。监控项的key是:web.test.rspcode[Scenario,Step],类型是:Numeric(unsigned)。

在创建触发器时也可以使用这些Scenario step item。例如,创建一个ZabbixGUI login is too slow的触发器时,触发器表达式可以定义为:

{zabbix:web.test.time[ZABBIX GUI,Login,resp].last()}>3

10.2使用Variables

配置Web 监控时在Scenario或step级别都可以使用Variables(变量),实际上就是用户自定义的宏变量。在scenario级别定义的变量可以在steps中引用,例如URL、Post变量等。在step级别定义的宏变量可以在GET或POST函数中使用,step级别定义的变量可以覆盖scenario级别的变量或上一个step中定义的变量。

变量定义的格式为:

{macro1}=value1

{macro2}=value2

{macro3}=regex:<regular expression>。

例如{username}=Alexei,{password}=kj3h5kJ34bd,{sid}=regex:name="sid"value="([0-9a-z]{16})" 等。如果是以regex开始,那它的后面是一个正则表达式,会在web页面中搜索,如果发现,会将匹配的值保存到变量中。在step中应用macros时,例如{username}、{password}、{hostid}等,Zabbix会自动替换成实际的值。

在配置变量时,还可以使用Host.* 宏变量和用户自定义的宏变量。需要注意的是变量不能经过URL编码处理。

10.3 配置Web监控

在Configuration --> Hosts/Templates 页面中,点击需要创建Web 监控的主机或模板中的Web链接,在Web monitoring页面的右上角点击 Createweb scenario按钮,进入Web 监控配置页面。如下图10-1所示。

图10-1

Scenario标签中各配置参数的含义如下:

  • Name:唯一的scenario名称。
  • Application:选择一个scenario归属的监控项组。
  • New application:输入一个scenario归属的新监控项组的名称。
  • Update interval (in sec):执行的时间间隔。
  • Attempts:用于执行web scenario步骤尝试的次数。有时候会因为网络出现问题(超时、连接丢失等)的情况下可以重复执行步骤几次,该设置会影响scenario中的每一个步骤。最多可以指定10次,默认值为1。需要注意的是Zabbix不会因为一个错误响应代码或一个必须的字符串不匹配而重复执行步骤。
  • Agent:选择一个浏览器客户端,当一个网站针对不同的浏览器返回不同的内容时非常有用。在这里也可以使用用户定义的宏变量。
  • HTTP proxy:指定一个HTTP 代理。使用的格式为:http://[username[:password]@]proxy.mycompany.com[:port],默认使用端口1080。如果指定http_proxy、HTTPS_PROXY等代理环境变量,将会覆盖proxy相关的环境变量。需要注意的是HTTP代理只支持简单的认证。在这里也可以使用用户定义的宏变量。
  • Variables:scenario级别的变量列表。
  • Headers:当执行请求时HTTP headers将被发送。Headers使用HTTP协议的语法列出,这将设置cURL选项CURLOPT_HTTPHEADER。例如:Accept-Charset:utf-8,Accept-Language: en-US,Content-Type: application/xml; charset=utf-8。在这里可以使用Host.*和用户定义的宏变量。
  • Enabled:勾选此项为启用该Web scenario。

Steps标签配置页面如下图10-2所示。

图10-2

点击Add弹出step配置页面,如下图10-3所示。

图10-3

Step配置页面中各参数的含义如下:

  • Name:唯一的step名称。
  • URL:需要监控的URL,支持HTTP或HTTPS协议。GET参数可以直接写在URL中,也可以使用宏变量,长度不能超过2048个字符。
  • Post:HTTP请求中的 POST变量。例如id=2345&userid={user},如果 {user} 是在web scenario中定义的宏变量,在step执行时会自动替换相应的值。这个变量会原样发送,不会进行URL编码。
  • Variables:step级别的变量列表。
  • Headers:当执行请求时HTTP headers将被发送。Headers使用HTTP协议的语法列出。Step级别上定义的Headers会覆盖scenario级别的Headers。在这里可以使用HOST.*和用户定义的宏变量。这将设置cURL选项CURLOPT_HTTPHEADER。
  • Follow redirects:勾选此项允许HTTP redirects(重定向)。这将设置cURL选项CURLOPT_FOLLOWLOCATION。
  • Retrieve only headers:勾选此项仅接收HTTP响应的headers。这将设置cURL选项CURLOPT_NOBODY。
  • Timeout:超过设置的秒数后Zabbix不会再处理URL。实际上这个参数定义了最大的连接时间和完成HTTP请求的最大时间。因此Zabbix在step中处理URL不会超出2倍的设置时间。
  • Required string:需要的正则表达式。除非接收的HTML中的内容匹配正则表达式,否则step将执行失败。如果该字段为空时不执行检测。这里需要注意不能引用在Zabbix 前端页面中创建的正则表达式。在这里也可以使用宏变量。
  • Required status codes:设置期望的HTTP状态码列表,例如200,201,202-229。如果Zabbix收集的状态码在这个列表中没有时step将执行失败。如果该字段为空时不执行检测。在这里也可以使用宏变量。

Authentication标签配置页面如下图10-4所示。

图10-4

Authentication标签配置页面中各参数的含义如下:

  • HTTP authentication:身份验证选项。包括:
  • None:不使用身份验证。
  • Basic:使用基本身份验证。
  • NTLM:使用NTLM(Windows NT LAN Manager)身份验证。

选择Basic或NTLM时页面会出现用户名和密码的输入字段,在用户名和密码字段中可以使用宏变量。

  • SSL verify peer:勾选此项为验证web服务器的SSL证书。服务器证书会自动从系统CA的存储位置获得。你可以使用Zabbixserver或 proxy server的配置文件中设置参数SSLCALocation保存证书。这将设置cURL选项CURLOPT_SSL_VERIFYPEER。
  • SSL verify host:勾选此项为验证web服务器证书匹配的Common Name 字段或Subject Alternate Name 字段。这将设置cURL选项CURLOPT_SSL_VERIFYHOST。
  • SSL certificate file:用于客户端身份验证的 SSL 证书文件的名称。证书文件必须是 PEM1 格式。如果证书文件还包含私钥,则将 SSL Key文件字段留空。如果对密钥进行加密,在 SSL Key密码字段中指定密码。Zabbixserver或 proxy server的配置文件中设置参数SSLCALocation保存证书文件。在这里可以使用HOST.*和用户定义的宏变量。这将设置cURL选项CURLOPT_SSLCERT。
  • SSL key file:用于客户端身份验证 SSL 私钥文件的名称。私钥文件必须是PEM1格式。Zabbix server或 proxy server的配置文件中设置参数SSLCALocation保存证书文件。在这里可以使用HOST.*和用户定义的宏变量。这将设置cURL选项CURLOPT_SSLKEY。
  • SSL key password:SSL 私钥文件密码。在这里可以使用用户定义的宏变量。这将设置cURL选项CURLOPT_KEYPASSWD。

10.3 添加Web监控实例

通过前面的介绍你已经了解Web scenario的配置,下面我们通过监控Zabbixserver前端页面为例子进一步了解Web监控的实现过程。

10.3.1 创建Web Scenario

1、  点击Configuration --> Hosts,在主机列表中点击Zabbix server的web链接进入Web monitoring页面。

2、  点击Web monitoring页面右上角的Create webscenario 按钮。

3、  在Scenario标签配置页面中的Name中输入名称。例如Zabbix Availability Check。

4、  在New application字段中输入监控项组名称,创建一个新的监控项组。例如Zabbix web check。

5、   保持Update interval和Attempts的默认值,Agent字段中选择Chrome 38.0(Windows)。

6、  在Variables字段中,填写Zabbix前端默认的用户名和密码:

{user}=Admin

{password}=zabbix

7、  勾选Enabled。

配置完上述参数后,我们还需要在Steps标签中添加step,这时候你要点击Add按钮保存Web Scenario时会看到页面提示Field "Steps" is mandatory。下面我们接着添加step。

10.3.2 添加step

Step 1:第一步检测Zabbix前端页面能否正常访问。

1、  在Steps标签中点击Add链接。

2、  在弹出页面中的Name中输入名称,例如Zabbix frontend。

3、  在URL中填写Zabbix前端页面的地址,例如http://192.168.10.112/zabbix/index.php。

4、  在Required string字段中填写 Zabbix SIA。

5、  在Required status codes字段中填写 200。

6、  点击Add按钮添加step 1到列表中,如下图10-5所示。

图10-5

Step 2:第二步登录Zabbix,使用在Scenario级别定义的变量{user}和{password}。

1、  在Steps标签中点击Add链接。

2、  在弹出页面中的Name中输入名称,例如Log in。

3、  在URL中填写Zabbix前端登录页面的地址,例如http://192.168.10.112/zabbix/index.php。

4、  在Post字段中填写 name={user}&password={password}&enter=Signin。

5、  在Variables字段中填写 {sid}=regex:name="sid"value="([0-9a-z]{16})" 或者 {sid}=regex:sid=([0-9a-z]{16})。

6、  在Required status codes字段中填写 200。

7、  点击Add按钮添加step 2到列表中,如下图10-6所示。

图10-6

Step 3:第三步检测是否登录成功。

1、  在Steps标签中点击Add链接。

2、  在弹出页面中的Name中输入名称,例如Check login。

3、  在URL中填写Zabbix前端页面的地址,例如http://192.168.10.112/zabbix/index.php。

4、  在Required string字段中填写Administration。

5、  在Required status codes字段中填写 200。

6、  点击Add按钮添加step 3到列表中,如下图10-7所示。

图10-7

Step 4:第四步从退出Web登录,确保所有的sessions都被关闭。

1、  在Steps标签中点击Add链接。

2、  在弹出页面中的Name中输入名称,例如Log out。

3、  在URL中填写Zabbix前端页面的地址,例如http://192.168.10.112/zabbix/index.php?reconnect=1&sid={sid}。

4、  在Required status codes字段中填写 200。

5、  点击Add按钮添加step 4到列表中,如下图10-8所示。

图10-8

Step 5:第三步检测是否登录成功。

1、  在Steps标签中点击Add链接。

2、  在弹出页面中的Name中输入名称,例如Check logout。

3、  在URL中填写Zabbix前端页面的地址,例如http://192.168.10.112/zabbix/index.php。

4、  在Required string字段中填写Username。

5、  在Required status codes字段中填写 200。

6、  点击Add按钮添加step 5到列表中,如下图10-9所示。

图10-9

当所有的step添加后,点击Add按钮保存所有的配置。然后到Monitoring --> Latest data页面中浏览items的数据,如下图10-10所示。

图10-10

在Monitoring --> Web页面,可以看到Web监控的列表,如下图10-11所示。

图10-11

点击Web scenario的名称ZabbixAvailability Check可以看到更详细的内容,除了一个包括Speed、Response time、Response code和Status的表格,还可以看到每个step的图形。如下图10-12所示。

图10-12

时间: 2024-07-30 09:27:43

深入浅出Zabbix 3.0 -- 第十章 Web 监控的相关文章

深入浅出Zabbix 3.0 -- 第六章 监控项配置与管理

第六章 监控项配置与管理 Zabbix系统中监控项(Items)的定义和管理非常重要,所有的监控指标都是通过定义不同的监控项收集数据.Zabbix通过主机作为一个逻辑单元组织和管理监控项,所有的监控项都必须属于某个主机,且在同一主机中只能有一个唯一的监控项存在. 6.1监控数据 Zabbix 不同于与大多数其他监控解决方案的一个重要特征是Zabbix通过监控项从被监控对象收集的数据是原始数据,而不是告警或状态的更新数据.大多数监控方案中,不管是通过agent或其他方法收集到监控数据后,会对该数据

深入浅出Zabbix 3.0 -- 第二章 Zabbix Web操作与定义

第二章  Zabbix Web操作与定义 本章介绍Zabbix 中一些基本概念的定义和web前端页面的操作,包括Zabbix中使用的一些术语的定义,Web页面中用户管理.主机和主机组的管理,以及监控项.模板.触发器.告警的管理和操作,还有Graphs.Screens.Maps及Reports等.通过本章的学习掌握一些基本概念并能够通过Web页面的操作完成对Zabbix的管理. 2.1 定义 hosts(主机) Zabbix中需要监控的服务器.交换机及其他设备我们都统一称作host,这些设备与Za

深入浅出Zabbix 3.0 -- 第十一章 VMware 监控

第十一章  VMware 监控 随着虚拟化技术应用的越来越广泛,Zabbix作为基础架构的监控系统,也可以很好的支持基于VMware的虚拟化平台及虚拟机进行监控.通过在Zabbix中预先定义的host prototypes(主机原型)利用low-level discovery rules会自动发现VMware hypervisors和虚拟机,并创建主机对它们进行监控. 在Zabbix中对虚拟机的监控分两步完成,首先,通过vmwarecollector实例收集虚拟机数据,这些实例使用SOAP协议从

深入浅出Zabbix 3.0 -- 第八章 管理告警

第八章  管理告警 在本章中可以了解到Triggers(触发器)的配置和Actions(动作)的配置,详细介绍触发器的规则表达式.告警.告警升级等, 作为一个监控解决方案,告警是不可或缺的功能.当从监控对象上收集的监控项的值满足系统中设定的阈值即产生告警事件,依据告警事件的不同类型,产生相应的告警动作,给用户发送告警信息,或者执行命令等等.Zabbix中的告警流程如下图7-1所示. 图 8-1 8.1 触发器 我们知道在Zabbix中是通过监控项收集监控数据,然后这些数据会保存在数据库中.有时候

zabbix通过api批量添加web监控

zabbix 添加web监控始终是大问题,不能自动发现只能手动添加 写了个py脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- import json import urllib2 import sys class zabbixtools:     def __init__(self):         self.url = "Zabbixserver"         self.header = {"Content-Type&

深入浅出Zabbix 3.0 -- 第九章 数据可视化

第九章 数据可视化 Zabbix是一个非常灵活.强大的监控系统,它不仅能够监控大量不同类型的数据指标,并为这些数据及数据之间的关联提供了多种可视化工具,通过图形.展示屏.网络拓扑图等将数据直观的展现出来,实时的浏览和查看监控设备的状态. 9.1 图形 Zabbix 3.0中支持三种graphs(图形),即simple graphs(简单图形).ad-hocgraphs(自组图形)和customgraphs(自定义图形). 9.1.1 简单图形 简单图形是Zabbix系统内置的一种方法,为监控项数

深入浅出Zabbix 3.0 -- 第七章 模板配置与管理

第七章  模板配置与管理 我们在主机中不仅可以添加很多需要监控的指标(即监控项),还可以添加图形.触发器.监控项组.展示屏.Web scenarios和low-level Discovery,如果在每个主机中添加这些对象,尤其是在一个大型环境中,其工作量是不可想象的,何况需要监控的主机有很多具有相同的监控属性,需要重复相同的配置工作,如果手工完成这些配置任务几乎是不可能的.好在Zabbix为我们提供了模板,通过在不同的模板中添加监控项.触发器.图形等配置并应用到任意数量的主机上.当然对于特殊的监

深入浅出Zabbix 3.0 -- 第三章 Zabbix 监控方式

第三章  Zabbix 监控方式 有人说通过Zabbix可以完成任何监控任务,只有你想不到的,但没有监控不了的,真是这样吗?当你通过本章了解了Zabbix提供的多种监控方式后,你就会发现此言非虚. 这里所说的监控方式,实际上就是Zabbix中的配置监控项时选择的监控项类型.为了适应各种应用场景的需要,Zabbix提供了多种方法帮助你更好的完成监控任务. Zabbix 3.0中提供的监控方式包括: Active agents Passive agents Extending agents Simp

深入浅出Zabbix 3.0 -- 第五章 开始监控

第五章  开始监控 通过前面的章节相信你已经了解Zabbix server提供的丰富的监控方式,也了解了主机.用户.组及权限的管理.在本章将通过一个主机监控的例子向你介绍Zabbix中配置监控的流程,全面了解配置监控的每一个步骤. 5.1 监控配置流程 一般Zabbix中监控配置流程如下: 1.  创建主机组. 2.  创建主机(通过设置New group字段可以同时创建主机组). 3.  创建监控项组. 4.  创建监控项(通过设置New application字段可以同时创建监控项组). 5