Prometheus IPMI Exporter

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.
Installation
For most use-cases, simply download the the latest
release.
Building from source
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
Building a Docker container
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.
Running
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
Running as unprivileged user
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:
collector_cmd:
ipmi: sudo
custom_args:
ipmi:
- "ipmimonitoring"
See the last module in the example config.
Running in Docker
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.
Configuration
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.
Exported data
For a description of the metrics that this exporter provides, see the
metrics document.