You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Kubernetes自定义资源Ready状态接入Prometheus监控

监控Kubernetes自定义资源状态并接入Prometheus的方案

一、排查kube-state-metrics配置问题

如果按文档配置后指标未显示,按以下步骤逐一排查:

  • 验证权限配置:确认kube-state-metrics的ClusterRole拥有目标CRD的get、list、watch权限。执行kubectl describe clusterrole kube-state-metrics,检查是否包含类似apiGroups: ["your-crd-group.com"], resources: ["myresources"], verbs: ["get", "list", "watch"]的规则,缺少的话需要补充权限绑定。
  • 检查CustomResourceState配置格式:确保配置中的group、version、kind与CRD完全匹配(注意Kind首字母大写),指标提取路径正确。比如你的ready状态在CR的status.ready字段,配置示例应该是:
    spec:
      metrics:
      - name: myresource_ready_status
        help: "Ready status of MyResource"
        each:
          type: gauge
          path: .status.ready
          labels:
            name: .metadata.name
    
  • 查看kube-state-metrics运行日志:检查Pod日志是否有加载自定义资源的成功提示,比如Loaded custom resource state config for group/version/kind。如果出现权限错误、配置格式错误等日志,直接对应修复。
  • 手动验证指标输出:直接访问kube-state-metrics的Metrics端点,执行curl http://<kube-state-metrics-service-ip>:8080/metrics | grep myresource,确认是否有目标指标返回。如果没有,说明配置未生效;如果有但Prometheus没抓取到,检查Prometheus的抓取配置。
  • 确认Prometheus抓取规则:检查Prometheus的Job配置是否包含kube-state-metrics的服务,且没有通过relabel_configs或metric_relabel_configs过滤掉该指标。

二、替代kube-state-metrics的实现方式

如果kube-state-metrics不符合需求,以下几种方案更灵活:

  • 自定义Exporter+ServiceMonitor:自己编写轻量脚本(Go/Python均可),调用Kubernetes API批量获取CR的ready状态,转换成Prometheus指标暴露为HTTP端点。然后通过Prometheus Operator的ServiceMonitor配置,让Prometheus自动抓取该端点。这种方式完全自定义指标逻辑,适合复杂的状态计算场景。
  • kube-metrics-adapter:该工具可将CR的状态转换为Kubernetes自定义指标,既支持HPA自动扩缩容,也能将指标暴露给Prometheus。适合需要同时实现监控和自动运维的场景。
  • 在CR控制器(Operator)中嵌入指标:如果你的CR有对应的Operator控制器,可以直接在控制器代码中集成Prometheus客户端库,在处理CR状态变更时实时更新指标。这种方式指标延迟最低,与业务逻辑强绑定,适合对监控实时性要求高的场景。

内容的提问来源于stack exchange,提问作者pjuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:22:47