.circleci | ||
.github | ||
docker | ||
docs | ||
freeipmi | ||
rpm | ||
scripts | ||
sudoers | ||
systemd | ||
.gitignore | ||
.golangci.yml | ||
.promu.yml | ||
.yamllint | ||
CHANGELOG.md | ||
CODE_OF_CONDUCT.md | ||
collector_bmc.go | ||
collector_chassis.go | ||
collector_dcmi.go | ||
collector_ipmi.go | ||
collector_sel.go | ||
collector_sm_lan_mode.go | ||
collector.go | ||
config.go | ||
CONTRIBUTING.md | ||
docker-compose.yml | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
ipmi_local.yml | ||
ipmi_remote.yml | ||
LICENSE | ||
main.go | ||
Makefile | ||
Makefile.common | ||
NOTICE | ||
prometheus-ipmi-exporter.yml | ||
README.md | ||
SECURITY.md | ||
VERSION |
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/prometheus-community/ipmi_exporter
Building a Docker container
You can build a Docker container with the included docker
make target:
make promu
promu crossbuild -p linux/amd64 -p linux/arm64
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.
Building RPM Package
The RPM package build targets to run the exporter locally with sudo permissions to expose most metrics.
Directly on CentOS with rpmbuild
Build script is located in rpm/build.sh
.
The RPM package will be available under $HOME/rpmbuild/
.
Docker Build Container
The build container uses CentOS7.
# from repo base dir run
sudo docker build -t rpm_dock -f docker/RPM-Dockerfile .
sudo docker run -v $PWD:/rpm -it rpm_dock
The RPM package will be available under build/
.
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:
See the last module in the example config.collector_cmd: ipmi: sudo custom_args: ipmi: - "ipmimonitoring"
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.
TLS and basic authentication
The IPMI Exporter supports TLS and basic authentication.
To use TLS and/or basic authentication, you need to pass a configuration file
using the --web.config.file
parameter. The format of the file is described
in the exporter-toolkit repository.
Exported data
For a description of the metrics that this exporter provides, see the metrics document.