要让 docker 镜像仓库被 prometheus 监控,需确保其暴露 /metrics 接口:harbor v2.0+ 默认启用,docker registry 需在 config.yml 中配置 metrics 块并重启;prometheus 需网络可达、正确配置抓取任务(含认证/https),kubernetes 中推荐用 prometheus operator 通过 servicemonitor 自动管理。

要让 Docker 镜像仓库(如 Harbor 或 Docker Registry)被 Prometheus 监控,核心是让它暴露标准的 /metrics 接口,并让 Prometheus 能自动发现并拉取这些指标。整个过程不复杂但容易忽略关键配置细节。
确认镜像仓库已启用指标暴露
Harbor 从 v2.0+ 默认开启 Prometheus 指标端点,路径为 http://
- 在 config.yml 中添加 metrics 配置块:
metrics:addr: :9091path: /metrics
重启 registry 后,访问 http://<registry-host>:9091/metrics</registry-host> 应返回文本格式的指标(如 registry_http_in_flight_requests{method="get"} 1)。
确保 Prometheus 能访问该端点
如果是容器化部署,注意网络连通性:
- Docker 环境中,Prometheus 容器需与 registry/harbor 在同一网络(如自定义 bridge 网络),或使用
host.docker.internal访问宿主机服务 - Kubernetes 环境中,确保 Service 和 Pod 的 labels、ports 正确,且 metrics 端口在 Service 中暴露(如
port: 80,targetPort: 8080) - 若 Harbor 启用了 HTTPS 或认证,Prometheus 配置中需添加
basic_auth或tls_config
配置 Prometheus 抓取任务
在 prometheus.yml 的 scrape_configs 下添加 job:
- 对 Harbor:
- job_name: 'harbor'
static_configs:
- targets: ['harbor.example.com']
metrics_path: /metrics
scheme: https
basic_auth:
username: admin
password: your_password
- 对 Docker Registry:
- job_name: 'docker-registry' static_configs: - targets: ['registry.example.com:9091']
保存后重载配置:curl -X POST http://localhost:9090/-/reload(需启用 --web.enable-admin-api)。
Kubernetes 中用 Prometheus Operator 自动管理(推荐)
若已部署 Operator,只需创建 ServiceMonitor:
- 确保 Harbor Service 有 label,如
app: harbor - 应用以下资源:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: harbor-monitor
namespace: monitoring
spec:
selector:
matchLabels:
app: harbor
endpoints:
- port: http
path: /metrics
interval: 30s
Operator 会自动将其注入 Prometheus 实例,无需手动改配置文件。
不复杂但容易忽略关键配置细节。











