IPMI (Go collector)
IPMI (Go collector) documentationIPMI (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 the System Event Log (SEL); 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. With collect_sel enabled, the first collections after a start also read the existing System Event Log, for up to two seconds each (a quarter of update_every when shorter), until all records are read. Later collections read only new records, or the whole log again after the BMC clears or rewrites it.
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 | Read the System Event Log: the entry count and new records charts, and the ipmi-sel Live Data view. | 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
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.
The SEL new records chart counts records newly observed since the previous value, by default FreeIPMI state. Records already in the log when collection starts are not counted: the chart appears once the first read of the log completes. After the BMC log is cleared or rewritten, rereading the same record does not count it again. After the initial baseline, observed events are reported during rescans even if rollover prevents the whole log from being read. A failed SEL read leaves a gap, and records observed during it count in the next successful value.
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 |
Per SEL event type
New System Event Log records of one event type on the selected BMC.
Labels:
| Label | Description |
|---|---|
| event_type | threshold for threshold events, which also change the state of their sensor; discrete for every other record, OEM records included. |
Metrics:
| Metric | Description | Dimensions | Unit |
|---|---|---|---|
| ipmi.sel_new_records | IPMI System Event Log New Records | nominal, warning, critical, unknown | records |
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) |
| ipmi_sel_critical_events | ipmi.sel_new_records | Number of critical events, other than threshold crossings, observed by the collector in the last 10 minutes. Failed SEL reads can delay reporting. The alert clears when no new one is observed, not when the problem is resolved; the ipmi-sel Live Data view lists the records |
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. |
IPMI System Event Log
Browse the hardware events the BMC recorded, such as threshold crossings, fan, power and memory errors, processor throttling and boots, with default FreeIPMI states. Use it to see when a problem started and how often it recurs; the sensor charts show only the current state.
| Aspect | Description |
|---|---|
| Name | Ipmi-sel |
| Require Cloud | no |
| Performance | Reads the records the collector already read from the BMC; sends no BMC requests. |
| Security | Read-only hardware event records from the configured target. |
| Availability | Available for jobs with collect_sel enabled while they run; when no job collects the SEL, requests return HTTP 404. Returns HTTP 503 before the first successful collection, after a collection failure, or while the BMC has not answered SEL requests. On the first collections of a large log, it shows the oldest records read so far. |
Prerequisites
No additional configuration is required.
Parameters
| Parameter | Type | Description | Required | Default | Options |
|---|---|---|---|---|---|
| Instance | select | Select the IPMI collection job. | no | First available job | |
| State | select | Show only records with this default FreeIPMI state. | no | all | All states (default), Critical, Warning, Nominal, Unknown |
| Search | string | Case-sensitive Netdata simple patterns against sensor, type, event, direction, state, generator and record ID. Use *DIMM* for a substring. Space-separated patterns are checked in order; the first match decides, ! excludes, and no match excludes the row. | no | No text filter |
Returns
One row per SEL record the BMC retains, newest first in log order. The dashboard time range does not filter the table, because SEL records are often weeks apart. Times are converted to UTC with the BMC’s SEL UTC offset. When the BMC reports none, times are the BMC clock, and the view shows how far that clock is from the Agent clock. Records logged before a daylight saving change can be off by an hour, because the BMC reports only its current offset. Records without a date (OEM records without a timestamp, or records logged before the BMC clock was set) show Time as Unavailable.
| Column | Type | Unit | Visibility | Description |
|---|---|---|---|---|
| Order | integer | hidden | Position in the log, newest first. | |
| Time | timestamp | When the BMC logged the record, in UTC; Unavailable when the record has no date. | ||
| Sensor | string | SDR sensor name, or the event generator and sensor number (for example BIOS #34) when the BMC has no record of that sensor. | ||
| Sensor Type | string | IPMI sensor type. | ||
| Event | string | Event description; threshold events include the trigger reading and threshold when the BMC records them and the sensor’s SDR record describes their conversion. | ||
| Direction | string | Assertion (the condition started) or Deassertion (it ended). | ||
| State | string | Default FreeIPMI interpretation of the record. | ||
| Record ID | string | hidden | SEL record identifier. | |
| Generator | string | hidden | Event generator, such as the BMC, BIOS or SMI handler, and its ID. | |
| BMC Time | string | hidden | Timestamp as the BMC recorded it, before UTC conversion. | |
| Raw | string | hidden | Record bytes as returned by the BMC. | |
| 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.
The observability platform companies need to succeed
Sign up for freeWant a personalised demo of Netdata for your use case?






