IPMI (Go collector)
Plugin: ipmi.plugin Module: ipmi
Overview
Monitor hardware sensor readings, sensor health and System Event Log entries through IPMI.
Queries a local Linux OpenIPMI device or a remote BMC over IPMI 1.5 LAN or IPMI 2.0 LAN+ using the configured account. The collector reads sensors and SEL metadata; it does not change BMC configuration or clear the event log.
This collector is only supported on the following platforms:
- Linux
This collector supports collecting metrics from multiple instances of this integration.
| Permission | Needed when |
|---|---|
| Read/write access to the selected OpenIPMI device | Collecting locally with driver: open. |
| BMC account with User privilege and LAN access | Collecting remotely with driver: lan or driver: lanplus. Some BMC policies require a higher session privilege. |
Installers give the dedicated ipmi.plugin binary root ownership and setuid permission, restricted to
the Netdata group, for local device access. Containers must expose the device, for example with
--device /dev/ipmi0. Remote collection needs no local device access.
Default Behavior
Auto-Detection
On standard Linux installations, the stock job attempts to collect the local OpenIPMI device 0 every ten seconds. Containers require ipmi=yes in the plugins section of netdata.conf and an exposed device for local collection. Hosts without an accessible device do not collect local IPMI metrics. Netdata prefers this plugin when both IPMI implementations are installed and enabled. An existing freeipmi=no keeps collection disabled; non-blank legacy command options keep C when FreeIPMI is enabled. Set ipmi=yes explicitly in the plugins section of netdata.conf to migrate either case to Go.
Limits
This plugin requires Linux. Keep FreeIPMI for legacy direct drivers, bridged sensors, OEM interpretation or custom FreeIPMI interpretation files. Unknown or unavailable sensor readings leave gaps. Default FreeIPMI policy treats non-critical threshold assertions as nominal. Netdata starts only one IPMI implementation; switch implementations by changing netdata.conf and restarting the Agent.
Performance Impact
IPMI command latency grows with sensor count. Increase update_every when a complete sensor scan takes longer than the configured interval.
Setup
Prerequisites
Install the IPMI plugin
Linux source and static builds include the Go IPMI plugin by default. For DEB/RPM installations, install the optional netdata-plugin-ipmi package separately. Source builds can disable it with --disable-plugin-ipmi.
Migrate an existing FreeIPMI configuration
Configure the target in ipmi/ipmi.conf, set ipmi = yes in the [plugins] section of netdata.conf, and restart Netdata. C command options are not translated. To switch back, install netdata-plugin-freeipmi if needed, set ipmi = no and freeipmi = yes, and restart Netdata.
Enable remote BMC access
For LAN/LAN+, enable IPMI over LAN on the BMC, configure an account with User privilege, and allow UDP traffic from the Agent to the BMC port (623 by default). Select a higher privilege only if the BMC access policy requires it.
Configuration
Options
Options apply to each IPMI job. Configure one local device or remote BMC per job.
| Group | Option | Description | Default | Required |
|---|---|---|---|---|
| Connection | driver | IPMI transport: local Linux OpenIPMI, IPMI 1.5 LAN or IPMI 2.0 LAN+. | open | no |
| device | Local OpenIPMI device number. | 0 | no | |
| hostname | BMC hostname or IP address for LAN/LAN+, without a URL scheme or port. | yes | ||
| port | BMC UDP port for LAN/LAN+. | 623 | no | |
| username | BMC account for LAN/LAN+. Leave empty only for anonymous access. | no | ||
| password | BMC account password for LAN/LAN+. Leave empty only if the account has no password. | no | ||
| privilege_level | Session privilege requested from the BMC. User privilege is sufficient for standard sensor and SEL commands. | user | no | |
| Collection | update_every | Data collection frequency in seconds. | 10 | no |
| timeout | Timeout for session setup and for each IPMI command. | 5s | no | |
| collect_sel | Collect the System Event Log entry count. | yes | no | |
| Virtual Node | vnode | Associates this job with a Virtual Node. | no |
via File
The configuration file name for this integration is ipmi/ipmi.conf.
You can edit the configuration file using the edit-config script from the
Netdata config directory.
cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config ipmi/ipmi.conf
Examples
Local device
Monitor the first kernel IPMI device.
jobs:
- name: local
driver: open
Remote BMC
Monitor a remote BMC using IPMI 2.0. Use driver lan for BMCs that require IPMI 1.5.
jobs:
- name: server-bmc
driver: lanplus
hostname: bmc.example
username: monitor
password: '${env:IPMI_PASSWORD}'
Attach a remote BMC to a virtual node
Define server-node in vnodes.conf first. Without vnode, metrics belong to the Agent host.
jobs:
- name: server-bmc
driver: lanplus
hostname: bmc.example
username: monitor
password: '${env:IPMI_PASSWORD}'
vnode: server-node
Alerts
The following alerts are available:
| Alert name | On metric | Description |
|---|---|---|
| ipmi_sensor_state | ipmi.sensor_state | IPMI sensor ${label:sensor} (${label:component}) state |
| ipmi_events | ipmi.sel | number of events in the IPMI System Event Log (SEL) |
Metrics
Metrics grouped by scope.
The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.
Each sensor has its own reading and state chart. SEL is the raw repository entry count, including records FreeIPMI may filter during interpretation. The stock ipmi_events alert template matches the ipmi.sel context and applies to every Go job and to the C collector.
Per sensor
A sensor on the selected BMC.
Labels:
| Label | Description |
|---|---|
| sensor | Sensor name. |
| type | IPMI sensor type. |
| component | Component inferred from the sensor name and type. |
Metrics:
| Metric | Description | Dimensions | Unit |
|---|---|---|---|
| ipmi.sensor_temperature_c | IPMI Sensor Temperature | temperature | Celsius |
| ipmi.sensor_temperature_f | IPMI Sensor Temperature | temperature | Fahrenheit |
| ipmi.sensor_voltage | IPMI Sensor Voltage | voltage | Volts |
| ipmi.sensor_ampere | IPMI Sensor Current | ampere | Amps |
| ipmi.sensor_fan_speed | IPMI Sensor Fan Speed | rotations | RPM |
| ipmi.sensor_power | IPMI Sensor Power | power | Watts |
| ipmi.sensor_reading_percent | IPMI Sensor Percentage Reading | percentage | % |
| ipmi.sensor_state | IPMI Sensor State | nominal, warning, critical, unknown | state |
Per IPMI (Go collector) instance
The selected BMC System Event Log.
This scope has no labels.
Metrics:
| Metric | Description | Dimensions | Unit |
|---|---|---|---|
| ipmi.sel | IPMI System Event Log Entries | events | events |
Live Data
Inspect the latest successful collection without issuing more IPMI commands.
IPMI Sensors
Show current readings and default FreeIPMI health states, with sensor counts by component and state.
| Aspect | Description |
|---|---|
| Name | Ipmi-sensors |
| Require Cloud | no |
| Performance | Reads the latest completed snapshot without additional BMC requests. |
| Security | Read-only sensor data from the configured target. |
| Availability | Available while a collection job runs. Returns HTTP 503 before the first successful collection or after a collection failure. |
Prerequisites
No additional configuration is required.
Parameters
| Parameter | Type | Description | Required | Default | Options |
|---|---|---|---|---|---|
| Instance | select | Select the IPMI collection job. | no | First available job |
Returns
One row per discovered full or compact sensor record, expanded for sharing. Unavailable numeric readings are null.
| Column | Type | Unit | Visibility | Description |
|---|---|---|---|---|
| Sensor | string | Sensor name. | ||
| Type | string | IPMI sensor type. | ||
| Component | string | Component inferred from the sensor name and type. | ||
| Reading | float | Current reading; null when unavailable. | ||
| Units | string | Reading units; null for discrete sensors. | ||
| State | string | Default FreeIPMI health interpretation. | ||
| Key | string | hidden | Stable sensor identity within the collection job. | |
| rowOptions | none | hidden | Row health severity. |
Troubleshooting
Known Errors
permission denied
Cause
The plugin account cannot open the local IPMI device for reading and writing.
Fix
Check that the dedicated binary retains the ownership and setuid permissions installed by Netdata. In a container, expose the IPMI device. For a manually built binary, grant device access through the host security policy or run a trusted local test explicitly with sudo.
Do you have any feedback for this page? If so, you can open a new issue on our netdata/learn repository.