Pushgateway 是 Prometheus 生态系统中的核心组件之一,用于接收并持久化存储短生命周期作业(如批处理任务、定时任务)或临时服务发送的监控指标,并将这些指标以 Prometheus 可抓取的格式暴露,供 Prometheus 服务器定期采集。其核心价值在于解决 Prometheus 基于"拉取"(Pull)模式无法有效监控短生命周期任务的问题,通过"推送"(Push)模式补充指标采集能力。
/metrics),供 Prometheus 服务器抓取指标数据。/metrics 接口,由 Prometheus 主动拉取(更符合 Prometheus 设计理念)。Pushgateway *** Docker 镜像托管于 Docker Hub,可通过以下命令拉取最新版本:
bashdocker pull prom/pushgateway:latest
也可指定具体版本(如 v1.6.2):
bashdocker pull prom/pushgateway:v1.6.2
docker run)启动一个基础 Pushgateway 容器,暴露默认端口(9091):
bashdocker run -d \ --name pushgateway \ -p 9091:9091 \ prom/pushgateway:latest
http://<主机IP>:9091 访问 Web UI,通过 http://<主机IP>:9091/metrics 查看暴露的指标。为避免容器重启后指标丢失,需配置持久化文件并挂载本地目录:
bashdocker run -d \ --name pushgateway \ -p 9091:9091 \ -v /path/on/host/pushgateway-data:/data \ # 本地目录挂载到容器内 /data prom/pushgateway:latest \ --persistence.file=/data/pushgateway.db \ # 指定持久化文件路径 --persistence.interval=2m # 每 2 分钟持久化一次(默认 5m)
适用于多容器协同场景(如与 Prometheus、Grafana 组成监控栈):
yamlversion: '3' services: pushgateway: image: prom/pushgateway:latest container_name: pushgateway restart: always ports: - "9091:9091" volumes: - ./pushgateway-data:/data # 本地持久化目录 command: - --persistence.file=/data/pushgateway.db - --persistence.interval=2m - --web.listen-address=:9091 # 监听地址和端口(默认 :9091) networks: - monitoring-network # 与 Prometheus 共享网络,避免端口暴露到宿主机 networks: monitoring-network: driver: bridge
客户端可通过 HTTP POST 请求向 Pushgateway 推送指标,格式为 Prometheus 文本协议。以下为常见推送方式示例:
推送一个简单指标 job_success{job="batch-processing"} 1(表示批处理任务成功):
bash# 语法:POST /metrics/job/<job_name>/[instance/<instance_name>] curl -X POST http://localhost:9091/metrics/job/batch-processing/instance/server-01 \ --data-binary "job_success 1"
<job_name>:必选,标识任务类型(如 batch-processing)。<instance_name>:可选,标识具体实例(如 server-01),用于区分同一 job 下的不同节点。一次推送多个指标(换行分隔):
bashcat <<EOF | curl -X POST http://localhost:9091/metrics/job/data-backup \ --data-binary @- backup_duration_seconds 120.5 backup_files_count 42 backup_success{status="ok"} 1 EOF
Pushgateway 主要通过命令行参数配置,以下为常用参数说明:
| 参数名 | 说明 | 默认值 | 示例 |
|---|---|---|---|
--web.listen-address | 监听的 HTTP 地址和端口 | :9091 | --web.listen-address=0.0.0.0:8080 |
--persistence.file | 持久化指标的文件路径(为空时不持久化) | ""(不持久化) | --persistence.file=/data/pushgateway.db |
--persistence.interval | 指标持久化到文件的间隔时间 | 5m(5分钟) | --persistence.interval=2m |
--web.telemetry-path | 暴露自身监控指标的路径(供 Prometheus 抓取 Pushgateway 自身状态) | /metrics | --web.telemetry-path=/pushgateway-metrics |
--web.enable-lifecycle | 是否启用 HTTP 生命周期接口(如 /-/reload 重载配置,/-/quit 退出) | false | --web.enable-lifecycle |
--web.config.file | Web 配置文件路径(用于配置 TLS、基本认证等) | "" | --web.config.file=/etc/pushgateway/web-config.yml |
--log.level | 日志级别(debug/info/warn/error) | info | --log.level=debug |
创建 web-config.yml 配置 TLS 和基本认证,挂载到容器并通过 --web.config.file 指定:
yaml# web-config.yml tls_config: cert_file: /etc/tls/cert.pem key_file: /etc/tls/key.pem basic_auth_users: admin: $2a$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # bcrypt 加密的密码(可通过 htpasswd 生成)
启动容器时挂载配置文件和 TLS 证书:
bashdocker run -d \ --name pushgateway \ -p 9091:9091 \ -v /path/on/host/web-config.yml:/etc/pushgateway/web-config.yml \ -v /path/on/host/tls:/etc/tls \ prom/pushgateway:latest \ --web.config.file=/etc/pushgateway/web-config.yml
Pushgateway 内存中的指标默认不会持久化,容器重启后数据丢失。生产环境必须配置持久化:
/data)。--persistence.file 指定持久化文件路径(如 /data/pushgateway.db)。--persistence.interval 调整持久化频率(默认 5 分钟,高频推送场景可缩短间隔)。在 Prometheus 配置文件 prometheus.yml 中添加以下 scrape_configs,抓取 Pushgateway 暴露的指标:
yamlscrape_configs: - job_name: 'pushgateway' static_configs: - targets: ['pushgateway:9091'] # Pushgateway 容器名或 IP:端口(与 Prometheus 网络互通) honor_labels: true # 保留指标原标签(避免 Pushgateway 自动添加的 instance 标签覆盖客户端标签)
honor_labels: true 必须配置,否则 Prometheus 会用抓取目标的 instance 标签覆盖客户端推送的 instance 标签,导致指标混乱。DELETE /metrics/job/<job_name>/[instance/<instance_name>])或配置外部清理脚本。/metrics 接口),关注 pushgateway_http_requests_total(请求量)、pushgateway_storage_size_bytes(存储大小)等指标,及时发现异常。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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