This is an IPMI exporter for Prometheus.
It supports both the regular /metrics
endpoint, exposing metrics from the
host that the exporter is running on, as well as an /ipmi
endpoint that
supports IPMI over RMCP - one exporter running on one host can be used to
monitor a large number of IPMI interfaces by passing the target
parameter to
a scrape.
The exporter relies on tools from the FreeIPMI suite for the actual IPMI implementation.
For most use-cases, simply download the the latest release.
You need a Go development environment. Then, simply run make
to build the
executable:
make
This uses the common prometheus tooling to build and run some tests.
Alternatively, you can use the standard Go tooling, which will install the
executable in $GOPATH/bin
:
go get github.com/soundcloud/ipmi_exporter
You can build a Docker container with the included docker
make target:
make docker
This will not even require Go tooling on the host. See the included docker compose example for how to use the resulting container.
A minimal invocation looks like this:
./ipmi_exporter
Supported parameters include:
web.listen-address
: the address/port to listen on (default:":9290"
)config.file
: path to the configuration file (default: none)freeipmi.path
: path to the FreeIPMI executables (default: rely on$PATH
)
For syntax and a complete list of available parameters, run:
./ipmi_exporter -h
Make sure you have the following tools from the FreeIPMI suite installed:
ipmimonitoring
/ipmi-sensors
ipmi-dcmi
ipmi-raw
bmc-info
ipmi-sel
ipmi-chassis
If you are running the exporter as unprivileged user, but need to execute the FreeIPMI tools as root, you can do the following:
- Add sudoers files to permit the following commands
ipmi-exporter ALL = NOPASSWD: /usr/sbin/ipmimonitoring,\ /usr/sbin/ipmi-sensors,\ /usr/sbin/ipmi-dcmi,\ /usr/sbin/ipmi-raw,\ /usr/sbin/bmc-info,\ /usr/sbin/ipmi-chassis,\ /usr/sbin/ipmi-sel
- In your module config, override the collector command with
sudo
for every collector you are using and add the actual command as custom argument. Example for the "ipmi" collector:See the last module in the example config.collector_cmd: ipmi: sudo custom_args: ipmi: - "ipmimonitoring"
NOTE: you should only use Docker for remote metrics.
See Building a Docker container and the example
docker-compose.yml
. Edit the ipmi_remote.yml
file to configure IPMI
credentials, then run with:
sudo docker-compose up -d
By default, the server will bind on 0.0.0.0:9290
.
The configuration document describes both the configuration of the IPMI exporter itself as well as providing some guidance for configuring the Prometheus server to scrape it.
For a description of the metrics that this exporter provides, see the metrics document.