Skip to content

Prometheus Exporter

PegaProx now exposes its internal metrics in OpenMetrics / Prometheus exposition format at GET /api/metrics. Drop-in for Prometheus, VictoriaMetrics, Grafana Agent, OpenTelemetry collectors and similar scrapers.

Auth

The endpoint is gated by an API token (created via Settings → API Tokens). Either:

  • Authorization: Bearer <token> (recommended for Prometheus 2.26+)
  • Basic auth: any username, token as the password
  • Or, if explicitly enabled in Settings → Compliance → Allow unauthenticated /api/metrics, no auth (only for trusted scrape networks)

From 1.3 the token does not have to be an administrator's: a token whose role holds the metrics.view permission may scrape too (#818). The exporter is not tenant-scoped, so give metrics.view only to monitoring accounts that may see the whole installation.

Added in 1.3

Metric Type Labels Meaning
pegaprox_scrape_timestamp_seconds gauge - Unix time of this scrape
pegaprox_cluster_source_up gauge cluster_id, cluster, source 1 if the last read of a source behind these metrics (storage, replication, backups) answered in full
pegaprox_storage_active gauge cluster_id, cluster, node, storage 1 if the storage is active (a shared one: on at least one node)
pegaprox_storage_used_bytes gauge cluster_id, cluster, node, storage Bytes used on an active storage
pegaprox_storage_total_bytes gauge cluster_id, cluster, node, storage Size of an active storage
pegaprox_storage_inactive_nodes gauge cluster_id, cluster, node, storage Nodes that list a shared storage without having it active
pegaprox_replication_enabled gauge cluster_id, cluster, job, vmid, node, target 1 if the replication job is enabled
pegaprox_replication_failed gauge cluster_id, cluster, job, vmid, node, target 1 if the last run of the job failed
pegaprox_replication_fail_count gauge cluster_id, cluster, job, vmid, node, target Failed runs in a row
pegaprox_replication_last_sync_timestamp_seconds gauge cluster_id, cluster, job, vmid, node, target Unix time of the last successful sync
pegaprox_replication_last_sync_age_seconds gauge cluster_id, cluster, job, vmid, node, target Seconds since the last successful sync
pegaprox_guest_last_backup_timestamp_seconds gauge cluster_id, vmid, type and more Unix time of the newest backup on a linked PBS or a backup storage (0 if none)
pegaprox_guest_last_backup_age_seconds gauge cluster_id, vmid, type and more Seconds since the newest backup
pegaprox_guest_disk_read_bytes_total counter guest labels Guest bytes read from disk
pegaprox_guest_disk_write_bytes_total counter guest labels Guest bytes written to disk

Storage is read once per cluster (shared storage reported once). Replication and backup ages are read in the background, so a scrape never waits for them; a job or guest whose source could not be read completely is left out rather than reported as fine, and pegaprox_cluster_source_up shows it.

Metrics Exposed

Metric Type Labels Meaning
pegaprox_info gauge version, build Build info (always 1)
pegaprox_cluster_connected gauge cluster_id, cluster 1 if reachable
pegaprox_cluster_quorum_held gauge cluster_id, cluster Quorum held
pegaprox_cluster_nodes_total gauge cluster_id, cluster Node count
pegaprox_cluster_nodes_online gauge cluster_id, cluster Online node count
pegaprox_cluster_vms_total gauge cluster_id, cluster VM + CT count
pegaprox_cluster_vms_running gauge cluster_id, cluster Running VM + CT count
pegaprox_node_online gauge cluster_id, cluster, node Per-node reachability
pegaprox_node_cpu_percent gauge cluster_id, cluster, node CPU utilization
pegaprox_node_mem_percent gauge cluster_id, cluster, node Memory utilization
pegaprox_node_uptime_seconds gauge cluster_id, cluster, node Node uptime
pegaprox_node_apt_updates_available gauge cluster_id, cluster, node Pending APT updates
pegaprox_guest_running gauge cluster_id, cluster, node, type, vmid, name 1 if the guest is running
pegaprox_guest_cpu_percent gauge cluster_id, cluster, node, type, vmid, name Guest CPU utilization
pegaprox_guest_mem_used_bytes gauge cluster_id, cluster, node, type, vmid, name Guest memory used
pegaprox_guest_mem_total_bytes gauge cluster_id, cluster, node, type, vmid, name Guest memory total
pegaprox_guest_mem_percent gauge cluster_id, cluster, node, type, vmid, name Guest memory utilization
pegaprox_guest_disk_used_bytes gauge cluster_id, cluster, node, type, vmid, name Guest disk used
pegaprox_guest_disk_total_bytes gauge cluster_id, cluster, node, type, vmid, name Guest disk total
pegaprox_guest_disk_percent gauge cluster_id, cluster, node, type, vmid, name Guest disk utilization
pegaprox_guest_uptime_seconds gauge cluster_id, cluster, node, type, vmid, name Guest uptime
pegaprox_guest_network_receive_bytes_total counter cluster_id, cluster, node, type, vmid, name Guest bytes received
pegaprox_guest_network_transmit_bytes_total counter cluster_id, cluster, node, type, vmid, name Guest bytes transmitted
pegaprox_sessions_active gauge - Active sessions
pegaprox_users_total gauge - Total users
pegaprox_users_enabled gauge - Enabled users
pegaprox_users_logged_in gauge - Currently logged-in users
pegaprox_pbs_connected gauge pbs_id, pbs 1 if the PBS is reachable
pegaprox_esxi_connected gauge esxi_id, host 1 if the ESXi source is reachable
pegaprox_ceph_health_status gauge cluster_id, cluster 0 = OK, 1 = WARN, 2 = ERR, 3 = unknown
pegaprox_ceph_osd_up gauge cluster_id, cluster Number of Ceph OSDs currently up
pegaprox_ceph_osd_in gauge cluster_id, cluster Number of Ceph OSDs currently in

Ceph metrics

The Prometheus exporter now emits Ceph health/OSD metrics, sourced from the cluster Ceph health summary.

Metric Type Meaning
pegaprox_ceph_health_status gauge 0 = OK, 1 = WARN, 2 = ERR, 3 = unknown
pegaprox_ceph_osd_up gauge Number of Ceph OSDs currently up
pegaprox_ceph_osd_in gauge Number of Ceph OSDs currently in

Prometheus Scrape Config

scrape_configs:
  - job_name: pegaprox
    metrics_path: /api/metrics
    scheme: https
    bearer_token: 'pegaprox_api_token_here'
    tls_config:
      insecure_skip_verify: false
    static_configs:
      - targets: ['pegaprox.example.com:5000']

Grafana

A reference Grafana dashboard JSON is in the repo at misc/grafana/pegaprox-overview.json. Imports cleanly into Grafana 10+.