page

news

Network-ready SNMP-enabled intelligent PDU visualized in Grafana via Prometheus exporter pipeline

TL;DR
Rack-level power monitoring in Grafana is a four-layer pipeline: a network-ready intelligent PDU that exposes SNMP OIDs, an SNMP-to-Prometheus exporter that translates those OIDs into Prometheus metrics, a Prometheus server that scrapes and stores the time-series data, and Grafana that visualizes the metrics with dashboards and alerts. The pipeline works for any PDU family that publishes standard RFC-defined OIDs, and it scales from a single rack to a multi-megawatt data hall without architectural changes. This guide walks through each layer with concrete configuration examples, the OID-to-metric translation pattern, and the alert thresholds that catch real failures before a breaker trips. For data center operators already running Prometheus for server and switch metrics, adding rack PDU data is a matter of hours, not weeks.

Why Rack-Level PDU Visibility Matters Before You Pick a Tool

Most data center operators know their total facility power from the utility meter or the UPS feed. What they often do not know is the per-rack, per-phase, per-outlet load profile until a breaker trips or a cooling imbalance surfaces as a thermal alarm. The gap between “the data hall draws X megawatts” and “rack A07 is at 78% of breaker capacity on phase L2″ is where operational blind spots live, and it is exactly the gap that network-ready intelligent PDU monitoring closes.

Three reasons rack-level visibility is non-negotiable in any facility above 200 kW:

  • Load balancing visibility — Three-phase imbalance at the rack level is the leading cause of neutral conductor overheating and breaker nuisance trips. Operators who balance by intuition rather than measurement typically discover the imbalance after a failure rather than before.
  • Capacity planning accuracy — For capacity planning accuracy, operators should reference the Uptime Institute’s Tier Classification framework when setting utilization thresholds — Tier III and Tier IV facilities typically plan at 60-70% nominal utilization rather than 80%, with N+1 redundancy requiring per-rack measurement rather than facility-level estimates. Power quality considerations including THD (total harmonic distortion) and PF (power factor) are tracked in the IEEE 519 harmonic control standard and should be visible in dashboards for facilities with significant non-linear loads (large UPS banks, switch-mode power supplies).
  • Tenant billing and chargeback — Colocation operators billing by measured kWh need outlet-level or at minimum PDU-level metered data, not estimated allocations.

For operators sourcing the physical hardware, the SNMP-enabled PDU line is the relevant family to evaluate. For facility managers comparing architecture choices across vendors and integration patterns, the open-protocol PDU solution framing is the strategic reference.

The tool selection question — SNMP vs Modbus vs vendor-proprietary APIs — matters less than the underlying measurement quality. SNMP wins on ecosystem maturity: every monitoring stack, every observability vendor, and most network management systems have shipped SNMP support for two decades. That ecosystem inertia is the reason the SNMP-to-Prometheus pipeline has become the default for any data center operator running open-source observability.

The SNMP-to-Prometheus-to-Grafana Stack at a Glance

Four layers, each with a defined role and a defined failure mode. Understanding the layers before you build prevents the most expensive mistake: optimizing the wrong layer.

Layer 1 — The PDU itself. A network-ready intelligent PDU publishes a Management Information Base (MIB) that maps standard SNMP OIDs to measured values. The OIDs cover input voltage, current, power factor, apparent power, real power, energy, and outlet-level state for switched PDUs. Quality varies across vendors; the RFC 1628 UPS MIB standard and the RFC 6933 Power Distribution MIB standard define the common OID namespace. Operators sourcing a PDU for SNMP integration should request the vendor MIB file and confirm it implements at minimum the standard RFC 1628 / RFC 6933 OIDs, not just vendor-proprietary extensions.

The security layer under SNMP deserves its own note: SNMPv3 with user-based security model (USM) and view-based access control model (VACM) is defined in RFC 3414 and RFC 3415, and RFC 3418 standardizes the SNMPv3 MIB structure. Production deployments handling metered billing data should use SNMPv3 with authPriv (HMAC-SHA authentication plus AES/3DES privacy), not SNMPv2c with shared community strings.

Layer 2 — The SNMP-to-Prometheus exporter. Prometheus does not speak SNMP directly; it scrapes HTTP endpoints that return metrics in the Prometheus exposition format. The translation from OID pull to HTTP push is performed by an SNMP exporter, most commonly the Prometheus SNMP exporter maintained by the Prometheus project. The exporter is configured with a YAML file that names each metric, maps it to an OID, and applies the right type (gauge, counter) for Prometheus’s data model.

Layer 3 — Prometheus. Prometheus is the time-series database and pull-based scraper. It scrapes the SNMP exporter at a defined interval, stores the metrics, evaluates recording rules for derived calculations, and evaluates alert rules against thresholds. For data center deployments, the Prometheus project documentation covers scrape configuration and the federation model for multi-site deployments.

Layer 4 — Grafana. Grafana is the visualization and dashboarding layer. It connects to Prometheus as a data source, queries the metrics with PromQL, and renders the dashboards operators use during incident response. The Grafana Prometheus data source documentation covers query patterns and dashboard provisioning.

The architectural decision to make before any configuration: where does the SNMP exporter run? Three patterns are common, each with trade-offs:

  • Exporter on every Prometheus host — simple, scales poorly past 200 devices
  • Exporter as a centralized service with one instance per site — clean separation, network-egress bottleneck risk
  • Exporter co-located with each PDU via a low-footprint agent pattern — best for very large fleets, complex deployment

For most facilities with 50 to 500 PDUs, the centralized exporter pattern is the right starting point.

Step 1: Verify SNMP Reachability on Your Network-Ready Intelligent PDU

Before you write a single line of exporter configuration, confirm the PDU is reachable and responsive on SNMP. This step catches the most common integration failure: a misconfigured VLAN, ACL, or community string that prevents the exporter from ever pulling OIDs.

The verification commands below assume the PDU is on 192.168.1.50 with SNMPv2c community monitoring. Replace with the values from your environment.

Ping and ARP verification:

ping -c 4 192.168.1.50
arp -n | grep 192.168.1.50

SNMP GET on a standard OID (sysDescr from RFC 1213):

snmpget -v 2c -c monitoring 192.168.1.50 1.3.6.1.2.1.1.1.0

A successful response confirms SNMP is reachable. A timeout confirms network or community-string misconfiguration; resolve at this layer before moving on.

SNMP WALK on the PDU MIB to confirm the PDU-specific OIDs respond:

snmpwalk -v 2c -c monitoring 192.168.1.50 1.3.6.1.4.1.XXX

Where 1.3.6.1.4.1.XXX is the vendor enterprise OID from the MIB file. For a PDU implementing the RFC 1628 UPS MIB, the relevant OID tree is 1.3.6.1.2.1.33 (the mgmt.mib-2.ups subtree). Walking that tree and seeing meaningful values (voltage, current, battery status) confirms the PDU is healthy and properly configured.

For PDUs implementing the Power Distribution MIB at RFC 6933, the relevant subtree is 1.3.6.1.4.1.232.165 and related OIDs depending on the vendor’s enterprise allocation. For energy management at the facility level (where metered PDU data feeds into ISO 50001 or DCIM reporting), the ISO 50001 energy management standard provides the audit framework that the rack-level measurements roll up into.

The Newsunn intelligent PDU product page documents the MIB file and OID structure for that specific platform; operators should download the MIB and verify the enterprise OID before configuring the exporter.

Step 2: Pick the Right SNMP Exporter Pattern for Your Environment

The Prometheus SNMP exporter, originally developed by DigitalOcean’s monitoring team and now maintained under the Prometheus GitHub organization, is the right tool for 95% of deployments. The remaining 5% use vendor-specific exporters for niche features like outlet switching or environmental sensor data not covered by the standard MIBs.

The exporter requires:

  • A snmp.yml configuration file that maps OIDs to Prometheus metric names
  • Network reachability to the SNMP target on UDP port 161
  • The vendor MIB file loaded into the exporter’s MIB module (for OID-to-name translation)

For installing and validating the MIB libraries referenced by the exporter (RFC-standard MIBs from IETF/IEEE and vendor-private MIBs), the Prometheus SNMP exporter generator documentation walks through snmp-mibs-downloader configuration and mibs directory layout. The MIB-to-Prometheus translation layer emits metrics in the OpenMetrics text exposition format, which Prometheus consumes natively and which downstream tools (Grafana Mimir, VictoriaMetrics, Datadog) also accept.

The exporter pattern with snmp.yml:

modules:
  newsunn_pdu:
    walk:
      - 1.3.6.1.4.1.XXX  # Vendor enterprise OID
    metrics:
      - name: pdu_input_voltage
        oid: 1.3.6.1.4.1.XXX.1.1.1.0
        type: gauge
      - name: pdu_input_current
        oid: 1.3.6.1.4.1.XXX.1.1.2.0
        type: gauge
      - name: pdu_input_power_watts
        oid: 1.3.6.1.4.1.XXX.1.1.3.0
        type: gauge
      - name: pdu_energy_kwh_total
        oid: 1.3.6.1.4.1.XXX.1.1.4.0
        type: counter

The walk directives tell the exporter which OID subtrees to walk at startup to discover the structure; the metrics block tells it how to expose each metric to Prometheus. OIDs marked counter are monotonically increasing (energy kWh total); gauge metrics are point-in-time readings (voltage, current, instantaneous power).

For PDUs with per-outlet metering, the configuration extends to walk the outlet subtree (1.3.6.1.4.1.XXX.2.x typically) and define outlet-level metrics. The exporter scales linearly with the number of OIDs; a 24-outlet metered PDU with voltage, current, power, and energy per outlet yields approximately 96 metrics per PDU.

Run the exporter with:

snmp_exporter --config.file=snmp.yml --web.listen-address=:9116

The exporter now serves metrics at http://:9116/snmp?module=newsunn_pdu&target=192.168.1.50. Each target parameter is the SNMP target the exporter will poll when Prometheus scrapes that endpoint.

Step 3: Build the Prometheus Scrape Job and Metric Labels

The Prometheus scrape configuration connects the exporter to the Prometheus storage backend. The minimum configuration:

scrape_configs:
  - job_name: snmp_pdu
    metrics_path: /snmp
    params:
      module: [newsunn_pdu]
    static_configs:
      - targets:
        - 192.168.1.50
        - 192.168.1.51
        - 192.168.1.52
        labels:
          site: dc-east
          rack_row: A
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: snmp-exporter-1.dc-east:9116

Three label decisions matter more than the syntax:

  • site — Multi-site facilities need site labels for federation and dashboard filtering. Add it as a static label per scrape job.
  • rack_row — Physical location labels make dashboards readable. Add based on PDU physical location.
  • instance — The instance label is the PDU IP by default; relabel to a human-readable name like pdu-a07-01 for dashboard display.

For very large fleets, the Prometheus file_sd_configs discovery pattern pulls target lists from a file or external system (Consul, DNS, etc.) and avoids the maintenance burden of static configs. The trade-off is operational complexity; the static config is fine up to 500-1000 PDUs.

Scrape interval matters for rack power data: 15-second intervals catch transient overload events but generate high cardinality; 30-second intervals are the standard compromise. Setting scrape_interval: 30s on the SNMP PDU job and scrape_interval: 15s on higher-priority jobs is a reasonable starting configuration.

Step 4: Stand Up Grafana and Connect Your Prometheus Data Source

Grafana connects to Prometheus as a data source via the standard Prometheus data source plugin. Configuration is straightforward:

  • In Grafana, navigate to Connections → Data sources → Add data source
  • Select Prometheus
  • Set the URL to your Prometheus server (e.g., http://prometheus.dc-east:9090)
  • Configure authentication if your Prometheus requires basic auth or bearer tokens
  • Set scrape interval to match your Prometheus scrape configuration (30s for the PDU job)
  • Save and test

For production deployments, the Grafana data source provisioning pattern stores data source configuration as YAML and version-controls it alongside the dashboards. This is the operational discipline that prevents dashboard configuration drift across multi-site deployments.

The Prometheus data source supports two query languages:

  • PromQL (default) — the native Prometheus query language
  • Grafana expression — a thin wrapper used by newer Grafana versions for typed expressions

For power monitoring dashboards, PromQL is the right choice; the documentation at the Prometheus query basics page covers the syntax most operators need.

Step 5: Build the Panels That Operators Actually Use

Dashboards for rack PDU monitoring should answer four questions, in this order:

  • What is the total facility load right now? (top-of-dashboard summary panel)
  • Which racks are at highest utilization? (sorted table panel)
  • What is the phase balance per rack? (heatmap or stacked bar panel)
  • What does the load profile look like over time? (time series panel)

The first panel is a single PromQL query:

sum(pdu_input_power_watts{site="dc-east"}) / 1000

Returns total kilowatts across the labeled site. Add a threshold color rule at 80% of facility capacity for instant visual alerting.

The second panel — highest utilization racks — uses the topk aggregation:

topk(10, pdu_input_power_watts / pdu_breaker_capacity_watts)

Returns the 10 racks with the highest utilization ratio. For this query to work, the pdu_breaker_capacity_watts metric needs to be defined either via the exporter (if the PDU reports it as an OID) or via recording rules.

The third panel — phase balance — needs three-phase per-rack data. The query compares each phase’s contribution to total rack power:

sum by (rack) (pdu_phase_power_watts{phase="L1"}) /
sum by (rack) (pdu_phase_power_watts)

Values close to 0.33 are balanced; values significantly above or below 0.33 indicate phase imbalance.

The fourth panel — load profile over time — uses a standard sum by (time) time series:

sum(pdu_input_power_watts{site="dc-east"})

A 24-hour time series shows the daily load curve; a 30-day view shows the monthly growth pattern.

A practical dashboard layout includes all four panels plus a row of single-stat panels for at-a-glance site metrics: total kW, peak kW today, average phase imbalance, and number of PDUs reporting. Operators using the dashboard during incidents do not want to scroll; the top row should answer 80% of the questions in less than three seconds of visual scan.

Step 6: Add Alerts, Recording Rules, and Capacity Forecasting

Static dashboards are useful for human inspection; alerts turn the same metrics into notifications that wake operators when thresholds are crossed.

The Prometheus alerting model is two-layer:

  • Recording rules pre-compute expensive queries on a schedule (every 30 seconds, say) and store the result as a new time series
  • Alert rules evaluate conditions against metrics (including recording-rule outputs) and fire when thresholds are crossed

A practical recording rule for PDU utilization:

groups:
  - name: pdu_recording
    rules:
      - record: pdu:utilization_ratio
        expr: pdu_input_power_watts / pdu_breaker_capacity_watts
      - record: pdu:phase_imbalance_ratio
        expr: |
          (max by (rack) (pdu_phase_power_watts) -
           min by (rack) (pdu_phase_power_watts)) /
          sum by (rack) (pdu_phase_power_watts)

And the corresponding alert rules:

groups:
  - name: pdu_alerts
    rules:
      - alert: PDUHighUtilization
        expr: pdu:utilization_ratio > 0.85
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "PDU {{ $labels.instance }} at {{ $value | humanizePercentage }} capacity"
      - alert: PDUPhaseImbalance
        expr: pdu:phase_imbalance_ratio > 0.30
        for: 10m
        labels:
          severity: warning
      - alert: PDUCommunicationLost
        expr: absent(pdu_input_power_watts{instance="{{ $labels.instance }}"})
        for: 3m
        labels:
          severity: critical

The PDUCommunicationLost alert is the one operators most often forget: it fires when Prometheus stops receiving metrics from a PDU, which is the early indicator of a network failure or a powered-off PDU.

Grafana alerting (configured via Grafana Alerting) can layer on top of Prometheus alerts to route notifications to PagerDuty, Slack, or email based on label matchers.

For capacity forecasting, a simple linear-regression query predicts when a PDU will reach breaker capacity based on the 30-day trend:

predict_linear(pdu_input_power_watts[30d], 30*24*3600) > pdu_breaker_capacity_watts

This fires when the predicted value 30 days from now exceeds capacity — the early warning that lets facility managers add rack capacity before the breaker trips.

Step 7: Operationalize — Runbooks, Retention, and What to Monitor About the Monitor

A monitoring stack that works on day one and breaks on day ninety is the rule, not the exception. Three operational disciplines separate sustainable deployments from firefighting cycles.

Retention policy. Prometheus local storage retention is configured via --storage.tsdb.retention.time=30d for the default 30-day window. Long-term storage uses Thanos, Cortex, or Grafana Mimir for multi-month retention; the Thanos documentation covers the storage backend options, and the Grafana Mimir documentation covers the horizontal-scaling alternative for facilities with multi-petabyte time-series needs. Rack PDU metrics are typically retained at full resolution for 30 days, downsampled to 5-minute resolution for one year, and retained at 1-hour resolution indefinitely for compliance reporting. The Prometheus project’s own storage retention guidance documents the local WAL and TSDB mechanics that drive these retention decisions.

Runbook links in alerts. Every alert rule should include an annotations.runbook_url pointing to the operator-facing documentation for that specific alert. A PDUHighUtilization alert without a runbook generates noise; one with a runbook generates action.

Monitor the monitor. A separate small Prometheus instance (or a federation job) should scrape the main Prometheus and alert when:

  • The SNMP exporter is unreachable
  • Prometheus local storage is more than 80% full
  • A scrape job is reporting up == 0 for any target
  • Recording rule evaluation is failing

The pattern is documented in the Prometheus operating guides and is standard practice for any non-trivial Prometheus deployment.

Closing: A Reference Architecture You Can Hand to Your NOC

For a typical data center operator building rack-level PDU visibility on an existing Prometheus stack, the reference architecture is:

  • Hardware layer: SNMP-enabled intelligent PDUs at every rack, configured with SNMPv3 (preferred for security) or SNMPv2c with ACL-restricted community strings
  • Translation layer: Centralized SNMP exporter per site, running as a systemd service or container, with version-controlled snmp.yml configuration
  • Storage layer: Prometheus with 30-day local retention, federated to a central Prometheus for multi-site aggregation, backed by Thanos or Mimir for retention beyond 30 days
  • Visualization layer: Grafana with provisioned dashboards, alert rules, and notification channels routed through PagerDuty or OpsGenie
  • Operational layer: Runbooks for every alert, capacity forecasting queries running as recording rules, and a separate watchdog stack monitoring the monitor

The deployment timeline for a single-site rollout with 100 PDUs is typically one engineer-week for initial integration plus two engineer-weeks for dashboard and alert tuning. For multi-site deployments, factor in additional time for federation configuration and per-site dashboard provisioning.

For data center operators evaluating the physical PDU hardware, the Newsunn intelligent PDU product family provides SNMP-enabled hardware with documented MIB files; the OEM PDU integration page covers customization options for facility managers integrating PDUs into existing DCIM or BMS platforms; the open-protocol PDU solution framework provides the architectural reference for multi-vendor deployments.

For technical specifications and MIB files, or to discuss integration with an existing Prometheus stack, contact the Newsunn engineering team through the Newsunn homepage.

Frequently Asked Questions

 

Q1: What is the minimum viable Prometheus stack for rack PDU monitoring?

A single SNMP exporter instance, a single Prometheus server, and Grafana. The minimum scrape interval is 30 seconds; the minimum retention is 30 days for full-resolution data. This configuration handles up to approximately 500 PDUs per Prometheus instance before the cardinality and storage costs require federation or sharding.

Q2: SNMPv2c vs SNMPv3 — which should I use?

SNMPv3 with authentication and privacy (authPriv) is the secure default for any production deployment. SNMPv2c with network ACL restrictions is acceptable for air-gapped or strictly controlled networks. SNMPv1 is obsolete and should not be used. Most modern PDUs including the Newsunn SNMP-enabled intelligent PDU line support SNMPv3 natively.

Q3: How do I handle the MIB file loading in the SNMP exporter?

The exporter accepts MIB files via the mibs directive in snmp.yml. Convert the vendor MIB to the exporter format using snmp-mibs-downloader or by walking the OIDs directly and naming them in the YAML. For PDUs implementing the standard RFC 1628 UPS MIB, no vendor-specific MIB is needed for the core metrics; vendor extensions add outlet-level and environmental data.

Q4: What metrics matter most for capacity planning?

Total kW per rack, peak kW per rack over a 24-hour window, phase imbalance ratio per rack, and breaker utilization ratio (current load / breaker rating). These four metrics support both day-to-day operations and quarterly capacity planning.

Q5: Can I use this stack with a vendor DCIM platform instead of Grafana?

Yes — the SNMP exporter feeds Prometheus, and Prometheus’s remote write protocol feeds most vendor observability platforms including Datadog, New Relic, and the major DCIM suites. The Grafana dashboard is one consumer of the metrics; vendor platforms consume the same metrics via remote write.

Q6: How do I monitor PDUs that do not support SNMP?

PDUs that support only Modbus TCP require a different translation layer, typically a Modbus-to-Prometheus bridge or a vendor gateway. The architectural pattern is the same; the exporter implementation differs. For facilities with mixed-protocol hardware, the open-protocol PDU framework is the strategic reference.

Q7: What alert thresholds should I use?

Standard thresholds: breaker utilization warning at 80%, critical at 90%; phase imbalance warning at 30%, critical at 40%; communication lost critical after 3 minutes of missing metrics; voltage out-of-spec warning at ±10% of nominal. Tune thresholds based on your actual load profile; conservative starting points are better than aggressive alerts that operators learn to ignore.

Q8: How long does a typical deployment take?

A single-site rollout with 50 to 100 PDUs takes one engineer-week for initial SNMP integration plus two engineer-weeks for dashboard and alert tuning. Multi-site deployments add federation configuration and per-site dashboard provisioning.

Q9: What is the difference between the SNMP exporter and a vendor-specific agent?

The Prometheus SNMP exporter is generic — it works with any SNMP-speaking device and translates OIDs based on configuration. Vendor-specific agents (such as vendor DCIM suites’ collectors) typically support a single vendor’s hardware and offer pre-built dashboards. The Prometheus exporter is preferred for multi-vendor environments; vendor agents are preferred for single-vendor fleets where pre-built dashboards save configuration time.

Q10: Where can I get the MIB file for my specific PDU?

The vendor’s product documentation or support team. For Newsunn intelligent PDU models, the MIB file is available as a download from the product page or on request from the engineering team. The MIB implements the standard RFC 1628 OIDs plus vendor extensions for outlet-level metering and environmental sensor data.

 

Discuss PDU integration with the engineering team:

Browse the SNMP-enabled intelligent PDU line or contact Newsunn through the homepage.


Post time: Sep-18-2026

Build your own PDU