Export harbor service health to Prometheus.
To run it:
make build
./harbor_exporter [flags]
To build a Docker image:
make dockerbuild
Metric | Meaning | Labels |
---|---|---|
harbor_up | ||
harbor_scans_completed | ||
harbor_scans_total | ||
harbor_scans_requester | ||
harbor_project_count_total | type=[private_project, public_project, total_project] | |
harbor_repo_count_total | type=[private_repo, public_repo, total_repo] | |
harbor_quotas_count_total | repo_id, repo_name, type=[hard, used] | |
harbor_quotas_size_bytes | repo_id, repo_name, type=[hard, used] | |
harbor_system_volumes_bytes | storage=[free, total] | |
harbor_repositories_pull_total | repo_id, repo_name | |
harbor_repositories_star_total | repo_id, repo_name | |
harbor_repositories_tags_total | repo_id, repo_name | |
harbor_replication_status | status of the last execution of this replication policy: Succeed = 1, any other status = 0 | repl_pol_name |
harbor_replication_tasks | number of replication tasks, with various results, in the latest execution of this replication policy | repl_pol_name, result=[failed, succeed, in_progress, stopped] |
Note: when the harbor.instance flag is used, each metric name starts with harbor_instancename_
instead of just harbor_
.
./harbor_exporter --help
Below environment variables can be used instead of the corresponding flags. Easy when running the exporter in a container.
HARBOR_INSTANCE
HARBOR_URI
HARBOR_USERNAME
HARBOR_PASSWORD
HARBOR_SKIPMETRICS
Since this solution does not expose metrics from inside Harbor, but instead uses existing API calls over http to the monitored Harbor instance, the metrics come with a performance penalty.
Especially the harbor_repositories metrics group increase the resource usage of Harbor.
To handle this, there is an option to skip some of the metrics: specify a comma separated list of collectors. Collector names are: scan, statistics, quotas, systemvolumes, repositories, replications. Each collector gathers one or more metrics, recognizable by the name.
Warning: skipping all collectors makes the remaining 'up' metric meaningless, since that metric merely states whether all other metrics could be retrieved. When you need to know the general status of your Harbor instance it is better to use its health check: https://<harbor-server>/api/ping
and https://<harbor-server>/api/health
.
You can deploy this exporter using the Docker image.
For example:
docker pull c4po/harbor-exporter
docker run -d -p 9107:9107 -e HARBOR_USERNAME=admin -e HARBOR_PASSWORD=password c4po/harbor-exporter --harbor.server=https://harbor.dev
if you deploy Harbor to Kubernetes using the helm chart goharbor/harbor-helm, you can use this file kubernetes/harbor-exporter.yaml to deploy the harbor-exporter
with secretKeyRef
You can load this json file grafana/harbor-overview.json to Grafana instance to have the dashboard.