本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

Pushgateway 是 Prometheus 生态系统中的核心组件之一,用于接收并持久化存储短生命周期作业(如批处理任务、定时任务)或临时服务发送的监控指标,并将这些指标以 Prometheus 可抓取的格式暴露,供 Prometheus 服务器定期采集。其核心价值在于解决 Prometheus 基于"拉取"(Pull)模式无法有效监控短生命周期任务的问题,通过"推送"(Push)模式补充指标采集能力。
/metrics),供 Prometheus 服务器抓取指标数据。/metrics 接口,由 Prometheus 主动拉取(更符合 Prometheus 设计理念)。Pushgateway 官方 Docker 镜像托管于 Docker Hub,可通过以下命令拉取最新版本:
docker pull prom/pushgateway:latest
也可指定具体版本(如 v1.6.2):
docker pull prom/pushgateway:v1.6.2
docker run)启动一个基础 Pushgateway 容器,暴露默认端口(9091):
docker run -d \ --name pushgateway \ -p 9091:9091 \ prom/pushgateway:latest
http://<主机IP>:9091 访问 Web UI,通过 http://<主机IP>:9091/metrics 查看暴露的指标。为避免容器重启后指标丢失,需配置持久化文件并挂载本地目录:
docker 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 组成监控栈):
version: '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(表示批处理任务成功):
# 语法: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 下的不同节点。一次推送多个指标(换行分隔):
cat <<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 指定:
# 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 证书:
docker 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 暴露的指标:
scrape_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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429