# 监控中心FAQ
#### 索引
- [为什么监控中心没有数据了？]
- [如何关闭监控中心？]
- [监控中心为什么没有展示自定义指标？]
- [为什么云原生监控插件开启本地数据存储时，重启prometheus-server实例可能会导致节点列表的资源信息短时间（1-2分钟）无法正常显示？]
- [为什么云原生监控插件开启本地数据存储时，重启kube-state-metrics实例可能会导致页面部分数据翻倍？]
- [云原生监控插件开启本地数据存储时为什么不能正常上报指标？]
- [为什么监控中心的工作负载/节点CPU使用率超过100%？]
- [采集端点访问403的原因是什么？该如何处理？]
 
 #### 为什么监控中心没有数据了？
- 可能原因一：云原生监控插件异常 请前往集群详情的"插件中心"页面，先检查插件云原生监控插件是否为"运行中"。
  图1检查插件运行状态   
  ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001831546550.png "点击放大")
  如果插件运行异常，可以根据云原生监控插件的实例的事件进行排查。
  图2查看插件事件   
  ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001878305913.png "点击放大") 
- 可能原因二：云原生监控插件对接的AOM实例被删除 请在集群详情的"插件中心"页面，检查插件云原生监控插件的配置。
  图3编辑插件配置   
  ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001831386770.png "点击放大")
  确认AOM实例非空。
  图4查看AOM实例   
  ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002089043625.png "点击放大") 
- 可能原因三：监控指标上报AOM发生限流或阻塞
  1. 在集群概览页面或集群后台查看K8S事件，查询是否有RemoteWriteAOMPending事件。如果存在该事件则说明上报AOM发生阻塞，建议适当调大云原生监控插件的分片数，详情请参见[Prometheus采集分片调整](https://support.huaweicloud.com/usermanual-cce/cce_10_0978.html#cce_10_0978__section201041572615)。若您的集群规模较大，建议参考[大规模集群中的云原生监控插件配置最佳实践](https://support.huaweicloud.com/usermanual-cce/cce_10_0978.html)进行其他调优。
     ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002476022405.png "点击放大")
     
     
  
  2. 前往"插件中心"，单击 "云原生监控插件"名称，选择实例列表， 查看prometheus-lightweight负载（注意多个分片会有多个Pod，请分别查看），单击"更多\>日志"。确认是否有上报指标错误或429限流等相关日志，若有相关日志，请联系AOM服务定位处理。 ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002476108329.png "点击放大")
     
     
   
 
 #### 如何关闭监控中心？
如需关闭监控中心，请前往CCE控制台"插件管理"页面卸载云原生监控插件，或者关闭AOM对接，即可以停止使用该功能。
 #### 监控中心为什么没有展示自定义指标？
监控中心暂不支持用户自定义指标的展示，如果需要查看自定义指标，可以到AOM服务监控中心的仪表盘配置自定义指标的仪表盘。详情请参见[创建仪表盘](https://support.huaweicloud.com/usermanual-aom2/mon_01_0003.html)。
 #### 为什么云原生监控插件开启本地数据存储时，重启prometheus-server实例可能会导致节点列表的资源信息短时间（1-2分钟）无法正常显示？
因为当prometheus-server实例重启后，实例指标的uid标签值发生了变化。而由于本地存储了数据的机制，导致prometheus-server实例滚动重启的这段时间里指标重叠，即云原生监控插件上报到AOM的指标同时存在新老prometheus-server实例的指标，因而导致节点列表的资源信息不准确。故在指标重叠的这段时间内，不展示节点列表的资源信息。若无特殊场景，对接AOM推荐使用关闭本地数据存储的云原生监控插件。
 #### 为什么云原生监控插件开启本地数据存储时，重启kube-state-metrics实例可能会导致页面部分数据翻倍？
由于kube-state-metrics采集的指标中的instance标签值取自节点IP，当kube-state-metrics实例被调度到一个新的节点上时，节点IP发生了变化，导致instance标签值发生变化。而由于本地存储数据的机制，kube-state-metrics滚动重启的这段时间里指标发生重叠，即云原生监控插件上报到AOM的指标同时存在新旧实例的数据。因为instance标签值不一致，这两次上报的指标都被认为是有效数据，导致"监控中心 \> 集群"页面在统计的节点、工作负载、Pod、命名空间、控制面组件的数量时出现部分数据翻倍的情况。若无特殊场景，对接AOM推荐使用关闭本地数据存储的云原生监控插件。
 #### 云原生监控插件开启本地数据存储时为什么不能正常上报指标？
请到插件中心，选中prometheus-server-x实例，查看日志。
图5查看Prometheus实例日志   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001831546554.png "点击放大")
- 如果日志中存在"no space left on device"类似的日志打印，则说明Prometheus挂载的磁盘空间不足，导致指标无法写入。 **解决方案**
  - 方案一：推荐使用关闭本地数据存储模式对接AOM实例。使用AOM托管指标数据，无需管理存储。
  
  - 方案二：在左侧导航栏中选择"存储"，并切换至monitoring命名空间，选中pvc-prometheus-server-0的磁盘，扩容对应的存储资源。扩容完成后前往有状态负载页面，将prometheus-server的实例重启。
    图6扩容PVC   
    ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001878305917.png "点击放大")
    ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/caution_3.0-zh-cn.png)
    在磁盘空间不足后已无法写入Prometheus指标，将导致数据无法采集，因此完成扩容重启前的监控数据将会丢失。
    
   
- 如果日志中无error日志，并且出现大量"WAL segment loaded"日志后启动失败。
  则可能由于以下原因引起：
  - 可能原因一：prometheus-server存在大量启动探针检查失败的事件，出现大量未持久化的指标数据，持续事件超过了启动探针的延迟时间。 **解决方案**
    - 方案一：推荐使用关闭本地数据存储模式，并对接AOM实例。使用AOM托管指标数据，无需管理存储。
    
    - 方案二：通过kubectl连接集群，执行以下命令：
      ```
      kubectl edit Prometheus -n monitoring server
      ```
      编辑startupProbe的时间：默认启动探针检查为3分钟，建议优先改成30分钟，即将failureThreshold改为30， periodSeconds改为60，表示重试30次，每次间隔60秒。后续可根据实际启动时间进行调整。
      ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/caution_3.0-zh-cn.png)
      该方案在升级插件后，需要重新修改以上数值。
      
     
  
  - 可能原因二：检查prometheus-server一直OOM。Prometheus在启动时会加载PVC中未持久化的指标数据，需要额外占用大量内存。 **解决方案**
    - 方案一：推荐使用关闭本地数据存储模式，并对接AOM实例。使用AOM托管指标数据，无需管理存储。
    
    - 方案二：前往插件中心，编辑"云原生监控插件"配置，将prometheus-server的内存限制扩大至不再OOM。
     
    
 
 #### 为什么监控中心的工作负载/节点CPU使用率超过100%？
工作负载CPU使用率是使用container_cpu_usage_seconds_total计算的，系统会定期更新CPU使用量和更新时间点。Prometheus默认情况下不会使用指标自带的时间点，而是使用采集时间点，此时会导致CPU使用量的时间点不真实，出现较小的时延。
举例如下，假设系统每6s更新一次CPU用量，采集周期为15s，Prometheus第一次采集时间为18:30:14（采集到18:30:10的数据），第二次采集是18:30:29（采集到18:30:28的数据）：
| CPU用量    | 时间点        |
|:---|:---|
| 100000 | 18:30:10  |
| 150000 | 18:30:16 |
| 200000   | 18:30:22    |
| 250000 | 18:30:28   |
| 300000  | 18:30:34   |
   
- 实际每秒CPU使用量：(150000-100000)/(18:30:16-18:30:10)=8333.33
- Prometheus计算的每秒CPU使用量：(250000-100000)/(18:30:29-18:30:14)=10000
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
以上数据值经过人为放大，仅作示例，实际差异一般很小。
**解决方案**
您可通过配置honorTimestamps使用指标自带的时间点来规避该问题，您可参考以下优缺点分析决定是否配置。
| 是否配置honorTimestamps                 | 优点                                                                                                                                                                                                                                                                                          | 缺点                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| 不配置honorTimestamps（Prometheus默认行为） | - 指标压缩比更高，降低指标总存储量，查询性能优异。  - 不同指标的间隔点一致，均为普罗采集间隔，一般不会出现断点情况。  - 进行多指标联合PromQL计算，偏差的可能性较低。   | 可能会出现CPU使用率等指标的微小失真。                                                                                                                                                                                                                                                                                  |
| 配置honorTimestamps                    | 采集的指标和实际时间点完全吻合，在压测等场景下，计算出来的结果更加真实。                                                                                                                                                                                                                                                        | - 增加指标总存储量，降低指标压缩比，查询性能降低。  - 不是所有的指标暴露方都会正确地携带时间戳，可能会导致对多个指标进行PromQL计算时，出现较大偏差。  - 极端情况下指标可能会出现断点。   |
   
您可以参考以下方式配置honorTimestamps。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
集群中需要安装3.11.0版本及以上的云原生监控插件，且已开启系统预置采集功能。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"配置与密钥"，并切换至"monitoring"命名空间，找到名为"persistent-user-config"的配置项。
3. 单击"编辑YAML"，搜索kubelet-cadvisor，然后新增配置honorTimestamps: true。 
   ```
   ...
       - customBlacklist: []
         customWhitelist: []
         destNamespace: kube-system
         name: kubelet-cadvisor
         namespace: monitoring
         scrapeAllMetrics: false
         honorTimestamps: true
         scrapeInterval: ""
         status: "on"
         type: ServiceMonitor
   ...
   ```
   
   
4. 单击"确定"保存配置项，等待约1分钟即可生效。
 
 #### 采集端点访问403的原因是什么？该如何处理？
**问题根因**
您的采集端点对应的采集任务ServiceMonitor/PodMonitor配置了认证，出于安全考虑，页面访问默认不支持访问需认证的端点。
**解决方案**：您可以通过配置，允许访问待认证的端点。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/notice_3.0-zh-cn.png)
配置允许访问待认证的端点，会导致您需认证的端点可在集群内通过访问prometheus-lightweight服务的方式直接访问，因此请勿将prometheus-lightweight服务端口暴露至集群外部。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"配置与密钥"，并切换至"全部命名空间"，找到名为"persistent-user-config"的配置项。
3. 单击"更新"，对lightweight-user-config.yaml配置数据进行编辑，在operatorConfigOverride字段下增加一条配置。
   ```
   customSettings:
     operatorEnvOverride: []
     operatorConfigOverride:
     - --target-response-auto-auth=true
     promAdapterConfigOverride: []
   ```
   
4. 单击"确定"保存配置项，等待约1分钟即可生效。
 
