Web监控
您可以使用Zabbix对多个网站进行可用性方面监控:
若要使用Web监控,必须编译(configured)安装时加入cURL(libcurl)库支持要使用Web监控,您需要定义web场景。Web场景包括一个或多个HTTP请求或“步骤”。Zabbix服务器根据预定义的命令周期性的执行这些步骤,如果主机是通过Proxy代理监控的话,这些步骤将由proxy代理执行。
从Zabbix2.2开始,Web场景和Items,Triggers等一样,是依附在Hosts/Templates上的。这意味着web场景也可以创建到一个模板里,然后应用于多个主机
任何web场景都会收集下列数据:
- 整个场景中所有步骤的平均下载速度
- 失败的步骤数量
- 最近的错误信息
对于web场景的所有步骤,都会收集下列数据:
- 平均下载速度
- 响应时间
- HTTP状态码
更多详情,请参见webmonitoringitems.
执行web场景收集的数据保存在数据库中。数据自动用于图形、触发器和通知。
Zabbix还支持获取HTML内容中是否存在设置的字符串。还可以模拟登录动作和模拟鼠标单击。
Zabbixweb监控同时支持HTTP和HTTPS。当运行web场景时,Zabbix将选择跟踪重定向(请参见下面的选择跟踪重定向)。重定向硬编码的最大数量为10(使用cURL选项CURLOPT_MAXREDIRS)。在执行web场景时,所有Cookie都会保存。
web监控使用HTTPS协议请参阅已知问题
配置Web场景配置web场景:
- 转到:配置(Configuration)–>主机(或者模板)
- 点击主机(host)/模板(template)行中的Web
- 点击右上角创建web场景(或点击场景名字进行编辑现有的场景)
- 在场景的表单中输入参数
场景选项卡允许您配置此Web场景的通用参数。
所有必填字段都用红色型号标注。
场景参数:
参数说明主机(Host)场景所属的主机名或模板的名字。名称(Name)唯一的场景名称。Zabbix2.2开始,这个名字支持用户宏和{HOST.*}宏。应用(Application)选择一个场景属于的应用。Web场景监控项在监测中(Monitoring)→最新数据(Latestdata)栏中将会分组在选择的应用中。新的应用(Newapplication)对场景创建个新的应用名字。更新间隔(Updateinterval)(秒)Web场景时间间隔,以秒为单位。支持时间的后缀,例如30s,1m,2h,1d,自从Zabbix3.4.0开始。支持用户宏,自从Zabbix3.4.0开始。注意,如果用户使用宏变量来改变值(如5m→30s),将在下一个执行周期执行更新(这是一个比较好例子)。重试次数(Attempts)尝试执行web场景中步骤的次数。对于网络问题(超时,没有连接,等等)Zabbix可以多次重复执行步骤。这个数字对场景的中的所有步骤都会生效。尝试次数最大可以设置为10,默认值为1。注意:Zabbix不会因为一个错误的响应代码或者期望的字符串没有出现就会触发这个重试。Zabbix2.2开始支持此参数。代理(Agent)选择一个客户端。zabbix会模拟选择的浏览器,当一个网站对不同的浏览器返回不同的内容的时候是非常有用的。zabbix2.2开始,这块可以使用用户自定义宏。HTTP代理(HTTPproxy)您可以指定要使用一个HTTP代理,使用格式http://[username[:password]@]proxy.mycompany.com[:port]默认使用1080端口。如果指定,代理将覆盖代理相关联的环境变量,比如http_proxyHTTPS_PROXY。如果没有指定,那么代理将不会覆盖代理相关的环境变量。输入的值是通过“是(asis)”,不需要进行完整性检查。你也可以输入SOCKS代理地址。如果您指定了错误的协议,连接会失败,项目将成为不受支持的。没有指定的协议,代理将被视为一个HTTP代理、\注意:HTTP代理仅支持简单身份验证。此字段中可以使用用户宏。Zabbix2.2开始支持此参数。变量(Variables)可以在场景中的步骤(URL,POST变量)中使用变量。它们具有以下格式:{macro1}=value1{macro2}=value2{macro3}=regex:<regularexpression>例如:{username}=Alexei{password}=kj3h5kJ34bd{hostid}=regex:hostidis([0-9]+)然后可以在{username},{password}和{hostid}的步骤中引用宏。Zabbix将自动将其替换为实际值。请注意,使用的变量:需要一个步骤来获取正则表达式的值,因此提取的值只能应用于后续步骤。如果值部分以regex:开头,那么它之后的部分将被视为正则表达式,将搜索网页,如果找到,则将匹配存储在变量中。注意,必须存在至少一个子组,以便可以提取匹配的值。Zabbix2.2开始支持变量中的正则表达式匹配。Zabbix2.2开始,{HOST.*}宏和用户宏可以在此字段中使用。在查询字段或提交表单数据时,变量会自动进行URL编码,但使用raw方式提交数据或者直接在URL中使用时,必须手动进行URL编码HTTP头(Headers)执行请求时将发送的自定义的HTTPheaders。应使用与在HTTP协议中出现的语法相同的语法列出标题,可选地使用CURLOPT_HTTPHEADERcURL选项支持的一些其他功能。例如:Accept-Charset=utf-8Accept-Language=en-USContent-Type=application/xml;charset=utf-8用户宏和{HOST.*}宏和可以在此字段中使用。从Zabbix2.4开始支持指定自定义头。启用(Enabled)如果选中此复选框,则此场景处于启用状态,否则禁用。注意,当编辑一个现有的场景时,会出现两个额外的按钮
基于现有场景的属性创建另一个场景。
删除场景的历史记录和趋势数据。这将使zabbix服务器在删除数据后立即执行该web场景
如果HTTPproxy字段留空,使用HTTP代理的另一种方法是设置代理相关的环境变量。对于HTTP检查-为Zabbix服务器用户设置http_proxy环境变量。例如,http_proxy=http://proxy_ip:proxy_port.
对于HTTPS检查-设置HTTPS_PROXY环境变量。例如,HTTPS_PROXY=http://proxy_ip:proxy_port.通过运行shell命令可以获得更多详细信息:#mancurl.
“步骤”选项卡允许您配置Web场景步骤。要添加Web场景步骤,请在步骤(Steps)单击添加(Add)。
配置步骤
步骤参数:
参数说明名称(Name)唯一步骤名称。Zabbix2.2开始,该名称可以支持用户宏和{HOST.*}宏。网址(URL)用于连接和检索数据的网址。例如:https://www.google.comhttp://www.zabbix.com/downloadZabbix3.4以后,可以以Unicode编码指定域名。执行Web场景步骤时,它们将自动被禁止转换为ASCII。解析按钮可用于从URL中分离可选的查询字段(例如?name=Admin&password=mypassword),将属性和值放到查询字段以进行自动URL编码。变量可以在URL中使用,使用{macro}语法。变量可以使用{{macro}.urlencode()}语法手动进行URL编码。Zabbix2.2开始,{HOST.*}宏和用户宏可以在此字段中使用。Zabbix2.4开始,最多字符为2048个。查询字段(Queryfields)URL的HTTPGET变量。指定属性和值对。值将自动进行URL编码。来自场景变量,用户宏或{HOST。*}宏的值将被解析,然后自动进行URL编码。使用{{macro}.urlencode()}语法将对其进行双重URL编码。从Zabbix2.2开始开始支持用户宏和{HOST.*}宏。PostHTTPPOST变量。在Formdata模式下,指定属性和值。值被自动进行URL编码。来自场景变量、用户宏或{HOST.*}宏的值将被解析,然后自动进行URL编码。在Rawdata模式中,属性/值显示在一条线上,并与&符号连接。Raw方式的值可以使用{{macro}.urlencode()}或{{macro}.urldecode()}手动进行URL编码/解码。例如:id=2345&userid={user}如果{user}被定义为web场景的变量,则当执行步骤时,它的值会被替换。如果你想对变量进行URL编码,用{{user}.urlencode()}替换{user}。Zabbix2.2开始支持用户宏和{HOST.*}宏。变量(Variables)可用于GET和POST方法的步级变量。指定属性和值。步骤变量覆盖之前的场景变量或步骤变量。然而,一个步骤变量的值仅影响之后的步骤(而不是当前步骤)。它们具有以下格式:{macro}=value{macro}=regex:<regularexpression>有关更多信息,请参阅场景(scenario)级别上的变量描述。Zabbix2.2开始支持步骤变量。Zabbix2.2开始,{HOST.*}宏和用户宏可以在此字段中使用。在查询字段或提交表单数据时,变量会自动进行URL编码,但使用raw方式提交数据或者直接在URL中使用时,必须手动进行URL编码HTTP头(Headers)执行请求时将发送的自定义HTTPheaders。指定属性和值步骤级别上的headers将覆盖为该场景指定的headers。例如,设置“User-Agent:”为空时,将覆盖在场景上设置的User-Agent名称。支持用户宏和{HOST.*}宏、\这将设置CURLOPT_HTTPHEADERcURL选项。Zabbix2.4开始,支持指定自定义HTTP头跟踪重定向(Followredirects)选中该复选框以跟踪HTTP重定向。将会设置CURLOPT_FOLLOWLOCATIONcURL选项。Zabbix2.4开始支持此选项。仅检索标头(Retrieveonlyheaders)选中复选框,仅从HTTP响应中检索标题。这将设置CURLOPT_NOBODYcURL选项。Zabbix2.4开始支持此选项。超时时间(Timeout)Zabbix根据设置的秒数以内来处理URL。实际上,此参数定义为连接到URL的最大时间和执行HTTP请求的最长时间。因此,Zabbix不会在步骤上花费超过2x超时时间。支持时间的后缀,例如30s,1m,2h,1d,自从Zabbix3.4.0开始。支持用户宏,自从Zabbix3.4.0开始必需的字符串(Requiredstring)必需的正则表达式。除非检索到的内容(HTML)匹配所需的模式,否则步骤将失败。如果为空,则不执行检查。例如:Zabbix的主页、\Welcome.*admin注意:在此字段中不支持引用在Zabbix前端中创建的正则表达式(regularexpressions)。Zabbix2.2开始,支持用户宏和{HOST.*}宏状态码(Requiredstatuscodes)可以设置预期的HTTP状态代码列表。如果Zabbix获取的HTTP状态码不在列表中,该步骤将认为为失败。如果为空,则不执行检查。例如:200,201,210-299Zabbix2.2开始,支持用户宏。Web场景步骤中的任何更改只有在保存整个场景时才会保存。另请参见如何配置Web监控步骤的示例。
配置身份验证身份验证选项卡允许您配置场景身份验证选项。
认证参数:
参数说明验证(Authentication)验证参数。None-未使用身份验证。基本认证-使用基本认证。NTLMauthentication-使用NTLM(WindowsNTLANManager)身份验证。选择身份验证方法将提供两个附加字段,用于输入用户名和密码。从Zabbix2.2开始,用户宏可以在用户和密码字段中使用。对等SSL验证(SSLverifypeer)选中复选框以验证Web服务器的SSL证书。服务器证书将自动从系统的证书颁发机构(CA)位置获取。您可以使用Zabbix服务器或代理配置参数SSLCALocation覆盖CA文件的位置。这将设置CURLOPT_SSL_VERIFYPEERcURL参数.Zabbix2.4开始支持此选项。SSL验证主机(SSLverifyhost)选中复选框以验证Web服务器证书的公用名称(CommonName)字段或主题备用名称(SubjectAlternateName)字段是否匹配、\这将会设置CURLOPT_SSL_VERIFYHOSTcURL参数。Zabbix2.4开始支持此选项。SSL证书文件(SSLcertificatefile)用于客户端认证的SSL证书文件的名称。证书文件必须为PEM1格式。如果证书文件还包含私钥,请将SSL密钥文件(SSLkeyfile)字段留空。如果密钥加密,请在SSL密钥密码(SSLkeypassword)字段中指定密码。包含此文件的目录由Zabbix服务器或代理配置参数SSLCertLocation指定。宏和用户宏可以在此字段中使用。这将会设置CURLOPT_SSLCERTcURL参数、Zabbix2.4开始支持此选项。SSL密钥文件(SSLkeyfile)用于客户端认证的SSL私钥文件的名称。私钥文件必须为PEM1格式。包含此文件的目录由Zabbix服务器或代理配置参数SSLKeyLocation指定。宏和用户宏可以在此字段中使用。这将设置CURLOPT_SSLKEYcURL参数。Zabbix2.4开始支持此选项。SSL密钥密码(SSLkeypassword)SSL私钥文件密码。用户宏可以在此字段中使用。这将设置CURLOPT_KEYPASSWDcURL参数.Zabbix2.4开始支持此选项。[1]Zabbix仅支持PEM格式的证书和私钥文件。如果您在PKCS#12格式文件(通常具有扩展名*.p12或*.pfx)中具有您的证书和私钥数据,您可以使用以下命令从中生成PEM文件:opensslpkcs12-inssl-cert.p12-clcerts-nokeys-outssl-cert.pemopensslpkcs12-inssl-cert.p12-nocerts-nodes-outssl-cert.keyZabbix服务器对证书的更改无需重启。如果在单个文件中有客户端证书和私钥,只需在“SSL证书文件”字段中指定它,并将“SSL密钥文件”字段留空即可。证书和密钥必须仍为PEM格式。组合证书和密钥很容易:catclient.crtclient.key>client.pem显示要查看定义的Web场景的详细数据,请转到监控中(Monitoring)→Web或最新数据(Latestdata)。单击方案名称以查看更详细的统计信息。
可以在监控中(Monitoring)→仪表板(Dashboard)中查看Web监控场景的概述。
扩展监控有时需要记录接收的HTML页面内容。如果某些Web方案步骤失败时是非常有用的。调试级别5(跟踪)用于此目的。此级别可以在服务端(server)和代理(proxy)代理配置文件中设置或使用运行时控制选项(,其中N是进程号)。以下示例说明如果调试级别4已设置,监控扩展如何启动:
Increaseloglevelofallhttppollers:shell>zabbix_server-Rlog_level_increase="httppoller"Increaseloglevelofsecondhttppoller:shell>zabbix_server-Rlog_level_increase="httppoller,2"如果不需要扩展Web监控,可以使用选项来停止。