监控中心FAQ
索引
为什么云原生监控插件开启本地数据存储时,重启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挂载的磁盘空间不足。
解决方案
- 方案一:推荐使用关闭本地数据存储模式对接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默认行为) |
|
可能会出现CPU使用率等指标的微小失真。 |
配置honorTimestamps |
采集的指标和实际时间点完全吻合,在压测等场景下,计算出来的结果更加真实。 |
|
您可以参考以下方式配置honorTimestamps。
集群中需要安装3.11.0版本及以上的云原生监控插件,且已开启系统预置采集功能。
- 登录CCE控制台,单击集群名称进入集群详情页。
- 在左侧导航栏中选择“配置与密钥”,并切换至“monitoring”命名空间,找到名为“persistent-user-config”的配置项。
- 单击“编辑YAML”,搜索kubelet-cadvisor,然后新增配置honorTimestamps: true。
... - customBlacklist: [] customWhitelist: [] destNamespace: kube-system name: kubelet-cadvisor namespace: monitoring scrapeAllMetrics: false honorTimestamps: true scrapeInterval: "" status: "on" type: ServiceMonitor ...
- 单击“确定”保存配置项,等待约1分钟即可生效。
采集端点访问403的原因是什么?该如何处理?
问题根因
您的采集端点对应的采集任务ServiceMonitor/PodMonitor配置了认证,出于安全考虑,页面访问默认不支持访问需认证的端点。
解决方案:您可以通过配置,允许访问带认证的端点。
配置允许访问带认证的端点,会导致您需认证的端点可在集群内通过访问prometheus-lightweight服务的方式直接访问,因此请勿将prometheus-lightweight服务端口暴露至集群外部。
- 登录CCE控制台,单击集群名称进入集群详情页。
- 在左侧导航栏中选择“配置与密钥”,并切换至“全部命名空间”,找到名为“persistent-user-config”的配置项。
- 单击“更新”,对lightweight-user-config.yaml配置数据进行编辑,在operatorConfigOverride字段下增加一条配置。
customSettings: operatorEnvOverride: [] operatorConfigOverride: - --target-response-auto-auth=true promAdapterConfigOverride: []
- 单击“确定”保存配置项,等待约1分钟即可生效。