Repository navigation
Releases: jorgedlcruz/veeam-node-exporter
Releases · jorgedlcruz/veeam-node-exporter
Release list
v0.2.1
Veeam ONE SQL Exporter v0.2.0 — Release Notes
Date: 2025-10-07
Highlights
- Changed the appsettings.json SQL connection string to 127.0.0.1 so it works out of the box when running the .exe on the same Veeam ONE Server, in case it has SQL installed, and Windows Credentials enabled
v0.2.0
Veeam ONE SQL Exporter v0.2.0 — Release Notes
Date: 2025-10-05
Highlights
- Added broad coverage of Veeam counters across servers, repositories, proxies, CDP, VBM365, object storage, and Veeam ONE internals.
- Unified labels: every series has
hostandrole. Optionaliface/diskappear where applicable. - Correct unit scaling: values are divided by
monitor.PerfCounterInfo.dividerwhen nonzero (fixes % and rate magnitudes). - Configurable metric name prefix via
MetricPrefixinappsettings.json(defaultveeam_server). - Exporter health metrics:
<prefix>_up,<prefix>_last_scrape_success_seconds,<prefix>_last_scrape_error_info. - Background polling cadence via
PollSeconds(default 60s).
Important changes (breaking)
- Standardized labels. Old series without
roleor with inconsistent instance labels are deprecated. - Network/disk families split by direction and totals (e.g.,
net_bytes_sent_per_sec,net_bytes_received_per_sec,net_bytes_total_per_sec). - Value scaling now honors
PerfCounterInfo.divider. Dashboards/alerts that assumed raw values may need updates. - Metrics include explicit sample timestamps from the DB. If you prefer Prometheus scrape time, remove timestamps in the writer.
Data resolution & rollups
Veeam ONE stores metrics at multiple intervals. The exporter prefers the finest available per counter:
rt_interval(often 60s)level2_interval(often 300s)level3_interval(e.g., 7200s)level4_interval(e.g., 86400s)
Some environments do not persist 1-minute rows; in that case you will naturally see 5-minute steps. This is expected behavior, not an exporter issue.
New and updated metric families
All metric names are prefixed by your configured MetricPrefix (examples assume veeam_server).
Core host utilization
veeam_server_cpu_usage_percent{host,role}veeam_server_memory_available_bytes{host,role}veeam_server_memory_used_bytes{host,role}veeam_server_memory_usage_percent{host,role}(when available)
Disk IO
veeam_server_disk_bytes_per_sec{host,role,disk}veeam_server_disk_read_bytes_per_sec{host,role,disk}veeam_server_disk_write_bytes_per_sec{host,role,disk}
Network IO
veeam_server_net_bytes_sent_per_sec{host,role,iface}veeam_server_net_bytes_received_per_sec{host,role,iface}veeam_server_net_bytes_total_per_sec{host,role,iface}
Repository capacity and slots
veeam_server_repository_used_bytes{host,role}veeam_server_repository_capacity_bytes{host,role}veeam_server_repository_free_bytes{host,role}veeam_server_repository_file_backups_bytes{host,role}veeam_server_repository_image_backups_bytes{host,role}veeam_server_repository_app_backups_bytes{host,role}veeam_server_repository_slots_used{host,role}veeam_server_repository_slots_max{host,role}
Proxy slots and CDP cache
veeam_server_proxy_slots_used{host,role}veeam_server_proxy_slots_max{host,role}veeam_server_cdp_proxy_cache_used_bytes{host,role}veeam_server_cdp_proxy_cache_capacity_bytes{host,role}veeam_server_cdp_proxy_cache_used_percent{host,role}
CDP service level
veeam_server_cdp_sla_percent{host,role}veeam_server_cdp_max_delay_ms{host,role}
VBM365 server and proxy
veeam_server_cpu_usage_percent{host,role}veeam_server_memory_available_bytes{host,role}veeam_server_memory_used_bytes{host,role}veeam_server_memory_usage_percent{host,role}(when available)veeam_server_disk_read_bytes_per_sec{host,role,disk}veeam_server_disk_write_bytes_per_sec{host,role,disk}veeam_server_disk_bytes_per_sec{host,role,disk}veeam_server_net_bytes_total_per_sec{host,role,iface}veeam_server_net_bytes_received_per_sec{host,role,iface}veeam_server_net_bytes_sent_per_sec{host,role,iface}
VBM365 repository and object storage
veeam_server_repository_used_bytes{host,role}veeam_server_repository_free_bytes{host,role}veeam_server_object_storage_used_bytes{host,role}veeam_server_object_storage_free_bytes{host,role}
Archive and external repositories
veeam_server_archiverep_used_bytes{host,role}veeam_server_archiverep_capacity_bytes{host,role}veeam_server_externalrep_used_bytes{host,role}
Veeam ONE server internals
veeam_server_veeam_one_server_cpu_usage_percent{host,role}veeam_server_veeam_one_server_memory_usage_percent{host,role}veeam_server_veeam_one_server_memory_pressure_percent{host,role}
Labels
hostis resolved frommonitor.Entity.host_name(fallback:monitor.Entity.name).roleis derived from thestring_idfamily (serv,em,rep,repository,prx,wac,tapeprx,archiverep,externalrep,vbm_srv,vbm_prx,vbm_rep,vbm_objrep,veeam_srv).- Optional
ifacefor network,diskfor disk.
Configuration
appsettings.json
{
"Exporter": {
"ListenUrl": "http://127.0.0.1:9108/",
"PollSeconds": 60,
"LookbackMinutes": 65,
"SqlConnectionString": "Server=SQLHOST;Database=VeeamOne;Trusted_Connection=True;",
"MetricPrefix": "veeam_server"
}
}Prometheus
scrape_configs:
- job_name: 'veeam-one-sql-exporter'
static_configs: [{ targets: ['exporter-host:9108'] }]
scrape_interval: 60s
honor_labels: trueEndpoints
GET /metrics— last successful scrape in Prometheus text format.GET /debug— exporter status fields (useful for quick checks).
SQL mapping
The exporter uses a metric_map CTE to map PerfCounterInfo.string_id → metric keys and instance labels. Values are scaled by PerfCounterInfo.divider. For each (entity, instance, counter) the newest sample is chosen, preferring rt_interval over rollups.
Upgrade notes
- Dashboards that assumed raw values or different labels should be updated (see Important changes).
- Re-evaluate alert thresholds for repository capacity and CDP delay after scaling change.
- If you used legacy names without
role, update queries to includerole.
Compatibility
- Veeam ONE DB with
monitor.PerfSample,monitor.PerfInstance,monitor.PerfCounterInfo, andmonitor.Entity(v12+ typical). - SQL Server with
SYSUTCDATETIME().
Security & operations
- On Windows, the HTTP listener requires URL ACL:
netsh http add urlacl url=http://127.0.0.1:9108/ user=Everyone - Consider running the exporter as a service and binding to localhost unless remote scraping is required.
Troubleshooting
/debugshould showLAST_SUCCESS_UTCadvancing everyPollSeconds.- If your graphs step every 5 minutes, your DB likely persists 300-second rollups for that counter; the exporter will use the best available interval automatically.
Sample series
veeam_server_cpu_usage_percent{host="vbr01",role="serv"} 12.5 1728130200000
veeam_server_net_bytes_sent_per_sec{host="vbr01",role="serv",iface="Intel(R) I219-LM"} 84532 1728130200000
veeam_server_repository_capacity_bytes{host="repo01",role="repository"} 5497558138880 1728130200000
veeam_server_cdp_max_delay_ms{host="vbr01",role="serv"} 1200 1728130200000
v0.1.2
Unofficial Veeam ONE Node Exporter that exposes Veeam Backup Servers Performance counters