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

使用Prometheus与json-exporter监控REST API无法查看指标求助

排查Prometheus无法采集json-exporter指标的步骤

一、验证json-exporter自身能否正确解析目标API

  1. 进入json-exporter的Pod:
    kubectl exec -it <json-exporter-pod-name> -n <你的命名空间> -- sh
    
  2. 直接调用exporter的探针接口,测试指标生成:
    curl "http://localhost:7979/probe?module=default&target=http://xxx.xxx.xxx.xxx:xxxx"
    
    • 如果返回内容里没有used_storage_byte等自定义指标:
      • 先确认目标API的实际返回结构:在Pod内执行curl http://xxx.xxx.xxx.xxx:xxxx,检查是否为{"used": xxx, "free": xxx, "total": xxx}格式
      • 调整configuration.config里的path配置,确保与JSON返回结构完全匹配

二、检查ServiceMonitor是否被Prometheus识别

  1. 查看ServiceMonitor的标签与配置:
    kubectl get servicemonitor pi2 -n monitoring -o yaml
    
    • 确认metadata.labels中的release: prometheus与Prometheus实例的serviceMonitorSelector匹配(kube-prometheus-stack默认会选择带该标签的ServiceMonitor)
  2. 验证Prometheus是否加载了该抓取任务:
    • 访问Prometheus UI的/config页面,搜索是否存在对应pi2的job配置
    • 或在Prometheus Pod内查看生成的配置文件:cat /etc/prometheus/config_out/prometheus.env.yaml

三、检查Prometheus的抓取状态

  1. 访问Prometheus UI的/targets页面:
    • 如果目标状态为DOWN:查看Error列的具体信息,常见原因包括:网络不通(json-exporter无法访问目标API)、目标API响应超时、模块配置错误
    • 如果目标未出现在列表中:说明ServiceMonitor未被Prometheus识别,回到第二步重新检查标签与选择器

四、确认Prometheus是否存储了指标

  1. 在Prometheus UI的/graph页面,直接搜索自定义指标名(如used_storage_byte):
    • 若能搜到结果:问题出在Grafana,需确认数据源配置正确、面板查询语句无拼写错误
    • 若搜不到:说明采集流程存在问题,回到前面步骤排查

五、额外排查点

  1. 查看json-exporter的Pod日志,获取错误信息:
    kubectl logs <json-exporter-pod-name> -n <你的命名空间>
    
  2. 确认集群网络策略:确保monitoring命名空间的Prometheus能访问json-exporter的Service,同时json-exporter能访问目标API的IP/端口
  3. 检查版本兼容性:kube-prometheus-stack v0.58.0与json-exporter v0.5.0无明显兼容性问题,但需确认CRD资源正常

你的配置优化建议

当前json-exporter配置中,metrics下的values字段属于冗余配置(path已直接提取指标值,values用于添加额外标签),可简化为:

configuration:
  config: |
    ---
    modules:
      default:
        metrics:
          - name: used_storage_byte
            path: '{ .used }'
            help: used storage byte
            labels: {}
          - name: free_storage_byte
            path: '{ .free }'
            help: free storage byte
            labels: {}
          - name: total_storage_byte
            path: '{ .total }'
            help: total storage byte
            labels: {}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:30:52