
# 大规模集群中的云原生监控插件配置最佳实践
在大规模集群中，云原生监控插件的采集配置将较大程度地影响采集性能。在数据采集阶段，合理的配置能够显著提升监控系统的效率和稳定性。
本文档将指导您在大规模集群中高效配置和管理云原生监控插件，确保集群业务的稳定运行和高效运维。主要包括以下配置：
- [采集周期调整]
- [Prometheus采集分片调整]
- [kube-state-metrics分片调整]
- [kube-state-metrics规格调整]
- [远程写参数调整]
#### 前提条件
- 在大规模集群的场景下，云原生监控插件不建议使用本地存储模式，请确保本地存储处于禁用状态。
- 请确保集群控制节点的内存使用率较低（常态40%以下，峰值45%以下）。您可在集群概览页面查看控制节点内存使用率，若不满足，建议先调整集群规格，具体操作请参见[变更集群规格](https://support.huaweicloud.com/usermanual-cce/cce_10_0403.html)。
 
 #### 采集周期调整
若集群规模整体较大（≥200节点或≥10000Pod），需要合理设置采集间隔，避免过于频繁地采集导致系统负载过高。建议将采集周期修改为60秒或30秒。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧选择"插件中心"，找到**云原生监控** **插件** ，单击"编辑"，在参数配置中找到"采集周期"并修改。
   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002237271628.png "点击放大")
   
   
   
3. 单击"确定"，等待插件更新完成。
 
 #### Prometheus采集分片调整
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/caution_3.0-zh-cn.png)
分片调整会对您集群的控制节点内存特别是kube-apiserver内存产生额外压力，建议避开业务高峰期。
为了应对Prometheus在大规模监控环境下的性能挑战，您可以调整Prometheus采集分片，将采集任务分配给多个Prometheus实例，从而减轻AOM接收端的压力，提高整体性能。建议每75节点一个分片（若自定义指标数量或Pod数量较多，建议每50节点一个分片），最多不超过32个分片。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧选择"插件中心"，找到**云原生监控** **插件** ，单击"编辑"，在规格配置中找到"采集分片数"并修改。
   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002237889998.png "点击放大")
   
   
   
3. 单击"确定"，等待插件更新完成。
 
 #### kube-state-metrics分片调整
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/caution_3.0-zh-cn.png)
- 调整kube-state-metrics分片要求云原生监控插件版本≥3.12.1。
- 分片调整会对您集群的控制节点内存特别是kube-apiserver内存产生额外压力，建议避开业务高峰期。
 
[kube-state-metrics](https://github.com/kubernetes/kube-state-metrics/tree/main)（KSM）是Kubernetes中的一个开源监控组件，它通过监控Kubernetes API来暴露集群中各种资源（如Pod、Deployment、Node等）的指标。随着集群规模的增加，kube-state-metrics需要处理的API调用和生成的指标数量也会大幅增加，这可能导致性能问题。您可以对kube-state-metrics进行分片，将负载分摊到多个实例，从而提高整体性能和可用性。
以下是对kube-state-metrics的一些分片策略：
- 集群节点数小于等于50，建议不进行kube-state-metrics分片调整，默认为1分片。
- 集群节点数介于50至200之间，建议将kube-state-metrics调整为3分片。
- 集群节点数大于200，建议将kube-state-metrics调整为5分片。大于5的分片会对集群产生较大压力，因此超过5的分片数将会被视为5。
具体操作步骤如下：
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧选择"插件中心"，找到**云原生监控** **插件** ，单击"编辑"，在插件名称上方单击"编辑YAML"。
   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002272517693.png "点击放大")
   
   
   
3. 将*operator_manage_ksm* 参数设置为true，并将*ksm_shards* 设置为推荐值。
   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002272639577.png "点击放大")
   
   
4. 单击"确定"，等待插件更新完成，您可以在插件的实例列表中看到分片的kube-state-metrics负载。 
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002237583476.png "点击放大")
   
   
   
 
 #### kube-state-metrics规格调整
集群规模较大时，kube-state-metrics需要处理的数据量会显著增加，导致kube-state-metrics面临较大的负载压力，如果不及时调整其资源配置，可能会影响其性能甚至导致服务不可用。
建议集群中每有1万个Pod，kube-state-metrics对应的CPU限制值为500m、内存限制值为1.5Gi，CPU和内存申请值配置为限制值的30%\~40%。若您集群的Pod YAML普遍较大，建议在此基础上上浮50%。
例如：某大规模集群中有4万Pod，则建议kube-state-metrics的CPU限制值为2000m（申请值为1000m），内存限制值为6Gi（申请值为1Gi\~2Gi）。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧选择"插件中心"，找到**云原生监控** **插件** ，单击"编辑"，在规格配置中找到"插件规格"并选择"自定义规格"，修改kube-state-metrics的资源配额。
   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002237885362.png "点击放大")
   
   
   
3. 单击"确定"，等待插件更新完成。
 
 #### 远程写参数调整
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/caution_3.0-zh-cn.png)
调整远程写参数要求云原生监控插件版本≥3.12.1。
当Prometheus对接AOM时，在处理大批量数据时可能会出现传输效率、稳定性的问题。您可以通过调整远程写参数，控制上传数据的批处理大小，以优化监控数据的传输效率和系统性能。建议在实际环境中进行测试和监控，根据具体的应用场景和系统负载进行调整，以达到最佳的性能表现。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"配置与密钥"，并切换至"monitoring"命名空间，找到名为"persistent-user-config"的配置项。
3. 单击"编辑YAML"，对配置数据进行编辑，并在operatorConfigOverride中增加如下两个参数（operatorConfigOverride后面若有\[\]，说明数组是空的，需要删除\[\]）。 
   ```
   ...
         operatorConfigOverride:
         - lightweight.agent.max-block-size=31457280
         - lightweight.agent.max-rows-per-block=30000
   ...
   ```
   
   
4. 单击"确定"。
 
