# PDU Management Extension

This article describes the PDU Management extension, its supported drivers and the declarative SNMP profiles used to add or customize PDU support.

# About

PDU Management For EasyDCIM (opens new window) allows you to monitor and manage power distribution units from multiple vendors. Depending on the selected configuration, EasyDCIM can discover outlets, collect power data and execute outlet Turn On, Turn Off and Reboot actions.

The extension also provides aggregate and per-device power statistics, outlet status information and event logs.

# Features

  • Control PDU device outlets - Turn On, Turn Off and Reboot
  • View general and per-device statistics:
    • Power consumption
    • Number of turned on and turned off outlets
  • View general graphs:
    • Top power consumption devices
    • Power consumption summary
    • Outlet statistics
  • View device power graphs:
    • Total power consumption
    • Single-outlet power consumption when supported by the device
  • Integrate PDU data with the device summary:
    • Outlets widget
    • Outlet and power data synchronization
  • View outlet and power-operation event logs
  • Use shared Devices, Outlets, Event Logs and SNMP Profiles add-on tabs
  • Open PDU Management as a dynamic tab in the standard PDU device view
  • Show a standard zero-data state when the SNMP connection cannot be established
  • Use legacy vendor drivers or declarative SNMP profiles

# Supported drivers and SNMP profiles

EasyDCIM supports two execution paths:

Execution path Description When it is used
Legacy driver The original vendor-specific SNMP implementation shipped with the Remote Agent. The default path, or when no SNMP Profile is selected. It remains available for backward compatibility.
SNMP Profile A versioned JSON definition executed by the generic profile adapter. Used after an administrator explicitly selects an SNMP Profile in the device SNMP settings.

Selecting an SNMP Profile is independent of the device's other driver settings. If no profile is selected, the legacy driver continues to be used without requiring changes to existing devices.

# Official PDU profiles

The official catalog currently contains the following PDU profile families and variants:

Vendor or device family Official profile IDs Supported profile features
APC apc, apcc, apce Discovery, polling, metrics; outlet features depend on the variant
ATEN aten Discovery, polling, outlet status, outlet control and metrics
CyberPower cyberpower, cyberpower-epdu Discovery, polling, outlet status, outlet control and metrics
Dell dell Discovery, polling, outlet status, outlet control and metrics
E3meter e3meter Meter discovery, polling, metrics and power usage
Eaton eaton Discovery, polling, outlet status, outlet control, metrics and outlet metrics
Enlogic enlogic Discovery, polling, outlet status, outlet control and metrics
Geist geist Discovery, polling, outlet status, outlet control and metrics
Panduit panduit Discovery, polling, outlet status, outlet control, metrics and outlet metrics
PowerAlert poweralert, poweralert-12x, poweralert-pdu, poweralert-ups Variant-specific discovery, polling, outlet status, outlet control and metrics
Raritan raritan, raritan-px2 Discovery, polling, outlet status, outlet control, metrics and outlet metrics where supported
Server Technology Sentry sentry, sentry4 Discovery, polling, outlet status, outlet control and metrics; sentry4 also supports advanced power monitoring
SmartPDU smartpdu Discovery, polling, outlet status, outlet control, metrics and outlet metrics
Switched PDU switched-pdu Discovery, polling, outlet status, outlet control and metrics

The profile ID identifies the device definition; it is not necessarily the same as the vendor name or the legacy driver class. The exact capabilities shown in EasyDCIM are derived from the profile definition.

# Profile capabilities

Capability Profile section Result in PDU Management
discovery general and/or outlets Reads device information and discovers real outlet indexes, names and related data.
polling general and/or metrics Collects the values needed during regular device polling.
outlet_status outlets.status Reads outlet states and translates device values such as 1 or 2 into EasyDCIM states.
outlet_control control or actions Executes outlet ON, OFF and REBOOT commands through SNMP SET.
metrics metrics Defines aggregate or scalar device metrics.
power_usage metrics.load, metrics.power_consumption or another supported power metric Provides the power value used by the PDU Management statistics and graphs.
outlet_metrics outlet_metrics or outlets.power Provides current, power, energy or other per-outlet values.
power_monitoring power_monitoring Provides phase and branch monitoring for devices that expose this data.

Not every device supports every capability. A profile must not advertise data that the device cannot provide.

# PDU Management add-on tabs

The PDU Management add-on uses one shared tab menu for its global views. The menu is available on the add-on pages and keeps the dashboard, managed devices, outlets, event logs and PDU SNMP profiles in one place.

Tab Purpose Main content and actions
Summary Overview of the managed PDU infrastructure. Location overview, PDU locations and aggregate power and outlet statistics.
Devices List of all PDU devices managed by EasyDCIM. Device name, model, driver or profile, location, latest power usage, outlet summary and a link to the device's PDU Management tab.
Outlets Global view of outlets from all managed PDU devices. Filterable outlet table with device, outlet label, connection, state and power information. Supported outlet power actions and mass actions are available where permitted.
Event Logs Audit trail for PDU and outlet operations. Recorded power actions, affected devices or outlets, timestamps, results and filters for finding a specific event.
SNMP Profiles Catalog of declarative profiles used by PDU devices. PDU profile list, capabilities, versions and active status. Administrators can clone profiles and manage custom definitions; predefined profiles are protected from changes.

The SNMP Profiles tab is scoped to PDU profiles. Switch profiles are managed separately from the Switch Management extension. A profile can be selected for a device only when the relevant extension and permissions are available.

The Devices and Outlets tabs use the common EasyDCIM list components, including filtering and pagination. The device list exposes the latest stored power usage and supports sorting by Last Power Usage. These views use stored discovery and polling data; opening the list does not start a new SNMP session for every row.

# Add a PDU device

There are two ways to add a PDU device. You can add a new device manually by entering its IP address and connection details, or use the PDU auto-discovery flow.

When adding a device, select the appropriate legacy driver where required. To use the new declarative mechanism, open the device Settings → SNMP Settings page and explicitly select a compatible SNMP Profile. If no profile is selected, EasyDCIM uses the legacy driver.

# Create a custom PDU driver

Custom drivers are created as custom SNMP profiles. The recommended workflow is to clone the closest official profile and then adjust the copy for the target device or model.

  1. Open Extensions → PDU Management → SNMP Profiles → PDU Profiles.
  2. Find the closest official profile and select Clone.
  3. Set a unique Profile ID, name, vendor and description.
  4. Set profile_version using SemVer, for example 1.0.0 or 1.1.0-beta.1.
  5. Configure Match rules in the General tab. Use only values that identify the target device family.
  6. Configure the executable JSON definition in the Definition tab.
  7. Use Format JSON and Validate definition before saving.
  8. Select the custom profile in the device SNMP Settings and run the connection, discovery and polling checks.

Official profiles are predefined. Their edit and delete forms remain available so that the server can show the standard protection message, but POST requests cannot modify or delete them. Clone an official profile before making changes.

# Profile inheritance with extends

The Licensing Server can store a vendor profile as a small schema delta that extends another profile. The parent is declared in the package-level extends property, for example:

{
  "extends": "parent-profile-id"
}

The parent provides the common runtime contract, while the child contains only the vendor-specific OIDs, mappings or overrides. When the profile is synchronized, EasyDCIM resolves the parent and sends the effective profile to the Remote Agent. The Definition editor contains the schema delta; do not paste the complete Licensing Server package or duplicate the parent definition unnecessarily.

# Profile metadata and match rules

The fields in the profile form are package metadata. They are not part of the JSON entered in the Definition editor.

Field Purpose Rules
Profile ID Stable identifier used to select and synchronize the profile. Lowercase letters, numbers, _ and -; it must be unique.
Type Identifies the profile family. For this page use pdu.
Vendor Human-readable vendor or device family. Use a clear name visible to administrators.
Profile version Version of the profile definition. SemVer, for example 1.0.0. Increment it when the custom definition changes.
Channel Release channel of the profile. Use stable for a tested profile and preview while testing.
Match rules Values used to identify compatible devices. Supported keys are firmware, sysobjectid and sysDescr; every value must be a non-empty string. sysobjectid values must be numeric OIDs.

Example match rules:

{
  "sysobjectid": [
    ".1.3.6.1.4.1.999.1.1"
  ],
  "sysDescr": [
    "Example Managed PDU"
  ],
  "firmware": [
    "example-pdu"
  ]
}

Do not add a broad match rule that can select an unrelated device. If a device has several compatible identifiers, add each exact identifier to the corresponding list.

# PDU profile JSON definition

The Definition editor contains the profile schema only. Do not paste the package wrapper containing profile_id, name, vendor, match_rules or content_hash into this field.

The definition must be a JSON object with schema_version: 1. A normal PDU definition contains outlets; a meter-only definition can use device_kind: "meter" without an outlet section.

Section Required Purpose
schema_version Yes Must be the number 1.
device_kind No Use pdu for an explicit PDU definition or meter for a meter without outlets. If omitted, a non-switch definition is treated as a PDU.
general No Reads system information, model, serial number, firmware and other legacy-compatible fields.
outlets Yes for a PDU Discovers real outlet indexes, names, states, phases and optional per-outlet power values.
metrics No Defines aggregate metrics such as load, power consumption or watt-based values.
outlet_metrics No Defines direct per-outlet current, power or energy maps.
power_monitoring No Defines phase and branch measurements for advanced PDU monitoring.
control No Compact definition for common ON, OFF and REBOOT SET commands.
actions No Individual or multi-step SNMP actions, including outlet label changes.
variant_detection and variants No Reads a device-specific value and applies a definition override for a hardware or firmware variant.

# Read definitions

Most profile sections contain a read definition. A read definition must contain a numeric oid and an operation.

Operation Use
get Read one scalar OID.
walk1d Read a one-dimensional indexed table, such as outlet names or statuses.
walkAuto Use the adapter's automatic walk behavior for compatible legacy data.
walkNd Read a multi-dimensional indexed table where the legacy response requires it.
realWalkParse Parse a raw SNMP walk using the legacy-compatible response format. Use it only when the device fixture or device walk requires it.

realMultiWalk is reserved for Generic SNMP switch profiles and must not be used in a PDU profile.

Use numeric OIDs, with or without a leading dot. Indexed actions may use {index} and {suffix} placeholders. MIB names such as PDU-MIB::outletStatus are not accepted by the profile validator.

# Base outlet definition

For a standard PDU, the following fields form the base outlet contract:

JSON path Purpose Notes
outlets.index Discovers outlet indexes. Required. Values come from the device; do not create artificial outlet indexes.
outlets.name Reads the outlet label or name. Required.
outlets.status Reads the raw outlet state. Required. Use values or status_mapping to translate device values.
outlets.phases Reads the phase or circuit identifier. Optional. Use phase_mapping when numeric values need labels.
outlets.power Reads power for each outlet. Optional. It can be a single read or a field-based definition.
outlet_metrics.current Reads per-outlet current. Optional direct metric map.
outlet_metrics.power Reads per-outlet power. Optional direct metric map.
outlet_metrics.energy Reads per-outlet energy. Optional direct metric map.

The status mapping must use EasyDCIM state names where possible, for example outletOn, outletOff, outletReboot and outletUnknown.

# Metrics and conversions

Metric names are the compatibility keys consumed by PDU Management. To expose a value in the standard PDU statistics, use the existing names rather than inventing a new name.

Metric name Purpose
load Primary polling-compatible load or current metric.
power_consumption Power consumption metric used by the power view when present.
power_usage Explicit power usage metric for profiles that need a separate compatibility value.
load_watts Watt-based load metric.
power_usage_watts Watt-based power usage metric.

The following aggregation values are available for read-based metrics: sum, average, single and first.

Use conversion when the device returns a scaled value:

Conversion property Purpose
divide Divide the returned value by a non-zero number.
multiply Multiply the returned value.
cast Cast the result to int or float.
precision Set the decimal precision.
integer_if_exact Return an integer when the converted value has no fractional part.
non_negative Prevent negative results where the metric cannot be negative.
strict Apply strict conversion handling.
convert_each Convert each value before aggregation.

For optional device data, use the supported defaults, fallback_read, error_default, continue_after_error or a capability probe instead of returning made-up outlet or power values.

# Outlet control

For a simple outlet command set, use the compact control section:

{
  "control": {
    "oid": ".1.3.6.1.4.1.999.1.2.1.4.{index}",
    "type": "i",
    "commands": {
      "on": 1,
      "off": 2,
      "reboot": 3
    }
  }
}

Use actions instead when commands use different OIDs or require several steps:

{
  "actions": {
    "off": {
      "oid": ".1.3.6.1.4.1.999.1.2.1.4.{index}",
      "value": 2,
      "type": "i"
    },
    "label": {
      "oid": ".1.3.6.1.4.1.999.1.2.1.2.{index}",
      "value": "{name}",
      "type": "s"
    }
  }
}

Supported action types are i and s. Multi-step actions can use steps, delay_ms, pre_reads, result and error_message. Do not define the same command in both control and actions; the definition is rejected because it is ambiguous.

Only use command values confirmed by the device documentation or an SNMP recording. A profile must not report a successful power operation when the device does not support that SET value.

# Complete minimal PDU example

The following example shows the structure of a small PDU profile. Replace every example OID and command value with values from the target device:

{
  "schema_version": 1,
  "device_kind": "pdu",
  "general": {
    "include_system": true,
    "fields": {
      "sPDUIdent.modelNumber": {
        "oid": ".1.3.6.1.4.1.999.1.1.0",
        "operation": "get",
        "default": ""
      }
    }
  },
  "outlets": {
    "index": {
      "oid": ".1.3.6.1.4.1.999.1.2.1.1",
      "operation": "walk1d"
    },
    "name": {
      "oid": ".1.3.6.1.4.1.999.1.2.1.2",
      "operation": "walk1d"
    },
    "status": {
      "oid": ".1.3.6.1.4.1.999.1.2.1.3",
      "operation": "walk1d",
      "values": {
        "1": "outletOn",
        "2": "outletOff"
      }
    },
    "power": {
      "oid": ".1.3.6.1.4.1.999.1.2.1.5",
      "operation": "walk1d",
      "conversion": {
        "divide": 10
      }
    }
  },
  "metrics": {
    "load": {
      "read": {
        "oid": ".1.3.6.1.4.1.999.1.3.0",
        "operation": "get"
      },
      "conversion": {
        "divide": 10
      },
      "aggregation": "first",
      "zero_result": 0
    }
  },
  "control": {
    "oid": ".1.3.6.1.4.1.999.1.2.1.4.{index}",
    "type": "i",
    "commands": {
      "on": 1,
      "off": 2,
      "reboot": 3
    }
  }
}

This example is only a structural starting point. A working profile requires OIDs, indexes, scaling rules, status values and SET commands that match the target PDU exactly.

# Validate and test a custom profile

JSON validation checks the profile structure and supported properties. It does not prove that an OID exists on a particular model or that an outlet SET command is safe.

Step What to verify
1. Validate the definition The Validate definition action reports valid JSON and a supported Schema v1 definition.
2. Validate match rules The rules contain only exact firmware, sysobjectid and sysDescr values for the target family.
3. Test the connection The selected SNMP credentials and transport can reach the device.
4. Run discovery The profile discovers the real device data and the expected number of outlets.
5. Run polling General information, status and aggregate metrics are returned without errors.
6. Check outlet data Names, states, phases and per-outlet power values are mapped correctly.
7. Test control Test ON, OFF and REBOOT on a safe outlet and confirm the result on the device.
8. Review the SNMP trace Confirm the expected GET, WALK and SET requests and check for missing OIDs or device errors.

For development, an SNMP recording such as an snmprec fixture can be used with the EasyDCIM SNMP simulator. Always repeat control tests against a real device before using a custom profile in production.

# PDU Management tab in the device view

When the PDU Management extension is active and the current user has access to it, EasyDCIM adds a PDU Management tab to the standard tabs of every PDU device. The tab is generated dynamically from the device type. Its widgets and actions are selected from the capabilities of the configured legacy driver or SNMP profile.

The tab is part of the device view. It does not create a separate device summary and it uses the same device header, navigation and permissions as the other device tabs.

# Tab behavior

Situation Behavior
PDU Management is active and the device is a PDU The PDU Management tab is displayed in the device view.
No SNMP Profile is selected The tab uses the configured legacy PDU driver. Existing devices continue to work without changes.
An SNMP Profile is selected The tab uses the selected declarative profile and its advertised capabilities. The profile is independent of the device's other driver settings.
The SNMP connection fails The page shows one standard zero-data message instead of rendering widgets with misleading values. When permitted, the message includes a link to SNMP Settings.
A capability is not available The related widget or outlet action is hidden. The page does not create artificial outlets or unsupported controls.

# Widgets on the tab

Healthy devices display the common widgets below. Their visibility is calculated from the active driver or profile, so a meter or a PDU without a particular measurement does not show an empty or unsupported widget.

Widget What it displays Visibility
General Information Model, driver or SNMP Profile, IP address, MAC address, location, rack position, serial number, asset tag, firmware, hardware, SNMP version and port, uptime and description. Always visible after a successful connection.
Power Consumption & Load Live power usage chart, current value, configured power unit and chart statistics. Visible when the driver or profile provides power metrics.
Input Metrics Live input power usage, voltage, phase and outlet counters, including connected devices where available. Visible when input power data is supported.
Outlets The synchronized outlet table with outlet number, label, state, connected device, connected port and power usage where available. Visible when the device exposes outlet data.

The Outlets widget uses the real outlet indexes returned by the PDU. The Synchronize Outlets action refreshes the stored EasyDCIM outlet inventory from the device. Outlet actions are displayed only when the driver or profile supports outlet control; available actions are ON, OFF and REBOOT.

The power chart uses the unit configured in Settings → Power. Values are converted by the selected driver or profile before they are displayed, so profiles must define the correct device scaling rules.