更新kube-prometheus-stack 导致自定义labels缺失

· 483字 · 1分钟

TL;DR 🔗

k8s 集群更新监控 kube-prometheus-stack导致k8s resources自定义labels 丢失

Chart Version: 19.2.3 —> 30.0.1

Resolution:需要指定 metricLabelsAllowlist参数

# --set 表示哪些 k8s resource 需要获取自定义 metrics labels
helm upgrade kube-prometheus-stack --set kube-state-metrics.metricLabelsAllowlist='{namespces=[*],pods=[*],deployments=[*],cronjobs=[*],job=[*],daemonsets=[*],statefulsets=[*],replicasets=[*],services=[*]}' -f values.yaml prometheus-community/kube-prometheus-stack --version=30.0.1 -n kube-prometheus-stack

# 如果不指定 --set,则隐式表达为 --set kube-state-metrics.metricLabelsAllowlist='{namespces=[*]}'

Question Description 🔗

正常情况下,k8s集群都会安装部署一套监控系统 prometheus + grafana 来监控和展示集群中业务应用基本信息

在正常部署应用时,我们会加一些自定义的 label ,例如:service、module、owner等等,并将这些 labels添加到告警邮件中,这样我们就能够迅速定位哪些业务模块发生了问题,这些业务模块是由谁 负责。以保证第一时间能够处理问题并通知到相关人员

由于公司业务布局,组内维护了很多套 k8s集群,在某次告警邮件中,发现自定义的 labels 都不见了,但是其他集群却没有问题。然后就追踪到监控版本的问题。

此问题在官方kube-state-metrics issuekubernetes blog 中都有提到,以此确定是 metricLabelsAllowlist 导致的

Tiphelm upgrade –set 用法

# value会有两种情况: 单个值 和 多值列表
--set key=value
example: --set xxx.enabled=false

--set key=valueList
example: --set xxx.list='{value1,value2,value3}'