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

能否通过remote_write向Prometheus实例推送指标,再由中心实例抓取?

实现方案:从接收remote_write的Prometheus实例抓取推送指标

Prometheus默认的/metrics端点仅暴露自身运行指标,不会展示通过remote_write推送进来的时间序列数据——这些数据存储在它的TSDB中,不属于自身监控指标集合。以下两种方法可以实现你的需求:

方法一:使用Prometheus联邦(Federation)功能

接收remote_write的Prometheus实例默认提供/federate端点,该端点可返回实例存储中的所有时间序列数据。只需在中心Prometheus中配置抓取这个端点即可:

  1. 修改中心Prometheus的配置:
global:
  scrape_interval:     10s
  evaluation_interval: 10s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
  # 新增抓取接收remote_write实例的联邦配置
  - job_name: 'federate_remote_write_nodes'
    scrape_interval: 10s
    honor_labels: true  # 保留原始指标的标签,避免被中心实例的默认标签覆盖
    metrics_path: '/federate'
    params:
      'match[]':
        - '{job=~".+"}'  # 匹配所有job的指标,可根据需求调整过滤规则,比如仅抓取特定namespace的指标
    static_configs:
      - targets: ['remote-write-node-1:9090', 'remote-write-node-2:9090']  # 替换为你的接收实例地址列表
  1. 接收remote_write的Prometheus实例无需额外配置,只要确保中心实例能访问到该实例的/federate端点即可。

方法二:使用remote_read直接读取接收实例的存储

如果不需要通过抓取流程,而是让中心Prometheus直接从接收实例的TSDB中读取数据,可以配置remote_read:

修改中心Prometheus的配置:

global:
  scrape_interval:     10s
  evaluation_interval: 10s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']

# 新增remote_read配置,读取接收实例的存储
remote_read:
  - url: 'http://remote-write-node-1:9090/api/v1/read'
    read_recent: true  # 读取最近产生的数据,适合实时查询场景
  - url: 'http://remote-write-node-2:9090/api/v1/read'
    read_recent: true

注意事项

  • 确保中心Prometheus能访问到接收实例的/federate或/api/v1/read端点,无网络或权限限制
  • 联邦方式适合需要对接收实例的指标进行二次处理(如重新打标签、过滤)的场景;remote_read适合直接聚合所有数据、统一查询的场景
  • 若接收实例数量较多,可考虑使用服务发现替代static_configs来自动发现目标实例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:05:17