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

如何通过Prometheus接口获取OpenTelemetry自定义指标?

解决方案

搞懂Prometheus接口的本质

  • /metrics接口本来就只返回Prometheus自己的运行指标(比如prometheus_tsdb_head_samples_appended_total这类),根本不会返回你写入的自定义指标——这是设计逻辑,别再死磕这个接口了。
  • /federate不是打开就能拿到所有数据,必须带匹配参数才能筛选出你要的指标。

正确用/federate拉取数据

访问/federate时必须携带match[]参数,比如拉取所有指标:

curl "http://localhost:9090/federate?match[]={job=~'.+'}"

或者只拉取特定指标:

curl "http://localhost:9090/federate?match[]=your_custom_metric"

match[]支持PromQL的匹配规则,比如按job标签过滤,或者直接指定指标名。之前空访问肯定拿不到数据。

换用Prometheus查询API获取数据

如果/federate不符合你的需求,直接用官方查询API更灵活:

查最新指标值

curl "http://localhost:9090/api/v1/query?query=your_custom_metric"

查时间范围内的时序数据

curl "http://localhost:9090/api/v1/query_range?query=your_custom_metric&start=1718000000&end=1718003600&step=15s"

把your_custom_metric换成你的实际指标名,时间戳改成你需要的范围。

确认Prometheus配置没问题

Docker部署的Prometheus默认允许查询远程写入的数据,检查prometheus.yml里的remote_write配置是否正确指向了/api/v1/write,如果之前能在UI看到数据,大概率配置没问题。要是实在不放心,确保没有额外的权限限制(默认没有)。

最后验证下数据状态

先在Prometheus UI的Graph页面用PromQL查你的自定义指标,确认能看到数据——只要UI能查到,就说明数据已经写入TSDB,只是接口用错了,按上面的方法调接口就行。

内容的提问来源于stack exchange,提问作者Matteo Di Lorenzi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:03:30