zabbix 监控
服务监控
概览
服务监视功能适用于希望获得被监视基础设施的高级(业务)视图的人。一般情况下,我们对低级别细节不感兴趣,例如磁盘空间不足、处理器负载高等。我们感兴趣的是整个 IT 部门提供的服务的整体可用性,以及对识别 IT 基础设施的薄弱环节、各种 IT 服务的 SLA、现有 IT 基础设施的结构以及其他更高级别的信息。
Zabbix 服务监控为所有提到的问题提供了答案。
服务监控允许创建监控数据的层次结构表示。
一个非常简单的服务结构可能如下所示:
1 | Service||-Workstations| || |-Workstation1| || |-Workstation2||-Servers |
结构的每个节点都有属性状态。根据所选算法计算状态并将其传输到上层。各个节点的状态受映射问题状态的影响。问题映射是通过 标签 完成的。
如果检测到服务状态发生变化,Zabbix 可以在 Zabbix server 上发送通知或自动执行脚本。可以根据子服务的状态来定义父服务是否应该进入 ‘问题状态’ 的灵活规则。然后可以使用服务问题数据来计算 SLA 并根据灵活的条件集发送 SLA 报告。
服务监控在 Services 菜单中配置,该菜单由以下部分组成:
服务部分允许通过添加父服务来构建受监控基础架构的层次结构,然后将子服务添加到父服务。
除了配置服务树之外,本节还提供了整个基础架构的概述,并允许快速识别导致服务状态更改的问题。
在本节中,您可以配置服务动作。服务动作是可选的,并允许: - 发送服务宕机的通知; - 在服务状态发生变化时在 Zabbix server 上执行远程命令; - 当服务再次启动时发送恢复通知。
在本节中,您可以定义服务水平协议并为特定服务设置服务水平目标。
在此部分中,您可以查看 SLA 报告。
可以参照:
Web 监控
概览
可以通过 Zabbix 检查网站的几个可用性。
要执行 web 监控,Zabbix server 的初始 配置 必须支持 cURL (libcurl)。
启用 Web 监控需要定义 Web 场景。Web 场景由一个或多个 HTTP 请求或 “步骤” 组成。这些步骤由 Zabbix server 以预设的顺序定期执行。如果主机由 proxy 监控,则这些步骤由 proxy 执行。
Web 场景以与监控项、触发器等相同的方式附加到主机/模板上。这意味着 Web 场景也可以在模板级别上创建,然后一次性应用于多个主机。
在任何 Web 场景中都会收集以下信息:
- 整个场景所有步骤的每秒平均下载速度
- 失败的步骤编号
- 最新的错误信息
在任何 Web 场景步骤中都会收集以下信息:
- 每秒下载速度
- 响应时间
- 响应码
更多详细信息,请参见 web 监控项。
执行 Web 场景收集的数据保存在数据库中。数据自动用于图表、触发器和通知。
Zabbix 还可以检查检索到的 HTML 页面是否包含预定义的字符串。它可以执行模拟登录并遵循页面上模拟鼠标点击的路径。
Zabbix web 监控同时支持 HTTP 和 HTTPS。在运行 Web 场景时,Zabbix 将选择性地跟随重定向(请参阅下面的 Follow redirects 选项)。最大重定向数硬编码为 10(使用 cURL 选项CURLOPT_MAXREDIRS)。在单个场景的执行过程中会保留所有 cookie。
查看使用 HTTPS 协议进行 Web 监控的 已知问题 。
配置 Web 场景
配置 Web 场景流程:
- Configuration(配置) → Hosts(主机)(或 模板)
- 单击 主机/模板 行中的 Web
- 单击右侧的 Create scenario(创建场景) (或在场景名称上编辑现有场景)
- 在表格中输入场景的参数
场景 选项卡可以配置 Web 场景的常规参数。
所有必填字段都标有红色星号。
场景参数:
参数 | 描述 |
---|---|
Host(主机) | 场景所属的主机/模板的名称。 |
Name(名字) | 场景的唯一名称。 |
Update interval(更新间隔) | 场景执行的频率。 支持 时间后缀 ,例如 30s、1m、2h、1d。 支持用户宏 。注意: 如果使用用户宏并更改其值 (例如 5m → 30s),则将根据先前的值执行下一次检查(示例值在更远的将来)。 |
Attempts(尝试) | 尝试执行 Web 场景步骤的次数。如果出现网络问题(超时、无连接等),Zabbix 可以多次重复执行一个步骤。图集同样会影响场景的每个步骤。最多可以指定 10 次尝试,默认值为 1。 注意:Zabbix 不会因为响应码错误或所需字符串不匹配而重复步骤。 |
Agent(客户端) | 选择客户端。 Zabbix 会伪装成被选中的浏览器。当网站为不同的浏览器返回不同的内容时,这很有用。 用户宏可用于该字段。 |
HTTP proxy(HTTP 代理) | 您可以按照示例要求的格式使用 HTTP 代理 [protocol://][username[:password]@]proxy.example.com[:port] 。这将设置 CURLOPT_PROXY cURL 选项。 可选 protocol:// 前缀可用于指定替代代理协议(cURL 7.21.7 中添加了协议前缀支持)。如果未指定协议,代理将被视为 HTTP 代理。默认情况下,将使用 1080 端口。 如果指定,代理将覆盖代理相关的环境变量,如 http_proxy, HTTPS_PROXY。如果未指定,代理将不会覆盖与代理相关的环境变量。输入的值“按原样”传递,不进行完整性检查。 您也可以输入 SOCKS 代理地址。如果您指定了错误的协议,则连接将失败并且该项目将变得不受支持。 注意: HTTP 代理仅支持简单身份验证。 用户宏可用于该字段。 |
Variables(变量) | 可能在场景步骤中使用的变量(URL、post 变量)。 它们具有以下格式: {macro1}=value1 {macro2}=value2 {macro3}=regex:<正则表达式> 示例: {username}=Alexei {password}=kj3h5kJ34bd {hostid}=regex:hostid is ([0-9]+) 然后可以在步骤中以 {username}, {password} 和 {hostid} 的形式引用宏。Zabbix 会自动将它们替换为实际值。注意,变量 regex: 需要一步来获取正则表达式的值,因此提取的值只能应用于后面的步骤。如果值部分以 regex: 然后将其后面的部分视为搜索网页的正则表达式,如果找到,则将匹配项存储在变量中。必须至少存在一个子组,以便可以提取匹配值。支持用户宏和 {HOST.*} 宏 。 变量在用于查询字段或用于发布变量的表单数据时会自动进行 URL 编码,但在原始发布或直接在 URL 中使用时必须手动进行 URL 编码。 |
Headers(标头) | 执行请求时将发送的自定义 HTTP 标头。 标头应使用与它们在 HTTP 协议中出现的相同语法列出,可选择使用 CURLOPT_HTTPHEADER 选项支持的一些附加功能。 例如: Accept-Charset=utf-8 Accept-Language=en-US Content-Type=application/xml; charset=utf-8 用户宏和 {HOST.*} 宏 are supported. |
Enabled(启用) | 如果选中此框,则该场景处于活动状态,否则 - 禁用。 |
请注意,在编辑现有场景时,表单中有两个额外的按钮可用:
根据现有场景的属性创建另一个场景。 | |
---|---|
删除场景的历史和趋势数据。这将使服务器在删除数据后立即执行场景。 |
如果 HTTP 代理 字段留空,使用 HTTP 代理的另一种方法是设置代理相关的环境变量。对于 HTTP 检查 - 为 Zabbix server 用户设置 http_proxy 环境变量。 例如,http_proxy=http://proxy_ip:proxy_port
。运行 shell 命令获得更多详细信息: # man curl。
**Steps(步骤)**选项卡可以配置 Web 场景步骤。要添加 Web 场景步骤,请单击 Steps(步骤) 块中的 Add(添加) 。
不得在 URL 中使用加密 用户宏 因为它们会被解析成 “******”。
配置步骤
步骤参数:
参数 | 描述 |
---|---|
Name(名字) | 唯一的步骤名称。 |
URL | 用于连接和检索数据的 URL。例如: https://www.example.com http://www.example.com/download 域名可以用 Unicode 字符指定。 在执行 Web 场景步骤时,它们会自动转换为 ASCII 码。 Parse 按钮可用于将可选查询字段 (如 ?name=Admin&password=mypassword))与 URL 分开,将属性和值移动到 查询字段 中以进行自动 URL 编码。 变量可以在 URL 中使用,使用 {macro} 语法。可以使用 {{macro}.urlencode()} 语法手动对变量进行 URL 编码。支持用户宏和 {HOST.*} 宏限制为 2048 个字符。 |
Query fields(查询字段) | URL 的 HTTP GET 变量。 指定为属性和值对。 值会自动进行 URL 编码。来自场景变量、用户宏或 {HOST.*} 宏的值被解析,然后自动进行 URL 编码。使用 {{macro}.urlencode()} 语法将对它们进行双重 URL 编码。支持用户宏和 {HOST.*} {HOST.*} 宏 。 |
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.} {HOST.*} 宏 。 |
Variables(变量) | 可用于 GET 和 POST 函数的步骤级变量。 指定为属性和值对。 步骤级变量会覆盖场景级变量或上一步中的变量。 但是,步骤级变量的值仅影响之后的步骤(而不影响当前步骤)。 它们具有以下格式: {macro}=value {macro}=regex: 有关详细信息,请参阅 场景 级别的变量描述。 变量在用于查询字段或用于发布变量的表单数据时会自动进行 URL 编码,但在原始发布或直接在 URL 中使用时必须手动进行 URL 编码。 |
Headers(头) | 执行请求时将发送的自定义 HTTP 标头。 指定为属性和值对。 步骤级别的标题将覆盖为场景指定的标题。 例如,设置没有值的 ‘User-Agent’ 属性将删除在场景级别设置的 User-Agent 值。 支持用户宏和 {HOST.*} 宏。设置 CURLOPT_HTTPHEADER cURL 选项。 |
Follow redirects(跟随跳转) | 标记复选框以遵循 HTTP 重定向。 设置 CURLOPT_FOLLOWLOCATION cURL 选项。 |
Retrieve mode(恢复模式) | 选择恢复模式: Body(内容) - 从 HTTP 响应中仅检索正文 Headers(头) - 从 HTTP 响应中仅检索标头 Body and headers(Body 和headers) - 从 HTTP 响应中检索正文和标头 |
Timeout(超时) | Zabbix 处理 URL 的时间不会超过设定的时间 (从 1 秒到最长 1 小时)。实际上,这个参数定义了连接到 URL 的最长时间和执行 HTTP 请求的最长时间。因此,Zabbix 在该步骤上花费的时间不会超过 2 x Timeout 秒。 支持时间后缀 ,例如 30s、1m、1h。支持 用户宏 。 |
Required string(要求的字串) | 要求正则表达式模式。 除非检索到的内容 (HTML) 与所需的模式匹配,否则该步骤将失败。如果为空,则不检查所需的字符串。 例如: Zabbix Welcome.*admin 主页 注意:该字段不支持引用在 Zabbix 前端创建的 正则表达式 。 支持用户宏和 {HOST.*} {HOST.*} 宏 。 |
Required status codes(要求的状态码) | 预期的 HTTP 状态代码列表。如果 Zabbix 获得不在列表中的代码,则该步骤将失败。 如果为空,则不检查状态代码。 例如:支持 200,201,210-299 支持 用户宏。 |
Web 场景步骤中的任何更改只有在保存整个场景时才会保存。
查看配置 Web 监控步骤的 真实案例 。
配置标签
标签 选项卡允许定义场景级别的 标签。
标签允许过滤 Web 场景和 Web 监控项。
配置authentication(认证)
Authentication(认证) 选项卡允许配置场景身份认证选项。选项卡名称旁边的绿点表示启用了某种类型的 HTTP 身份验证。
认证参数:
参数 | 描述 |
---|---|
Authentication(认证) | 身份认证选项。 None(无) - 不使用身份认证。 Basic(基本) - 使用基本身份验证。 NTLM - 使用 NTLM( Windows NT LAN Manager) 身份认证。 Kerberos - 使用 Kerberos 身份验证。另请参阅:Zabbix 配置 Kerberos 认证. Digest - 使用 Digest 身份认证。 选择身份认证将提供两个额外的字段用于输入用户名和密码。 用户宏可用于用户和密码字段。 |
SSL verify peer(SSL验证对端) | 勾选复选框以验证 Web 服务器的 SSL 证书。 服务器证书将自动从系统范围的证书颁发机构 (CA) 位置获取。您可以使用 Zabbix server 或 proxy 配置参数 SSLCALocation 覆盖 CA 文件的位置。 这将设置 CURLOPT_SSL_VERIFYPEER cURL 选项。 |
SSL verify host(SSL验证主机) | 标记复选框以验证Web 服务器证书的 Common Name 字段或 Subject Alternate Name 字段是否匹配。 这将设置 CURLOPT_SSL_VERIFYHOST cURL 选项。 |
SSL certificate file(SSL证书文件) | 用于客户端身份验证的 SSL 证书文件的名称。证书文件必须为 PEM1 格式。如果证书文件还包含私钥,请将 SSL key file(SSL秘钥文件) 字段留空。如果密钥已加密,请在 *SSL key password(SSL秘钥密码)*字段中指定密码。包含此文件的目录由 Zabbix server 或 proxy 配置参数 SSLCertLocation指定。 支持 HOST.* 宏和用户宏。这将设置 CURLOPT_SSLCERT cURL 选项。 |
SSL key file(SSL秘钥文件) | 用于客户端身份验证的 SSL 私钥文件的名称。私钥文件必须是 PEM1 格式。包含此文件的目录由 Zabbix server 或 proxy 配置参数 SSLKeyLocation 指定。 支持 HOST.* 宏和用户宏。这将设置 CURLOPT_SSLKEY cURL 选项。 |
SSL key password(SSL秘钥密码) | SSL 私钥文件密码。 支持用户宏。 这将设置 CURLOPT_KEYPASSWD cURL 选项。 |
[1] Zabbix 仅支持 PEM 格式的证书和私钥文件。如果你有 PKCS #12 格式文件(通常带有扩展名 *.p12 或 *.pfx)的证书和私钥数据,可以使用以下命令从中生成 PEM 文件:
1 | openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pemopenssl pkcs12 -in ssl-cert.p12 -nocerts -nodes · -out ssl-cert.key |
Zabbix server 无需重启即可获取证书中的更改。
如果你在单个文件中有客户端证书和私钥,只需在 “SSL certificate file(SSL 证书文件)” 字段中指定它,并将 “SSL key file(SSL秘钥文件)” 字段留空。证书和密钥必须仍为 PEM 格式。组合证书和密钥很容易:
1 | cat client.crt client.key > client.pem |
展示
要查看为主机配置的 Web 场景,请转到 Monitoring(监控) → Hosts(主机),在列表中找到主机并单击最后一列中的 Web 超链接。单击方案名称以获取详细信息。
Web 场景的概述也可以通过 Web 监控小部件显示在 Monitoring(监控) → Dashboard(仪表盘) 中。
Web 场景执行的最新结果可在 Monitoring(监控) → Latest data(最新数据) 中找到。
扩展监控
记录收到的 HTML 页面内容是有必要的,尤其是当某些 Web 场景步骤失败 。调试级别 5(跟踪)用于此目的。此级别可以在 server 和 proxy 配置文件中设置,也可以使用运行时控制选项 (-R log_level_increase="http poller,N"
,其中 N 是进程号)。以下示例演示了如何在已设置调试级别 4 的情况下启动扩展监控:
1 | Increase log level of all http pollers:shell> zabbix_server -R log_level_increase="http poller"Increase log level of second http poller:shell> zabbix_server -R log_level_increase="http poller,2" |
如果不需要扩展 Web 监控,可以使用-R log_level_decrease
选项。
虚拟机监控
概述
Zabbix 从 2.2.0 版开始支持对 VMware 环境的监控。
Zabbix 可以使用低级别发现规则自动发现 VMware 宿主机(即 VMware hypervisors)和虚拟机,并根据预定义的主机原型创建主机来监控它们。
Zabbix 中的默认数据集提供了几个现成的模板,用于监控 VMware vCenter 或 ESX 宿主机。
所需的最低 VMware vCenter 或 vSphere 版本为 5.1。
细节
虚拟机监控分两步完成。首先,虚拟机数据由Zabbix 进程 vmware collector 收集。这些进程通过 SOAP 协议从 VMware Web 服务获取必要的信息,对其进行预处理并存储到 Zabbix 服务器共享内存中。然后,轮询器使用 Zabbix 简单检查 VMware keys 检索此数据。
从 Zabbix 2.4.4 版本开始,收集的数据分为 2 种类型:VMware 配置数据和 VMware 性能计数器数据。这两种类型都由 vmware collectors 独立收集。因此,建议启用比受监视的 VMware 服务更多的收集器。否则,VMware 性能计数器统计信息的检索可能会因检索 VMware 配置数据而延迟(大型安装需要一段时间)。
目前只有数据存储、网络接口和磁盘设备统计信息以及自定义性能计数器项是基于 VMware 性能计数器信息的。
配置
为了使虚拟机监控可以正常工作,Zabbix 应该使用 --with-libxml2 和 --with-libcurl 编译选项进行 编译 。
以下配置文件选项可用于调整虚拟机监控:
-
StartVMwareCollectors - 预设的 vmware collector 实例的数量。
此值取决于您要监控的 VMware 服务的数量。在大多数情况下,这应该是:
servicenum < StartVMwareCollectors < (servicenum * 2)
其中servicenum 是 VMware 服务的数量。例如,如果有 1 个要监控的 VMware 服务,请将 StartVMwareCollectors 设置为 2,如果您有 3 个 VMware 服务,请将其设置为 5。请注意,在大多数情况下,此值不应小于 2,也不应大于监控的 VMware 服务数量的 2 倍。另外,此值还取决于您的 VMware 环境大小以及 VMwareFrequency 和 VMwarePerfFrequency 配置参数(见下文)。 -
VMwareCacheSize
-
VMwareFrequency
-
VMwarePerfFrequency
-
VMwareTimeout
有关更多详细信息,请参阅 Zabbix server 和proxy 的配置文件页面。
为了支持数据存储容量指标,Zabbix 要求 VMware 配置 vpxd.stats.maxQueryMetrics 参数的值至少为 64。另请参阅 VMware 知识库 文章。
自动发现规则
Zabbix 可以使用低级别发现规则来自动发现 VMware 宿主机和虚拟机。
所有必填字段都标有红色星号。
上面屏幕截图中的发现规则键值是 vmware.hv.discovery[{$URL}]。
主机原型
可以使用低级别发现规则创建主机原型。当发现虚拟机时,这些原型就变成了真正的主机。原型在被发现之前不能有自己的监控项和触发器,除了来自所链接的模板的那些。发现的主机将属于 existing 主机。
为了使从主机原型创建的主机具有唯一的主机名, 主机名(Host name) 字段必须包含至少一个 低级别发现宏。
从 Zabbix 5.2 开始,发现的主机可以配置自定义接口或继承发现规则所属主机的 IP(默认)。要添加一个或多个自定义接口,请将 接口(Interface) 选择器从 继承(Inherit) 模式切换到 自定义(Custom) 模式,然后按下 并从出现的下拉菜单中选择所需的接口类型。可以为主机原型定义所有支持的接口类型:Zabbix agent、SNMP、JMX、IPMI。接口字段支持低级别发现宏和 用户宏。如果指定了多个自定义接口 - 使用 默认(Default) 列指定主接口。
注意:
- 如果选择 自定义 但未指定接口,则将创建没有接口的主机。
- 如果为属于模板的主机原型选择了 继承 ,则发现的主机将继承模板链接到的主机的接口。
如果主机接口包含不正确的数据,则不会创建主机。
LLD 宏还可用于可见名称、主机组原型字段、标签值或主机原型用户宏的值。
可以为主机原型指定的其他选项包括:
- 与现有主机组的链接
- 模板链接
- 加密
如果选中 Create enabled ,则添加的主机将处于启用状态。如果未选中,仍会添加主机,但处于禁用状态。
如果选中 Discover (默认),则将创建主机。如果未选中,则不会创建主机,除非在 发现规则 中覆盖此设置。此功能在创建发现规则时提供了额外的灵活性。
发现的主机在主机列表中以创建它们的发现规则的名称为前缀。发现的主机可以手动删除,也可以根据 发现规则的保留丢失资源的天数(Keep lost resources period (in days)) 被自动删除。大多数配置选项都是只读的,除了启用/禁用主机和主机清单。发现的主机不能拥有自己的主机原型。
开箱即用的模板
Zabbix 官方默认提供了几个开箱即用的模板,用于监控 VMware vCenter 或直接 ESX hypervisor。这些模板包含预配置的 LLD 规则以及一些用于监控虚拟化安装的内置检查。
VMware vCenter 和 ESX hypervisor 监控模板:
- VMware - 为相应的宏使用 UUID 数据;
- VMware FQDN - 将 FQDN 数据用于相应的宏。
为了使 VMware FQDN 模板正常工作,每个受监控的 VM 都应具有符合 FQDN 规则的唯一操作系统名称,并且必须在每台计算机上安装 VMware Tools。如果满足以上条件,建议使用 VMware FQDN 模板。在 Zabbix 5.2 中引入了使用自定义接口创建主机的功能后, VMware FQDN 模板的创建成为可能。
如果无法满足 FQDN 要求, VMware 模板仍然可以使用。 VMware 模板有个已知问题:使用保存在 vCenter 中的名称(例如,VM1、VM2 等)创建已发现虚拟机的主机。如果稍后在这些主机上安装 Zabbix agent 并启用自动注册,由于不存在相应的主机,则自动注册进程将读取主机名作为他们启动时的注册名(例如,vm1.example.com、vm2.example.com 等)并创建一个新的主机。因此,每台机器都会有两个具有不同名称的重复主机。
发现虚拟主机使用的模板(通常,这些模板不应该被手动链接到其他主机):
- VMware Hypervisor;
- VMware Guest。
主机配置
要使用 VMware 简单检查,主机必须定义以下用户宏:
- {$VMWARE.URL} - VMware 服务 (vCenter 或 ESX hypervisor) SDK
- {$VMWARE.USERNAME} - VMware 服务用户名
- **{VMWARE.PASSWORD}** - VMware 服务 {VMWARE.USERNAME} 用户密码
示例
以下示例演示了如何在 Zabbix 上快速设置 VMware 监控:
- 使用所需选项(–with-libxml2 和 --with-libcurl)编译 zabbix server
- 将 Zabbix server 配置文件中的 StartVMwareCollectors 选项设置为 1 或更多
- 创建一个新主机
- 设置 VMware 身份验证所需的主机宏:
1 | {{..:..:assets:en:manual:vm_monitoring:vm_host_macros.png|}}* Link the host to the VMware service template: {{..:..:assets:en:manual:vm_monitoring:vm_host_templates.png|}}* Click on the //Add// button to save the host |
扩展日志记录
可以使用 debug 5 记录 VMware 收集器收集的数据以进行详细调试。可以在 server 和 proxy 配置文件中设置此级别,或者使用运行时控制选项(-R log_level_increase="vmware collector,N"
, 其中 N 是进程号)。以下示例演示了如何在已设置调试级别 4 的情况下启动扩展日志记录:
1 | Increase log level of all vmware collectors:shell> zabbix_server -R log_level_increase="vmware collector"Increase log level of second vmware collector:shell> zabbix_server -R log_level_increase="vmware collector,2" |
如果不需要对 VMware 收集器数据进行扩展日志记录,则可以使用该-R log_level_decrease
选项将其停止。
故障排除
-
如果指标不可用,请确保在当前的 VMware vSphere 版本中它们是否不可用或默认关闭,或者是否未对性能指标数据库查询设置一些限制。更多详细信息,请参见 ZBX-12094 。
-
如果出现 ‘config.vpxd.stats.maxQueryMetrics’ is invalid or exceeds the maximum number of characters permitted** 的报错,请向 vCenter Server 配置中添加参数
config.vpxd.stats.maxQueryMetrics
。此参数的值应与 VMware 的 web.xml 中maxQuerysize
的值相同。有关详细信息,请参阅此 VMware 知识库 文章。
分布式监控
概览
Zabbix 提供了一种使用 Zabbix proxies. 监视分布式IT基础设施的有效和可靠的方法
Proxy代理可以用来代表中央Zabbix server在本地收集数据,然后将数据报告给Zabbix server。
Proxy 特性
在选择使用/不使用proxy时,必须考虑几个因素。
Proxy | |
---|---|
Lightweight | Yes |
GUI | No |
Works independently | Yes |
Easy maintenance | Yes |
Automatic DB creation1 | Yes |
Local administration | No |
Ready for embedded hardware | Yes |
One way TCP connections | Yes |
Centralized configuration | Yes |
Generates notifications | No |
[1] 自动DB创建特性只适用于 SQLite。其他数据库需要手动设置。
proxy代理
概览
Zabbix Proxy可以代表Zabbix server收集性能和可用性数据。 通过这种方式,proxy可以自己承担一些收集数据的负载,并减轻Zabbix Server的负担。
此外,当所有agents和proxy都向一个Zabbix server报告并且所有数据都集中收集时,使用Proxy代理是实现集中式和分布式监控的最简单方法。
Zabbix proxy 可以被使用作为:
- 监控远程位置
- 监控通信不可靠的位置
- 在监视数千个设备时卸载Zabbix服务器
- 简化分布式监控的维护
proxy 只需要一个到 Zabbix server 的 TCP 连接。 这样就可以更容易地绕过防火墙,因为您只需要配置一条防火墙规则。
Zabbix proxy代理必须使用单独的数据库。将其指向 Zabbix server 数据库将破坏配置。
proxy收集的所有数据在传输到 server 之前都存储在本地。这种方式不会因为与 server 之间的任何临时通信问题而丢失数据。ProxyLocalBuffer 和 ProxyOfflineBuffer 参数在proxy配置文件控制数据在本地保存多长时间。
可能会出现这样的情况:直接从Zabbix server数据库接收最新配置更改的proxy代理拥有比 Zabbix server 更最新的配置,而 Zabbix server 的配置可能因为CacheUpdateFrequency的值而不能快速更新。因此,proxy 代理可能会开始收集数据并将它们发送到忽略这些数据的Zabbix server。
Zabbix proxy 代理是一个数据收集器。 它不计算触发器、处理事件或发送警报。 有关什么是proxy代理功能的概述,请查看下表:
功能 | proxy支持列表 | |
---|---|---|
Items | ||
Zabbix agent checks | Yes | |
Zabbix agent checks (active) | Yes 1 | |
Simple checks | Yes | |
Trapper items | Yes | |
SNMP checks | Yes | |
SNMP traps | Yes | |
IPMI checks | Yes | |
JMX checks | Yes | |
Log file monitoring | Yes | |
Internal checks | Yes | |
SSH checks | Yes | |
Telnet checks | Yes | |
External checks | Yes | |
Dependent items | Yes | |
Script items | Yes | |
Built-in web monitoring | Yes | |
Item value preprocessing | Yes | |
Network discovery | Yes | |
Active agent autoregistration | Yes | |
Low-level discovery | Yes | |
Remote commands | Yes | |
Calculating triggers | No | |
Processing events | No | |
Event correlation | No | |
Sending alerts | No |
[1] 为确保agent请求proxy(而不是server)进行活动检查,proxy代理必须被列于 ServerActive 配置文件中的参数。
过载保护
如果 Zabbix server 宕机一段时间,proxy 已经收集了大量数据,然后 server 启动,它可能会超载(历史缓存使用率在一段时间内保持在95-100%)。这种过载可能会导致性能下降,检查的处理速度比正常情况下要慢。 对这种场景的保护是为了避免由于重载历史缓存而产生的问题。
当 Zabbix server 历史缓存满时,历史缓存写访问被限制,停止 server 数据收集进程。最常见的历史缓存过载情况是server停机后,proxy上传收集的数据。 为了避免这种情况,添加了 proxy 节流(目前无法禁用)。
当历史缓存使用率达到80%时,Zabbix server 将停止接受来自proxy的数据。 相反,这些proxy将被放在一个节流列表中。 这将持续到缓存使用率下降到60%。现在,server 将开始逐一接受来自节流列表定义的proxy的数据。 这意味着在节流期间试图上载数据的第一个proxy将首先被接收数据,在此之前,server 将不会接受来自其他 proxy 的数据。
这种调节模式将继续,直到缓存使用率再次达到 80%,或者下降到20%,或者调节列表为空。 在第一种情况下,server 将再次停止接受proxy数据。 在另外两种情况下,server 将开始正常工作,接受来自所有proxy的数据。
你可以使用zabbix[wcache,history,pused]
内部项将Zabbix server的行为与一个度量关联起来。
配置
如果你 安装 和配置 一个proxy , 下一步就是Zabbix前端配置。
添加一个 proxy 代理
在Zabbix前端中配置proxy:
- 前往: Administration → Proxies
- 点击 创建proxy
参数 | 描述 | |
---|---|---|
Proxy name | 输入proxy名称。 必须与proxy配置文件中的“Hostname”保持一致。 | |
Proxy mode | 选择 proxy 模式。 主动 - proxy 将连接到 Zabbix server 并请求配置数据 被动 - - Zabbix server 连接到proxy Note 没有加密的通信(敏感的)proxy 配置数据可能会成为可以访问Zabbix服务器的端口时,使用一个主动的 proxy。这是可能的,因为任何人都可以假装是一个活动的proxy并请求配置数据,如果身份验证没有发生或proxy地址不受限制在Proxy 地址字段。 |
|
Proxy address | 如果指定了,那么主动的proxy请求只接受这个以逗号分隔的 IP 地址列表(可选的CIDR标记),或者主动 Zabbix proxy 的 DNS 名称。 该字段仅在“Proxy 模式”字段中选择了 active proxy 时有效。 宏是不支持的。 从Zabbix 4.0.0开始就支持这个选项。 |
|
Interface | 输入被动proxy的接口详细信息。 该字段仅在“Proxy模式”字段中选择被动proxy时有效。 |
|
IP address | 被动proxy的IP地址(可选)。 | |
DNS name | 被动proxy的DNS名称(可选)。 | |
Connect to | 点击相应的按钮将告诉 Zabbix server 使用什么来从proxy检索数据: IP -连接proxyIP地址(推荐) DNS -连接到proxy DNS名称 |
|
Port | 被动 proxy 的 TCP/UDP端口号(默认为 10051)。 | |
Description | 输入 proxy 描述信息。 |
加密选项卡允许您要求与 proxy 的加密连接。
参数 | 描述 |
---|---|
Connections to proxy | 服务器如何连接到被动 proxy: 不加密(默认),使用PSK(预共享密钥)或证书。 |
Connections from proxy | 选择从活动 proxy 中允许的连接类型。 可以同时选择几种连接类型(这对于测试和切换到其他连接类型很有用)。 默认为“不加密”。 |
Issuer | 允许的证书颁发者。 证书首先由 CA(证书颁发机构)验证。 如果它是有效的,由CA签名,那么Issuer字段可以用于进一步限制所允许的CA。此字段是可选的,用于 Zabbix 安装使用来自多个CA的证书时。 |
Subject | 证书允许的主题。 证书首先由 CA 验证。如果它是有效的,由 CA 签名,那么 Subject 字段可以用来只允许一个值的Subject字符串。 如果此字段为空,则接受由配置的 CA 签名的任何有效证书。 |
PSK identity | - 预共享密钥标识字符串。 不要把敏感信息放在PSK身份中,它在网络上未经加密传输,以通知接收方使用哪个PSK。 |
PSK | Pre-shared关键(hex-string)。最大长度: 512十六进制数字(256 字节 PSK) 如果Zabbix使用GnuTLS或OpenSSL库,64十六进制数字(32字节PSK)如果Zabbix使用mbed TLS (PolarSSL)库。 例如: 1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952 |
主机配置
你可以在主机配置表单中指定一个单独的主机应该被一个 proxy 监控,使用Monitored by proxy字段。
主机 批量更新是指定主机应该由proxy监视的另一种方式。