PDUs¶
New in the next release
This is on the dev and qa builds now, and in the next release.
This page gets Ferrule reading your rack PDUs through their network cards, over SNMP.
What Ferrule reads: the PDU's maker, model and serial; its draw in amps and watts against what its inlet is rated for; its banks' current; and each outlet's name, whether it is switched on, and what it draws where the PDU meters each outlet. From that it knows which outlets nothing draws from, which capacity planning counts as free when it checks whether a new host fits a rack. What it can't: it changes nothing. It can't switch outlets.
It warns at 80% of the PDU's rating and alerts at 95% (pdu_load): past
80%, one more server's inrush can trip the breaker.
There is no standard PDU table, so Ferrule reads each maker's own, told apart by what the PDU says it is:
| Maker | Table |
|---|---|
| APC | PowerNet-MIB: rPDU2 on current Rack PDUs, the older rPDU on AP78xx/79xx |
| Raritan | PDU2-MIB |
| Eaton | EATON-EPDU-MIB |
Built from the makers' tables
These were written from each maker's published MIB and tested against recorded answers, not every model. If a PDU of one of these makers shows wrong figures, a diagnostic bundle holds what it answered.
What's read from each maker¶
| APC (rPDU2) | APC (older rPDU) | Raritan | Eaton | |
|---|---|---|---|---|
| Name, model, serial | From the PDU's identity table | The name only | Model and serial | Product, serial and unit name |
| Rating | The device's maximum current | The device rating | The inlet's rated current (16A) |
Each input's current capacity |
| Draw | The busiest phase's current, and the device's power | The busiest bank or phase | The inlet's current and power | The busiest input's current, and every input's power added up |
| Banks | Each bank's current | |||
| Outlets | Name, number, on or off, current and power | Name, on or off | Name, on or off, current and power | Name, on or off, current (in mA) and power |
Raritan scales each reading by the number of decimal places the PDU says
it has. A PDU of another maker, or one that answers its maker's MIB with
nothing, is refused with which it is, and its sysObjectID.
Which outlets are free¶
An outlet counts as drawing nothing, and so free, when it's switched off, or draws under 3 W, or, where it reports only current, under 0.05 A. That's only told on a PDU that meters each outlet. A PDU that only switches outlets still lists them, but Ferrule can't tell which are free from the network, and says so.
Name each outlet on the PDU after what's plugged in (esx01 PSU1):
capacity planning finds a host's PDU by an outlet named for it.
Turn on SNMP on the PDU¶
On the PDU's network card, turn on SNMP read-only: SNMPv2c with a community, or SNMPv3 with a user and two passphrases of at least 8 characters. If it can limit SNMP to certain addresses, allow only the Docker host that runs Ferrule.
Enter it in the setup wizard¶
On the wizard's What you have page, set PDUs to the number of groups you have. On its page:
- Name: what you call the group, such as
racks. - Addresses: each PDU's name or IP address, separated by commas,
without
https://. - SNMP version: SNMPv2c or SNMPv3, and the community or the user and passphrases.
- Click Test.
Editing the stack by hand
SOURCE_7=pdu 192.168.1.30,192.168.1.31 name=racks version=2c
SOURCE_7_SECRET=<community>
Where it shows up¶
Each PDU gets a panel on the Power and servers tab: its draw against
its rating, its load, its power, how many outlets draw nothing, each
bank's current, and every outlet with its name, state and draw. Settings
→ Sources shows the slot's summary, such as 2 PDUs, 16 outlets, 7 free.
It alerts:
| Alert | When | Level |
|---|---|---|
PDU near its rating (pdu_load) |
Its draw reaches 80% of its rating; it clears 3 points under | warning |
| 95% or more | critical | |
| Source unreachable | The PDU stops answering | critical |
Past 80%, one more server's inrush can trip the breaker.
Metrics, for each PDU (source, pdu) and outlet (outlet):
| Metric | What it is |
|---|---|
infra_pdu_up |
1 when it answers |
infra_pdu_current_amperes |
Its draw: the busiest phase |
infra_pdu_rated_amperes |
What its inlet is rated for |
infra_pdu_power_watts |
Its power |
infra_pdu_load_ratio |
Draw over rating, 0–1 |
infra_pdu_outlet_on |
1 when the outlet is switched on |
infra_pdu_outlet_current_amperes |
The outlet's current |
infra_pdu_outlet_power_watts |
The outlet's power |
Capacity planning uses the PDU feeding a host when it checks adding one more like it: enough free outlets for its power supplies, and the load after.
If something's wrong¶
| What you see | What to do |
|---|---|
| it answers SNMP, but not as a PDU Ferrule reads (APC, Raritan or Eaton) | It's another maker's PDU, or not a PDU. Ask for it on GitHub, with a diagnostic bundle. |
| an APC device, but neither rPDU2 nor rPDU answers | It's an APC device that isn't a rack PDU, such as a UPS card: use the UPS kind. |
| a Raritan device, but PDU2-MIB's outlets don't answer | Turn on PDU2-MIB access on the PDU, or check the user's SNMP access. |
| an Eaton device, but EATON-EPDU-MIB's outlets don't answer | Check the card's firmware supports the ePDU MIB. |
| no answer from ... | SNMP is off, the community is wrong, or UDP 161 is blocked from the Docker host. |
Load shows — |
The PDU doesn't report its rating, so a share can't be worked out. The amps still show. |
| Every outlet shows as in use | The PDU doesn't meter each outlet: it can't be told which are free. |
| none of the N PDUs answered | No PDU in the list answered: check the credentials and the firewall. |