Grafana仅识别Prometheus所在Namespace/Node指标的技术问题求助
问题排查与解决步骤
1. 验证Prometheus指标采集完整性
先直接在Prometheus UI执行查询,确认是否真的能获取到目标Namespace的指标:
- 执行查询语句:
kube_deployment_status_replicas{namespace="ns-app-dev"},检查是否返回对应数据- 若无数据,说明Prometheus采集kube-state-metrics时做了过滤,需检查采集job的
metric_relabel_configs配置,比如是否存在仅保留grafana-lokiNamespace的规则:
将# 错误示例:需删除或修改此类规则 metric_relabel_configs: - source_labels: [namespace] regex: grafana-loki action: keepregex改为.*即可保留所有Namespace的指标。
- 若无数据,说明Prometheus采集kube-state-metrics时做了过滤,需检查采集job的
2. 检查Grafana变量与查询的绑定
若Prometheus能查到数据,问题出在Grafana配置:
- 进入面板的变量设置页,确认Namespace变量的查询语句是否正确,正确写法应为:
确保变量能拉取全量Namespace列表。label_values(kube_deployment_status_replicas, namespace) - 修正面板查询语句,将变量正确引入:
其中sum(kube_deployment_status_replicas{namespace=~"$namespace"})$namespace需与你定义的变量名称完全一致。
3. 确认Prometheus的RBAC权限
检查Prometheus使用的ServiceAccount是否有集群级别的资源访问权限,部分场景下RBAC规则会限制仅能访问特定Namespace:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: prometheus-kube-state-metrics rules: - apiGroups: [""] resources: ["pods", "services", "nodes", "namespaces"] verbs: ["get", "list", "watch"] - apiGroups: ["apps"] resources: ["deployments", "statefulsets", "daemonsets"] verbs: ["get", "list", "watch"]
确保ClusterRole包含所有需要的资源权限,并绑定到Prometheus的ServiceAccount。
4. 校验指标标签一致性
确认kube-state-metrics输出的指标中,namespace标签的拼写、大小写完全正确,避免因标签名不匹配导致筛选失效。
内容的提问来源于stack exchange,提问作者Kent Ho
相关产品推荐
相关产品推荐

