Skip to content

Prometheus Metrics ​

Borg UI can expose Prometheus metrics at:

text
/metrics

Metrics are disabled by default.

Enable Metrics ​

Open Settings > System > Metrics Access.

Recommended settings:

  • enable /metrics
  • require a token
  • keep the endpoint on a private network
  • expose Grafana, not Borg UI metrics, to users

When token protection is enabled, Borg UI accepts either header:

text
X-Borg-Metrics-Token: <token>
Authorization: Bearer <token>

If metrics are disabled, /metrics returns 404.

Prometheus Example ​

yaml
scrape_configs:
  - job_name: borg-ui
    metrics_path: /metrics
    static_configs:
      - targets:
          - borg-web-ui:8081
    authorization:
      type: Bearer
      credentials: <your-generated-token>

Or:

yaml
scrape_configs:
  - job_name: borg-ui
    metrics_path: /metrics
    static_configs:
      - targets:
          - borg-web-ui:8081
    http_headers:
      X-Borg-Metrics-Token:
        values:
          - <your-generated-token>

Example Monitoring Stack ​

The repository includes an example stack:

Metric Groups ​

Repository metrics:

  • borg_repository_info
  • borg_repository_size_bytes
  • borg_repository_archive_count
  • borg_repository_last_backup_timestamp
  • borg_repository_last_check_timestamp
  • borg_repository_last_compact_timestamp

Backup metrics:

  • borg_backup_jobs_total
  • borg_backup_orphaned_jobs_total (always empty since the job tables collapsed into operations; kept so existing dashboards keep parsing)
  • borg_backup_last_job_success
  • borg_backup_last_duration_seconds
  • borg_backup_last_original_size_bytes
  • borg_backup_last_deduplicated_size_bytes

Restore metrics:

  • borg_restore_jobs_total

Maintenance metrics:

  • borg_check_jobs_total
  • borg_check_last_duration_seconds
  • borg_compact_jobs_total
  • borg_compact_last_duration_seconds
  • borg_prune_jobs_total

System metrics:

  • borg_ui_repositories_total
  • borg_ui_scheduled_jobs_total
  • borg_ui_scheduled_jobs_enabled
  • borg_ui_active_jobs

Useful Queries ​

Last backup failed:

text
borg_backup_last_job_success{repository="my-repo"} == 0

Time since last backup:

text
time() - borg_repository_last_backup_timestamp{repository="my-repo"}

Current failed backup job count:

text
sum(borg_backup_jobs_total{status="failed"}) by (repository)

Troubleshooting ​

Empty metrics ​

Run at least one backup, restore, check, prune, or compact job. Some metrics are created only after data exists.

404 ​

Metrics are disabled.

401 or 403 ​

Token protection is enabled and the request did not include a valid token.

Distributed under the AGPL-3.0 License.