如何将指定指标从一个Prometheus实例推送至另一个实例?
实现Prometheus实例间推送指定指标的操作方案
你可以通过Prometheus原生的remote_write能力配合重标签规则实现需求,无需额外部署第三方组件,具体操作步骤如下:
操作步骤
- 第一步:确认远端Prometheus实例的远程写入地址
正常开启接收功能的远端Prometheus,写入地址格式为http://<远端实例IP>:<服务端口>/api/v1/write,如果远端配置了身份验证,提前准备好对应的账号密码或访问Token。 - 第二步:修改本地Prometheus的配置文件(默认文件名为
prometheus.yml)
在配置文件末尾新增remote_write段落,参考配置如下:remote_write: - url: "http://替换为你的远端Prometheus写入地址/api/v1/write" # 若远端需要基础身份验证,取消下方注释填写对应信息即可 # basic_auth: # username: 你的账号 # password: 你的密码 write_relabel_configs: # 下方示例为仅推送指标名前缀为node_cpu_、node_memory_的指标,可按需修改正则规则 - source_labels: [__name__] regex: '(node_cpu_.+|node_memory_.+)' action: keep配置说明:
write_relabel_configs是指标推送前的过滤规则,上述规则会匹配指标的内置标签__name__(即指标名),仅保留符合正则规则的指标推送到远端,不符合条件的指标会直接被过滤丢弃。 - 第三步:校验配置合法性
执行命令promtool check config prometheus.yml检查配置文件语法是否正确,避免配置错误导致Prometheus启动失败。 - 第四步:重启本地Prometheus实例让配置生效
重启完成后等待1~2分钟,即可在远端Prometheus实例中查询到你指定推送的指标。
常见场景调整规则
- 如果你需要排除部分指定指标、其余全部推送,将
action参数改为drop即可,示例:write_relabel_configs: - source_labels: [__name__] regex: '(不需要推送的指标名1|不需要推送的指标名2)' action: drop - 如果你需要按其他标签筛选推送指标,修改
source_labels为对应标签名即可,以下示例为仅推送job标签值为node_exporter的指标:write_relabel_configs: - source_labels: [job] regex: 'node_exporter' action: keep
内容的提问来源于stack exchange,提问作者blade19899
相关产品推荐
相关产品推荐

