[comment]: # ({6d5b9456-953eaff1})
# 2 配置最佳实践

[comment]: # ({/6d5b9456-953eaff1})

[comment]: # ({b2dac4c8-93555269})
#### 概述

本节概述了配置 Zabbix 以实现最佳性能和易用性的最佳实践。  
这些建议基于 Zabbix 开发人员的意见，以及 Zabbix 培训师和支持工程师的实际经验。

每个 Zabbix 安装环境都是独特的，其中一些指导原则可能并不适用于您的特定配置。  
不过，仍建议尽可能遵循这些指导原则，以避免常见的潜在问题。

:::notetip
如果您认为此页面还有改进空间，我们非常希望听到您的意见！请高亮有问题的文本，然后按 **ctrl+Enter** 报告错误或分享您的反馈。 
:::

[comment]: # ({/b2dac4c8-93555269})

[comment]: # ({5cfb221c-254c383a})
### 主机和监控项

[comment]: # ({/5cfb221c-254c383a})

[comment]: # ({392a841a-3a81cc27})
##### 定义主机

Zabbix 中的主机并不是物理机器或设备，而是一个逻辑实体。  
出于监控目的，您可以为数据库或例如虚拟机创建单独的主机。  
或者，您也可以创建一个通用主机 *John's laptop*，并在该主机下监控所有指标。 

最佳实践是为每个独立实例创建单独的主机，例如虚拟机、数据库、容器或网络交换机。采用这种方法，您将能够：

1. 通过为每个主机分别设置独立的监控项、触发器和告警通知，避免监控数据混乱。 

2. 更精细地调整用户访问级别。  
您可以配置 [user-roles](/manual/web_interface/frontend_sections/users/user_roles)，以授予仅查看和/或配置特定主机的访问权限。  
另请参见[最小权限原则](/manual/best_practices/security/access_control#principle-of-least-privilege)。

[comment]: # ({/392a841a-3a81cc27})

[comment]: # ({5ec9d412-c3c86ff6})
##### 具有重复监控项的主机

如果您有多个相似的主机，例如 *Network switch 1* 和 *Network switch 2*，Zabbix 提供了多种方式来快速重新创建该主机。
您只需按下 Clone 按钮，即可克隆一个包含其所有指标的主机；但在这种情况下，如果之后需要更新某个监控项，您将需要在每个主机上手动进行更新。 

最佳实践是创建一个包含所有必需指标的模板，例如 *Network switch template*。
然后将这些相似的主机分组到一个主机组中，对于上述示例，可以命名为 *Network switches*。
现在，在 *Data Collection -> Hosts* 部分中，您可以按主机组筛选所有主机，并使用 *Mass update* 按钮将该模板链接到您的所有网络交换机。

[comment]: # ({/5ec9d412-c3c86ff6})

[comment]: # ({5f683345-ac526159})
##### 依赖监控项

为了尽量减少对目标实体的请求次数，Zabbix 允许创建主监控项和依赖监控项。  
在这种情况下，主监控项通过一次请求收集一大组信息。  
然后，可以配置依赖监控项，通过预处理从该数据集中提取特定的数据片段，并将其作为单独的指标存储。

例如，主监控项可能会收集一个包含多个指标的 JSON 或 XML 响应，或者执行一个返回多列数据的数据库查询（例如：打开连接数、中止连接数、允许的最大并发连接数，以及自启动以来的累计总连接数），而依赖监控项将分别解析并存储每个所需的值。

此类配置的最佳实践是：在主监控项采集完成后立即丢弃其历史数据，只保留依赖监控项的数据。

[comment]: # ({/5f683345-ac526159})

[comment]: # ({5b256050-b327b6f1})
#### 服务器和 proxies

如果所有主机都与 Zabbix 服务器位于同一本地网络中，并且不存在可扩展性或性能方面的顾虑，则可能不需要 proxy。  
在更大或更复杂的环境中，直接使用 Zabbix 服务器监控主机可能并不充分。  
添加一个 proxy 并将部分主机分配给该 proxy，可以使负载分布更加均衡。 

最佳实践是在以下情况下添加 Zabbix proxy：

1. 您正在通过多种指标采集方法监控位于防火墙后的多台主机。  
proxy 将从这些主机收集数据并将其转发到 Zabbix 服务器，从而减少开放多个防火墙端口的需要。

2. 您正在监控远程位置、分支机构和/或网络。  
如果 Zabbix 服务器与远程位置之间的网络中断，部署在远程位置的 Zabbix proxies 将继续收集数据，并在网络连接恢复后将收集到的数据发送回 Zabbix 服务器。

3. 您拥有大规模部署，并希望降低 Zabbix 服务器的负载并提升性能。  
大规模部署的定义非常宽泛，不仅取决于主机数量，还取决于每秒收集的值的数量。

[comment]: # ({/5b256050-b327b6f1})

[comment]: # ({cc708441-34997e28})
#### 密钥宏

您可能希望将[密钥](/manual/config/macros/secret_macros)用户宏用作密文文本宏或密钥保管库宏。

为在使用密钥保管库宏时增强安全性，建议[配置](/manual/web_interface/frontend_sections/administration/general#other)宏值由 Zabbix 服务器和 Zabbix proxies 分别独立获取。默认情况下，密钥宏值由 Zabbix 服务器获取并传播到 Zabbix proxies。

[comment]: # ({/cc708441-34997e28})
