Grafana Dashboards
nsr_exporter ships six domain-split Grafana dashboards. They are auto-provisioned
by the compose demo stack and can be imported manually into any Grafana instance that
has a Prometheus datasource pointed at the exporter.
Dashboard overview
| Dashboard | UID | Focus |
|---|---|---|
| NetWorker — Overview | nsr-overview |
System health, job status summary, server statistics, infrastructure snapshot |
| NetWorker — Capacity | nsr-capacity |
Data Domain capacity/dedup, volume capacity and writes |
| NetWorker — Backups & Sizing | nsr-backups |
FETB sizing, ingest throughput, retention, duration |
| NetWorker — Live Activity | nsr-activity |
In-flight sessions, live throughput, client inventory, alert detail |
| NetWorker — Devices & Media | nsr-devices |
Device inventory, storage-node health, pool inventory, volume status |
| NetWorker — Protection & Compliance | nsr-protection |
Policy status, pool/group inventory, VMware integration |
Each dashboard has a system template variable populated from
label_values(nsr_up, system) so you can filter to a single NetWorker system or view
all systems at once.
nsr-overview — System Health
Panels:
- Systems Up —
nsr_upper system (background color: green=UP, red=DOWN) - Critical Alerts —
nsr_alerts_active{priority="Critical"}per system - Warning Alerts —
nsr_alerts_active{priority="Warning"}per system - Active Sessions —
sum(nsr_active_sessions)per system - Jobs by Completion Status —
nsr_job_statusgrouped bycompletion_status(bargauge) - Jobs by Type —
nsr_job_statusgrouped byjob_type(bargauge) - Server statistics —
nsr_server_saves_total,nsr_server_bad_saves_total,nsr_server_save_size_bytes,nsr_server_recovers_total - Current Saves / Recovers —
nsr_server_current_saves,nsr_server_current_recovers(live concurrency gauges) - Server Max Saves / Recovers —
nsr_server_max_saves,nsr_server_max_recovers(configured limits) - Offline Devices —
count(nsr_device_info{status="offline"})(red ≥1) - Disabled Policies —
count(nsr_policy_enabled == 0)(yellow ≥1)
nsr-capacity — Storage Capacity
Panels:
- Data Domain Used % — gauge with 70%/85% thresholds per DD
- Data Domain Total Size —
nsr_datadomain_capacity_total_bytes - Data Domain Free Space —
nsr_datadomain_capacity_available_bytes(red when near zero) - Logical vs Physical Used — deduplication ratio visualisation (
nsr_datadomain_logical_capacity_used_bytesvsnsr_datadomain_capacity_used_bytes) - Data Domain Capacity Over Time — trend timeseries
- Volume Capacity by Pool —
nsr_volume_capacity_bytes(bargauge;typelabel = media type) - Volume Written Bytes —
nsr_volume_written_bytes(bargauge;typelabel = media type) - Volume Detail Table — capacity, written, recycles per volume;
typecolumn renamed to "Media Type"
nsr-backups — Backups & Sizing
Panels:
- Largest Full Backup per Client/Saveset (FETB) —
nsr_backup_source_size_bytes(bargauge, bytes) - Largest Incremental Change —
nsr_backup_change_size_bytes(bargauge, bytes) - FETB Trend Over Time — full vs incremental size trend timeseries
- Ingest Throughput by Client —
avg(nsr_job_bytes_per_second)in Bps (bargauge) - Backup Duration by Client —
avg(nsr_job_duration_seconds)in seconds with 1h/4h thresholds - Retention Period by Pool —
avg(nsr_backup_retention_seconds)in seconds - Throughput Trend Over Time — timeseries in Bps
Do not use rate() on per-second gauges
nsr_job_bytes_per_second is already an instantaneous per-second gauge — it is
not a counter. Use sum() or avg() in PromQL, never rate().
nsr-activity — Live Activity
Panels:
- Total Active Sessions —
sum(nsr_active_sessions)per system (renamed fromnsr_sessions_total) - Sessions by Type —
nsr_active_sessionsbysession_typebargauge (values: Saving/Recovering/Browsing) - Total Bytes In-Flight —
sum(nsr_session_bytes)across active sessions - Active Session Count Over Time — timeseries by session_type and system
- Bytes In-Flight Over Time — timeseries by session_type and system
- Live Transfer Throughput —
sum(nsr_session_transfer_bytes_per_second)by session_type and system (Bps timeseries; aggregate with sum/avg, never rate()) - Client Parallelism —
nsr_client_parallelismper client (bargauge) - Client Inventory Table —
nsr_client_infowith NDMP, scheduled, backup-command columns - Alerts by Priority —
nsr_alerts_activebargauge grouped bypriority(replaces formerseverity) - Alert Trend Over Time — timeseries by priority and system
nsr-devices — Devices & Media
Added in the observability-expansion milestone. Covers device, storage-node, pool, and volume-status metrics.
Panels:
- Devices by Status —
sum by (status) (nsr_device_info)bargauge (status label) - Devices by Media Type —
sum by (media_type) (nsr_device_info)bargauge (media_typelabel; replaces formertype) - Offline Device Count —
count(nsr_device_info{status="offline"})stat (red ≥1) - Device Inventory Table —
nsr_device_info; columns: device_name, media_type, media_family, status, serial (capacity column removed;nsr_device_capacity_bytesmetric removed) - Storage Nodes by Enabled State —
sum by (enabled) (nsr_storagenode_info)bargauge (enabledlabel replaces formerstatus) - Devices per Storage Node —
nsr_storagenode_device_countbargauge (node label) - Pools by Type —
sum by (pool_type) (nsr_pool_info)bargauge (info gauge =1; replaces removednsr_pool_capacity_bytes/nsr_pool_used_bytes/nsr_pool_volume_count) - Pool Inventory Table —
nsr_pool_info; columns: pool, pool_type, enabled - Volumes by Status —
sum by (status) (nsr_volume_status)bargauge (status holds values like Recyclable/WORM) - Volumes by Pool and Status —
sum by (pool, status) (nsr_volume_status)bargauge
nsr-protection — Protection & Compliance
Added in the observability-expansion milestone. Covers policy, group, and VMware metrics.
Panels:
- Enabled Policies —
count(nsr_policy_enabled == 1)stat (policy label) - Disabled Policies —
count(nsr_policy_enabled == 0)stat (yellow ≥1) - Pools by Type —
nsr_pool_infotable (pool, pool_type, enabled columns; replaces removed pool capacity panels) - Policy Enabled/Disabled Table —
nsr_policy_enabled; rendered as ENABLED/DISABLED with colour mapping (client count column removed;nsr_policy_client_countmetric removed) - Protection Groups by Work Item Type —
nsr_group_infotable (group, work_item_type columns; replaces removednsr_group_client_countbargauge) - VMware vCenter Inventory —
nsr_vmware_infotable; columns: vcenter, cloud_deployment (versionandstatuslabels removed;cloud_deploymentlabel added)
Removed metrics
The following metrics were removed and all references have been cleaned from these dashboards:
nsr_client_last_backup_timestamp_seconds, nsr_device_capacity_bytes,
nsr_pool_capacity_bytes, nsr_pool_used_bytes, nsr_pool_volume_count,
nsr_queue_depth, nsr_queue_wait_seconds,
nsr_policy_client_count, nsr_group_client_count.
Renamed metrics
nsr_alerts_total → nsr_alerts_active (label severity → priority).
nsr_sessions_total → nsr_active_sessions (session_type values: Saving/Recovering/Browsing).
Dashboard files
Dashboards live under grafana/dashboards/:
grafana/dashboards/
nsr-overview.json
nsr-capacity.json
nsr-backups.json
nsr-activity.json
nsr-devices.json
nsr-protection.json
The provisioning provider (grafana/provisioning/dashboards/dashboards.yml) loads
/var/lib/grafana/dashboards with foldersFromFilesStructure: true — subdirectories
become Grafana folders automatically.
Manual import
To import into an existing Grafana instance:
- Open Grafana → Dashboards → Import.
- Upload the JSON file from
grafana/dashboards/. - Select the Prometheus datasource that scrapes
nsr_exporter. - Click Import.
Alternatively load all dashboards with grafana-cli:
for f in grafana/dashboards/*.json; do
grafana-cli dashboards import "$f"
done
Node Exporter Full (Grafana 1860)
This repo bundles the community Node Exporter Full
dashboard (node-exporter-full.json, auto-provisioned). It visualizes host OS metrics
(CPU, memory, disk, network) exposed by prom/node-exporter —
not this exporter's own metrics.
node_exporter is not part of this demo stack: it belongs on the hosts you actually want to
monitor, not bolted onto the exporter's compose. To use this dashboard, run prom/node-exporter
on those hosts and add a node-exporter scrape job to your Prometheus; the dashboard then
visualizes them.