a3d8f40c18
Bear with me, while I figure out the new release process here :) |
||
---|---|---|
.circleci | ||
.github/workflows | ||
docs | ||
freeipmi | ||
.gitignore | ||
.promu.yml | ||
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 | ||
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.
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.
Exported data
For a description of the metrics that this exporter provides, see the metrics document.