power-hmc-exporter — Agentless Prometheus Exporter for the IBM Power HMC
power-hmc-exporter is an agentless Prometheus exporter for IBM Power Systems. A single instance runs on one central Linux host and polls the Hardware Management Console (HMC) Performance & Capacity Monitoring (PCM) facility over its REST API, reconstructing your entire PowerVM virtualization layer — shared processor and memory pools, the LPAR ↔ VIOS service relationships, and the SEA / NPIV / VSCSI mappings — as live metrics on a standard /metrics endpoint, with the cross-reference labels already resolved. You install nothing on your partitions.
Requirements
- Exporter host: Linux x86-64 (RHEL 9.x is the reference platform). The binary is statically linked with no runtime dependencies and runs on glibc and musl distributions alike — verified on Ubuntu, Debian, RHEL/AlmaLinux, Fedora, Arch and Alpine.
- HMC: REST API enabled, with PCM aggregation turned on for the managed systems of interest. Verified against HMC V10 R3 SP1063.
- HMC user: a console user (typically
hscroot) permitted to read PCM data. - Connectivity: TCP
12443from the exporter host to each HMC. - Scrape access: one TCP port (default
9876) reachable from Prometheus. - Backend: Prometheus 2.x or 3.x (or any OpenMetrics-compatible store); Grafana 9.x–12.x for the included dashboards.
Installation
power-hmc-exporter ships as a single tarball containing the static binary, an install.sh installer, a hardened systemd unit, an environment-file template, and the three Grafana dashboards. It runs on one central host — there is no agent to deploy on your partitions.
Install
# Extract and run the installer (as root)
tar xzf power-hmc-exporter-v0.9.0-linux-amd64.tar.gz
cd power-hmc-exporter-v0.9.0-linux-amd64/
sudo ./install.sh
# Verify the unit is present
systemctl status power-hmc-exporter
The installer automatically:
- Creates a dedicated, unprivileged service account
- Installs the exporter binary and a hardened
systemdunit (power-hmc-exporter.service) - Installs the environment-file template at
/etc/sysconfig/power-hmc-exporter— preserving any existing credentials on upgrade - Includes the three Grafana dashboards (
grafana/) for import
Uninstall
# Stop and disable the service, then remove the files install.sh created
sudo systemctl disable --now power-hmc-exporter
sudo rm -f /etc/systemd/system/power-hmc-exporter.service
sudo systemctl daemon-reload
# Optionally remove /etc/sysconfig/power-hmc-exporter, the binary, and the service account
Configuration
All configuration is supplied through environment variables in /etc/sysconfig/power-hmc-exporter (read by the systemd unit). At minimum, set the HMC host, user and password.
# /etc/sysconfig/power-hmc-exporter
# --- HMC connection (required) ---
PHMC_HMC_HOST=hmc1.example.com
PHMC_HMC_USER=hscroot
# Prefer a password file over an inline password:
PHMC_HMC_PASSWORD_FILE=/etc/sysconfig/power-hmc-exporter.pw
# PHMC_HMC_PASSWORD=...
# --- HMC options ---
PHMC_HMC_PORT=12443
# Self-signed HMC certificate? skip verification (lab/PoC):
PHMC_INSECURE_SKIP_VERIFY=false
# --- Exporter ---
PHMC_LISTEN_ADDR=:9876
PHMC_POLL_INTERVAL=60s
PHMC_REQUEST_TIMEOUT=30s
PHMC_MAX_CONCURRENCY=6
| Variable | Description | Default |
|---|---|---|
PHMC_HMC_HOST | HMC hostname or IP (required) | — |
PHMC_HMC_USER | HMC user, typically hscroot (required) | — |
PHMC_HMC_PASSWORD / PHMC_HMC_PASSWORD_FILE | HMC password, inline or from a file (file form preferred) | — |
PHMC_HMC_PORT | HMC REST API port | 12443 |
PHMC_INSECURE_SKIP_VERIFY | Skip TLS verification for self-signed HMC certificates | false |
PHMC_LISTEN_ADDR | Exporter HTTP listen address | :9876 |
PHMC_POLL_INTERVAL | Interval between HMC poll cycles | 60s |
PHMC_REQUEST_TIMEOUT | Per-API-call timeout | 30s |
PHMC_MAX_CONCURRENCY | Max concurrent HMC requests per cycle (lower to 1 for sequential polling) | 6 |
Running
# Enable and start at boot
sudo systemctl enable --now power-hmc-exporter
# Follow the logs
journalctl -u power-hmc-exporter -f
# Stop / restart / status
sudo systemctl stop power-hmc-exporter
sudo systemctl restart power-hmc-exporter
systemctl status power-hmc-exporter
Metrics & Labels
All series are prefixed power_hmc_ and exposed on the /metrics endpoint. The exporter resolves the PowerVM topology from the HMC PCM data and stamps the cross-references directly onto each series as labels — so you filter and group by VIOS, SEA, VLAN or physical FC port with no id→name joins and no lsmap / lshwres archaeology.
# Per-LPAR network — serving VIOS, SEA and VLAN already on the series:
power_hmc_lpar_network_received_bytes{system="sys01", lpar="lpar07", vlan_id="191", sea="ent10", vios="vios02"} 4.81e+08
# Per-LPAR virtual Fibre Channel (NPIV) — VIOS and physical FC port resolved:
power_hmc_lpar_vfc_read_bytes{lpar="lpar07", fc="fcs1", vios="vios02"} 1.66e+09
# Data freshness, per managed system (see Troubleshooting):
power_hmc_system_pcm_sample_age_seconds{system="sys01"} 392
| Metric group | What it covers |
|---|---|
| Managed system & pools | Shared processor pool utilization, memory pool allocation vs total, per-system processor/memory |
| LPAR processor & memory | Entitled vs consumed, capped/uncapped borrowing, virtual-processor ceilings — for every LPAR and VIOS |
| LPAR network (via SEA) | Per-LPAR throughput labelled with the serving VIOS, SEA and VLAN (self-corrects on SEA failover) |
| LPAR storage (NPIV / VSCSI) | Virtual-FC traffic mapped to the physical FC port and bridging VIOS; VSCSI I/O tied to the serving vhost |
| VIOS | VIOS CPU/memory and SEA throughput by VLAN and per-LPAR |
| Exporter / poll health | power_hmc_system_pcm_sample_age_seconds, HMC reachability, poll duration |
Prometheus Configuration
scrape_configs:
- job_name: 'power-hmc'
static_configs:
- targets:
- 'hmc-exporter-host:9876'
scrape_interval: 60s
To monitor several consoles, run one exporter instance per HMC and scrape them all into the same Prometheus; the dashboards then aggregate across managed systems with a Managed System selector.
Grafana Dashboards
Three ready-to-import dashboards ship in the package (grafana/). Import the JSON via Dashboards → Import and pick your Prometheus datasource:
- Overview — estate-wide: HMC up, managed systems, poll duration, PCM sample age, top LPARs by CPU and NPIV.
- Per-System — one managed system: shared CPU/memory pools, Top-N LPARs, VIOS, SEA throughput by VLAN, NPIV per FC port.
- Per-LPAR — one partition: its processor/memory, and the upstream VIOS bandwidth it depends on (noisy-neighbour diagnostics).
Endpoints
| Endpoint | Description |
|---|---|
/metrics | Prometheus metrics (OpenMetrics), on PHMC_LISTEN_ADDR (default :9876) |
Troubleshooting
Cannot connect to the HMC
- Confirm TCP
12443is open from the exporter host to the HMC and that the REST API is enabled. - Verify
PHMC_HMC_USER/ password are correct and the user can read PCM data. - For a self-signed HMC certificate, set
PHMC_INSECURE_SKIP_VERIFY=true(lab/PoC only; prefer trusting the CA in production). - Watch
journalctl -u power-hmc-exporter -ffor authentication or TLS errors.
Metrics look stale / “No data”
The HMC PCM facility has an intrinsic processing latency of roughly 6–7 minutes on V10 — this is the console, not the exporter. Confirm PCM aggregation is enabled on the HMC for the managed systems of interest, then alert on staleness using power_hmc_system_pcm_sample_age_seconds (a 15-minute threshold is a good starting point).
Fibre Channel error panels show “No data”
HMC PCM does not expose FC port error counters, so those panels read aix_fcstat_* from a companion AIX_exporter scraped into the same Prometheus, joined on the AIX partition name. Where no AIX_exporter runs, the panels simply show No data and the rest of the dashboard keeps working.
Verify the endpoint
# From the exporter host
curl -s http://localhost:9876/metrics | grep '^power_hmc_'
Compatibility
Verified against HMC V10 R3 SP1063 (it calls the V10 nested ManagedSystem / LogicalPartition PCM endpoints), monitoring managed systems, VIOS and LPARs running AIX, IBM i and Linux on Power. The exporter host runs any modern Linux x86-64 distribution (RHEL 9.x is the reference); the binary is statically linked with no runtime dependencies. Compatible with Prometheus 2.x/3.x and Grafana 9.x–12.x. power-hmc-exporter pairs naturally with AIX_exporter and the Loki Agent for complete, top-to-bottom IBM Power observability.
Download Checksum (v0.9.0)
Verify your download integrity with SHA-256:
sha256: ee3fdec2bd30ebf113d832b669e33c51f1200cdc0db7a9bbd96221d2045237da power-hmc-exporter-v0.9.0-linux-amd64.tar.gz
On Linux, verify with: sha256sum power-hmc-exporter-v0.9.0-linux-amd64.tar.gz
Questions? Contact support