Skip to content

mdraijer/harbor_exporter

 
 

Repository files navigation

Prometheus exporter for Harbor

CircleCI

Export harbor service health to Prometheus.

To run it:

make build
./harbor_exporter [flags]

To build a Docker image:

make dockerbuild

Exported Metrics

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_.

Flags

./harbor_exporter --help

Environment variables

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

Performance

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.

Using Docker

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

Run in Kubernetes

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

Using Grafana

You can load this json file grafana/harbor-overview.json to Grafana instance to have the dashboard. screenshot

About

Harbor prometheus exporter

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 94.7%
  • Makefile 3.3%
  • Dockerfile 2.0%