分布式系统监视zabbix讲解五之web监控--技术流ken
Web 监控
概况
你可以使用 Zabbix 检查几个网站可用性方面。
要使用 Web 监控,您需要定义 web 场景。Web 场景包括一个或多个 HTTP 请求或“步骤”。Zabbix 服务器根据预定义的命令周期性的执行这些步骤。
从 Zabbix2.2 开始,Web 场景和 Items,Triggers 等一样,是依附在 Hosts/Templates 的。这意味着 web 场景也可以创建一个模板,然后应用于多个主机。
所有的 web 场景会收集下列数据:
-
整个场景中所有步骤的平均下载速度
-
失败的步骤数量
-
最后一次错误信息
对于 web 场景的所有步骤,都会收集下列数据:
-
平均下载速度
-
响应时间
-
HTTP 状态码
执行 web 场景收集的数据保存在数据库中。数据自动用于图形、触发器和通知。
Zabbix 还支持获取 HTML 内容中是否存在设置的字符串。还可以模拟登陆动作和模拟鼠标单击。
Zabbix web 监控同时支持 HTTP 和 HTTPS。当运行 web 场景时,Zabbix 将选择跟踪重定向。重定向硬编码的最大数量为 10 。在执行 web 场景时,所有 Cookie 都会保存。
配置 Web 场景
配置 web 场景:
-
转到: 配置 (Configuration)–>主机 (或者 模板 )
-
点击主机 (host)/ 模板 (template) 行中的 Web
-
点击右上角 创建 web 场景 (或点击场景名字进行编辑现有的场景)
-
在场景的表单中输入参数
场景选项卡允许您配置此 Web 场景的通用参数。
场景参数:
参数 | 说明 |
---|---|
主机 (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 检查 - 为 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) | 用于连接和检索数据的网址。 例如: https://www.google.com http://www.zabbix.com/download Zabbix 3.4 以后,可以以 Unicode 编码指定域名。 执行 Web 场景步骤时,它们将自动被禁止转换为 ASCII。 解析 按钮可用于从 URL 中分离可选的查询字段(例如?name = Admin&password = mypassword),将属性和值放到查询字段以进行自动 URL 编码。 变量可以在 URL 中使用,使用 {macro} 语法。 变量可以使用 {{macro}.urlencode()} 语法手动进行 URL 编码。 Zabbix 2.2 开始,{HOST.*} 宏 和用户宏可以在此字段中使用。 Zabbix 2.4 开始,最多字符为 2048 个。 |
查询字段 (Query fields) ? | URL 的 HTTP GET 变量。 指定属性和值对。 值将自动进行 URL 编码。来自场景变量,用户宏或{HOST。*}宏的值将被解析,然后自动进行 URL 编码。 使用{{macro}.urlencode()}语法将对其进行双重 URL 编码。 从 Zabbix 2.2 开始开始支持用户宏和 {HOST.*} 宏 。 |
Post | HTTP POST 变量。 在 Form data 模式下,指定属性和值。 值被自动进行 URL 编码。 来自场景变量、用户宏或 {HOST.*} 宏的值将被解析,然后自动进行 URL 编码。 在 Raw data 模式中,属性 / 值显示在一条线上,并与 & 符号连接。 Raw 方式的值可以使用 {{macro}.urlencode()} 或 {{macro}.urldecode()} 手动进行 URL 编码 / 解码。 例如:id=2345&userid={user} 如果 {user} 被定义为 web 场景的变量,则当执行步骤时,它的值会被替换。 如果你想对变量进行 URL 编码,用 {{user}.urlencode()} 替换 {user} 。 Zabbix 2.2 开始支持用户宏和 {HOST.*} 宏 。 |
变量 (Variables) | 可用于 GET 和 POST 方法的步级变量。 指定属性和值。 步骤变量覆盖之前的场景变量或步骤变量。 然而,一个步骤变量的值仅影响之后的步骤(而不是当前步骤)。 它们具有以下格式: {macro}=value {macro}=regex:<regular expression> Zabbix 2.2 开始支持步骤变量。 Zabbix 2.2 开始,{HOST.*} 宏 和用户宏可以在此字段中使用。 在查询字段或提交表单数据时,变量会自动进行 URL 编码,但使用 raw 方式提交数据或者直接在 URL 中使用时,必须手动进行 URL 编码 |
HTTP 头 (Headers) | 执行请求时将发送的自定义 HTTP headers。 指定属性和值 步骤级别上的 headers 将覆盖为该场景指定的 headers。 例如,设置“User-Agent:”为空时,将覆盖在场景上设置的 User-Agent 名称。 支持用户宏和 {HOST.*} 宏、\ 这将设置 CURLOPT HTTPHEADER cURL 选项。 Zabbix 2.4 开始,支持指定自定义 HTTP 头 |
跟踪重定向 (Follow redirects) | 选中该复选框以跟踪 HTTP 重定向。 将会设置 CURLOPT FOLLOWLOCATION cURL 选项。 Zabbix 2.4 开始支持此选项。 |
仅检索标头 (Retrieve only headers) | 选中复选框,仅从 HTTP 响应中检索标题。 这将设置 CURLOPT NOBODY cURL 选项。 Zabbix 2.4 开始支持此选项。 |
超时时间 (Timeout) | Zabbix 根据设置的秒数以内来处理 URL。 实际上,此参数定义为连接到 URL 的最大时间和执行 HTTP 请求的最长时间。 因此,Zabbix 不会在步骤上花费超过 2x 超时时间。 例如:15 |
必需的字符串 (Required string) | 必需的正则表达式。 除非检索到的内容(HTML)匹配所需的模式,否则步骤将失败。 如果为空,则不执行检查。 例如: Zabbix 的主页、\ Welcome.*admin 注意 : 在此字段中不支持引用在 Zabbix 前端中创建的 正则表达式。 Zabbix 2.2 开始,支持用户宏和 {HOST.*} 宏 |
状态码 (Required status codes) | 可以设置预期的 HTTP 状态代码列表。 如果 Zabbix 获取的 HTTP 状态码不在列表中,该步骤将认为为失败。 如果为空,则不执行检查。 例如:200,201,210-299 Zabbix 2.2 开始,支持用户宏。 |
配置身份验证
身份验证选项卡允许您配置场景身份验证选项。
认证参数:
参数 | 说明 |
---|---|
验证 (Authentication) | 验证参数。 None - 未使用身份验证。 基本认证 - 使用基本认证。 NTLM authentication - 使用 NTLM 身份验证。 选择身份验证方法将提供两个附加字段,用于输入用户名和密码。 从 Zabbix 2.2 开始 ,用户宏可以在用户和密码字段中使用 。 |
对等 SSL 验证 (SSL verify peer) | 选中复选框以验证 Web 服务器的 SSL 证书。 服务器证书将自动从系统的证书颁发机构(CA)位置获取。 您可以使用 Zabbix 服务器或代理配置参数 SSLCALOCATION覆盖 CA 文件的位置。 这将设置 CURLOPT SSL VAERIFYPEERcURL 参数. 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 服务器或代理配置参数 SSL CerLocation 指定。 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 开始支持此选项。 |
openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes -out ssl-cert.key
cat client.crt client.key > client.pem
Display
要查看定义的 Web 场景的详细数据,请转到 监控中 (Monitoring)→Web 或 最新数据 (Latest data)。 单击方案名称以查看更详细的统计信息。
可以在 监控中 (Monitoring)→仪表板 (Dashboard) 中查看 Web 监控场景的概述。
场景示例
概述
我们使用 Zabbix Web 监控来监控 Zabbix 的 Web 界面。我们想知道它是否可用、是否正常工作以及响应速度。
场景
Web 场景步骤 1
关闭网站服务。
[root@ken ~]# systemctl stop httpd [root@ken ~]# ss -tnl | grep 80
查看监控。
点击name可以查看更详细的信息