更新时间:2024-11-12 GMT+08:00

监控中心FAQ

为什么监控中心没有数据了?

  • 可能原因一:云原生监控插件异常

    请前往集群详情的“插件中心”页面,先检查插件云原生监控插件是否为“运行中”。

    图1 检查插件运行状态

    如果插件运行异常,可以根据云原生监控插件的实例的事件进行排查。

    图2 查看插件事件
  • 可能原因二:云原生监控插件对接的AOM实例被删除

    请在集群详情的“插件中心”页面,检查插件云原生监控插件的配置。

    图3 编辑插件配置

    确认AOM实例非空。

    图4 查看AOM实例

如何关闭监控中心?

如需关闭监控中心,请前往CCE控制台“插件管理”页面卸载云原生监控插件,或者关闭AOM对接,即可以停止使用该功能。

监控中心为什么没有展示自定义指标?

监控中心暂不支持用户自定义指标的展示,如果需要查看自定义指标,可以到AOM服务监控中心的仪表盘配置自定义指标的仪表盘。

为什么云原生监控插件开启本地数据存储时,重启prometheus-server实例可能会导致节点列表的资源信息短时间(1-2分钟)无法正常显示?

因为当prometheus-server实例重启后,实例指标的uid标签值发生了变化。而由于本地存储了数据的机制,导致prometheus-server实例滚动重启的这段时间里指标重叠,即云原生监控插件上报到AOM的指标同时存在新老prometheus-server实例的指标,因而导致节点列表的资源信息不准确。故在指标重叠的这段时间内,不展示节点列表的资源信息。若无特殊场景,对接AOM推荐使用关闭本地数据存储的云原生监控插件。

为什么云原生监控插件开启本地数据存储时,重启kube-state-metrics实例可能会导致页面部分数据翻倍?

当kube-state-metrics实例被调度到一个新的节点上,kube-state-metrics采集的指标中的instance标签值就发生了变化。而由于本地存储了数据的机制,导致kube-state-metrics滚动重启的这段时间里指标重叠,即云原生监控插件上报到AOM的指标同时存在新老kube-state-metrics实例的数据。又因为instance标签值不一致,这两次上报的指标都被认为是有效数据。从而导致“监控中心 > 集群”页面在统计的节点、工作负载、Pod、命名空间、控制面组件的数量时翻倍。若无特殊场景,对接AOM推荐使用关闭本地数据存储的云原生监控插件。

云原生监控插件开启本地数据存储时为什么不能正常上报指标?

出现该问题的原因可能为开启本地数据存储时插件实例挂载的PV存储空间已满,导致指标无法写入。

请到插件中心,选中prometheus-server-x实例,查看日志。如果日志中存在:“no space left on device”类似的日志打印,则说明Prometheus挂载的磁盘空间不足。

图5 查看Prometheus实例日志

解决方案

  • 方案一:推荐使用关闭本地数据存储模式对接AOM实例。使用AOM托管指标数据,无需管理存储。
  • 方案二:在左侧导航栏中选择“存储”,并切换至monitoring命名空间,选中pvc-prometheus-server-0的磁盘,扩容对应的存储资源。扩容完成后前往有状态负载页面,将prometheus-server的实例重启。
    图6 扩容PVC

    在磁盘空间不足后已无法写入Prometheus指标,将导致数据无法采集,因此扩容完成重启后,该时段的监控数据将会丢失。

为什么监控中心的工作负载/节点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

以上数据值经过人为放大,仅作示例,实际差异一般很小。

解决方案

您可通过配置honorTimestamps使用指标自带的时间点来规避该问题,您可参考以下优缺点分析决定是否配置。

是否配置honorTimestamps

优点

缺点

不配置honorTimestamps(Prometheus默认行为)

  • 指标压缩比更高,降低指标总存储量,查询性能优异。
  • 不同指标的间隔点一致,均为普罗采集间隔,一般不会出现断点情况。
  • 进行多指标联合PromQL计算,偏差的可能性较低。

可能会出现CPU使用率等指标的微小失真。

配置honorTimestamps

采集的指标和实际时间点完全吻合,在压测等场景下,计算出来的结果更加真实。

  • 增加指标总存储量,降低指标压缩比,查询性能降低。
  • 不是所有的指标暴露方都会正确的携带时间戳,可能会导致对多个指标进行PromQL计算时,出现较大偏差。
  • 极端情况下指标可能会出现断点。

您可以参考以下方式配置honorTimestamps。

集群中需要安装3.11.0版本及以上的云原生监控插件,且已开启系统预置采集功能。

  1. 登录CCE控制台,单击集群名称进入集群详情页。
  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配置了认证,出于安全考虑,页面访问默认不支持访问需认证的端点。

解决方案:您可以通过配置,允许访问带认证的端点。

配置允许访问带认证的端点,会导致您需认证的端点可在集群内通过访问prometheus-lightweight服务的方式直接访问,因此请勿将prometheus-lightweight服务端口暴露至集群外部。

  1. 登录CCE控制台,单击集群名称进入集群详情页。
  2. 在左侧导航栏中选择“配置与密钥”,并切换至“全部命名空间”,找到名为“persistent-user-config”的配置项。
  3. 单击“更新”,对lightweight-user-config.yaml配置数据进行编辑,在operatorConfigOverride字段下增加一条配置。
    customSettings:
      operatorEnvOverride: []
      operatorConfigOverride:
      - --target-response-auto-auth=true
      promAdapterConfigOverride: []
  4. 单击“确定”保存配置项,等待约1分钟即可生效。