Documentation Index
Fetch the complete documentation index at: https://mintlify.com/karanhudia/borg-ui/llms.txt
Use this file to discover all available pages before exploring further.
Overview
System endpoints provide information about the application version, Borg version, system health, and Prometheus metrics.
Get System Info
Get application and Borg version information.
Endpoint: GET /api/system/info
Example Request:
curl http://localhost:5000/api/system/info
Response:
{
"app_version": "1.64.1",
"borg_version": "1.4.0"
}
Borg UI application version
Borg Backup version installed on the system
Health Check
Check if the API is running and healthy.
Endpoint: GET /health
Authentication: Not required
Example Request:
curl http://localhost:5000/health
Response:
{
"status": "healthy",
"service": "borg-web-ui"
}
Prometheus Metrics
Export metrics in Prometheus text format for monitoring and alerting.
Endpoint: GET /metrics
Authentication: Not required (for Prometheus scraping)
Example Request:
curl http://localhost:5000/metrics
Response: Prometheus text format
# Prometheus metrics for borg-ui
# Generated at 2024-01-15T10:30:00Z
# HELP borg_repository_info Repository information (always 1)
# TYPE borg_repository_info gauge
borg_repository_info{repository="my-backup",path="/local/backups/my-repo",type="local",mode="full"} 1
# HELP borg_repository_size_bytes Repository total size in bytes
# TYPE borg_repository_size_bytes gauge
borg_repository_size_bytes{repository="my-backup"} 16369655808
# HELP borg_repository_archive_count Number of archives in repository
# TYPE borg_repository_archive_count gauge
borg_repository_archive_count{repository="my-backup"} 42
# HELP borg_repository_last_backup_timestamp Unix timestamp of last backup
# TYPE borg_repository_last_backup_timestamp gauge
borg_repository_last_backup_timestamp{repository="my-backup"} 1705311000
# HELP borg_backup_jobs_total Total number of backup jobs by status
# TYPE borg_backup_jobs_total gauge
borg_backup_jobs_total{repository="my-backup",status="completed"} 40
borg_backup_jobs_total{repository="my-backup",status="failed"} 2
# HELP borg_backup_last_job_success Last backup job success (1=success, 0=failure)
# TYPE borg_backup_last_job_success gauge
borg_backup_last_job_success{repository="my-backup"} 1
# HELP borg_backup_last_duration_seconds Duration of last backup job in seconds
# TYPE borg_backup_last_duration_seconds gauge
borg_backup_last_duration_seconds{repository="my-backup"} 930.50
# HELP borg_ui_repositories_total Total number of repositories
# TYPE borg_ui_repositories_total gauge
borg_ui_repositories_total 3
# HELP borg_ui_scheduled_jobs_total Total number of scheduled jobs
# TYPE borg_ui_scheduled_jobs_total gauge
borg_ui_scheduled_jobs_total 2
# HELP borg_ui_scheduled_jobs_enabled Number of enabled scheduled jobs
# TYPE borg_ui_scheduled_jobs_enabled gauge
borg_ui_scheduled_jobs_enabled 2
# HELP borg_ui_active_jobs Number of currently running jobs by type
# TYPE borg_ui_active_jobs gauge
borg_ui_active_jobs{type="backup"} 1
borg_ui_active_jobs{type="restore"} 0
borg_ui_active_jobs{type="check"} 0
borg_ui_active_jobs{type="compact"} 0
borg_ui_active_jobs{type="prune"} 0
Available Metrics
Repository Metrics
borg_repository_info - Repository information (labels: repository, path, type, mode)
borg_repository_size_bytes - Total repository size in bytes
borg_repository_archive_count - Number of archives in repository
borg_repository_last_backup_timestamp - Unix timestamp of last backup
borg_repository_last_check_timestamp - Unix timestamp of last check
borg_repository_last_compact_timestamp - Unix timestamp of last compact
Backup Job Metrics
borg_backup_jobs_total - Total backup jobs by status (labels: repository, status)
borg_backup_orphaned_jobs_total - Jobs for deleted/renamed repositories
borg_backup_last_job_success - Last backup success (1=success, 0=failure)
borg_backup_last_duration_seconds - Duration of last backup
borg_backup_last_original_size_bytes - Original size of last backup
borg_backup_last_deduplicated_size_bytes - Deduplicated size of last backup
Restore Job Metrics
borg_restore_jobs_total - Total restore jobs by status
Maintenance Job Metrics
borg_check_jobs_total - Total check jobs by status (labels: repository, status)
borg_check_last_duration_seconds - Duration of last check
borg_compact_jobs_total - Total compact jobs by status
borg_compact_last_duration_seconds - Duration of last compact
borg_prune_jobs_total - Total prune jobs by status
System Metrics
borg_ui_repositories_total - Total number of repositories
borg_ui_scheduled_jobs_total - Total number of scheduled jobs
borg_ui_scheduled_jobs_enabled - Number of enabled schedules
borg_ui_active_jobs - Currently running jobs by type (labels: type)
Prometheus Configuration
Add this to your prometheus.yml:
scrape_configs:
- job_name: 'borg-ui'
static_configs:
- targets: ['localhost:5000']
metrics_path: '/metrics'
scrape_interval: 60s
Grafana Dashboard
Use these metrics to create Grafana dashboards with panels for:
- Repository sizes over time
- Backup success/failure rates
- Backup durations
- Archive counts
- Active job monitoring
- Storage usage trends
Example Prometheus Alerts
groups:
- name: borg_backup_alerts
rules:
- alert: BackupFailed
expr: borg_backup_last_job_success == 0
for: 5m
labels:
severity: critical
annotations:
summary: "Backup failed for {{ $labels.repository }}"
description: "Last backup job failed for repository {{ $labels.repository }}"
- alert: NoRecentBackup
expr: (time() - borg_repository_last_backup_timestamp) > 86400
for: 1h
labels:
severity: warning
annotations:
summary: "No backup in 24 hours for {{ $labels.repository }}"
description: "Repository {{ $labels.repository }} has not been backed up in over 24 hours"
- alert: RepositoryGrowing
expr: rate(borg_repository_size_bytes[7d]) > 1073741824
labels:
severity: info
annotations:
summary: "Repository {{ $labels.repository }} growing rapidly"
description: "Repository size increasing by more than 1GB per day"