Prometheus PushProx 是一个客户端-代理工具,旨在解决 Prometheus 无法直接访问位于 NAT 或其他隔离网络拓扑中目标的问题,同时保持 Prometheus 原生的拉取(pull)模型。该工具由代理(Proxy)和客户端(Client)两部分组成,通过代理中转实现 Prometheus 对隔离网络中目标的指标采集。
/clients 端点,返回符合 file_sd_configs 格式的客户端列表,支持动态发现拉取*** Docker 镜像:
bashdocker pull prometheuscommunity/pushprox
代理需部署在 Prometheus 和客户端均能访问的网络位置,默认监听 8080 端口。
Docker 运行命令:
bashdocker run -d \ --name pushprox-proxy \ -p 8080:8080 \ --restart unless-stopped \ prometheuscommunity/pushprox proxy \ --listen-address=:8080 # 可选,默认监听 :8080
客户端部署在目标主机上,需指向代理 URL,并可指定客户端标识、轮询间隔等参数。
基本 Docker 运行命令:
bashdocker run -d \ --name pushprox-client \ --restart unless-stopped \ prometheuscommunity/pushprox client \ --proxy-url=[***] \ # 代理服务地址(必填) --fqdn=client-node-01.example.com \ # 可选,客户端标识(默认使用主机名) --poll-interval=10s \ # 可选,轮询代理间隔(默认 10s) --scrape-timeout=10s # 可选,目标采集超时时间(默认 10s)
在 Prometheus 配置中通过 proxy_url 指定 PushProx 代理,并配置目标节点。
示例配置(prometheus.yml):
yamlscrape_configs: - job_name: 'node-exporter-via-pushprox' proxy_url: '[***] # 代理服务地址 static_configs: - targets: ['client-node-01.example.com:9100'] # 客户端 FQDN 和目标端口(如 node-exporter 9100) # 若目标需通过 HTTPS 访问,添加以下参数(替代原生 scheme: https) params: _scheme: [https]
PushProx 代理提供 /clients 端点,返回所有已注册客户端的列表,格式符合 Prometheus file_sd_configs 要求,支持动态服务发现。
获取客户端列表:
bashcurl [***] > /etc/prometheus/pushprox-clients.json
配置 Prometheus 动态发现:
yamlscrape_configs: - job_name: 'pushprox-dynamic-clients' proxy_url: '[***] file_sd_configs: - files: ['/etc/prometheus/pushprox-clients.json'] # 客户端列表文件 relabel_configs: # 可选:添加 relabel 规则(如过滤、重命名标签等) - source_labels: [__meta_pushprox_fqdn] target_label: instance
定期更新客户端列表:通过 cron 任务或监控工具定期执行 curl 命令,确保服务发现实时性。
proxy_url 向目标客户端(如 client-fqdn:9100)发起采集请求。无内置认证授权:PushProx 代理和客户端均未内置身份验证或授权机制,建议在代理前部署反向代理(如 Nginx、Traefik),添加 TLS、Basic Auth 或 OAuth2 等安全层。
客户端权限风险:运行客户端的主机可被通过代理访问其所有网络服务,需严格限制客户端主机的网络访问权限,避免未授权访问内部服务。
传输安全:建议通过 TLS 加密代理与客户端、Prometheus 与代理之间的通信,防止数据泄露或篡改。
| 参数 | 描述 | 默认值 |
|---|---|---|
--listen-address | 代理监听地址和端口 | :8080 |
--timeout | 客户端请求超时时间 | 1m |
| 参数 | 描述 | 默认值 |
|---|---|---|
--proxy-url | 代理服务的 URL(必填) | - |
--fqdn | 客户端标识 FQDN,默认使用主机名 | 系统主机名 |
--poll-interval | 轮询代理的间隔 | 10s |
--scrape-timeout | 客户端执行采集的超时时间 | 10s |
--max-buffer-size | 最大响应缓冲区大小(字节) | ***(1MB) |
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429