# 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.
- Open Extensions → PDU Management → SNMP Profiles → PDU Profiles.
- Find the closest official profile and select Clone.
- Set a unique Profile ID, name, vendor and description.
- Set
profile_versionusing SemVer, for example1.0.0or1.1.0-beta.1. - Configure Match rules in the General tab. Use only values that identify the target device family.
- Configure the executable JSON definition in the Definition tab.
- Use Format JSON and Validate definition before saving.
- 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.