Go to file
2022-11-24 11:31:54 +01:00
.circleci Update common Prometheus files 2022-05-08 19:51:15 +00:00
.github Update common Prometheus files (#113) 2022-06-14 00:30:27 +02:00
docker add rpm build via docker 2022-11-24 10:42:43 +01:00
docs Add support for fan sensors which report as a percentage 2021-11-14 10:45:57 +00:00
freeipmi Fix spelling 2022-10-31 09:53:34 +01:00
rpm add rpm build via docker 2022-11-24 10:42:43 +01:00
scripts Add TLS/auth config 2022-02-24 13:03:23 +01:00
sudoers add rpm build via docker 2022-11-24 10:42:43 +01:00
systemd add rpm build via docker 2022-11-24 10:42:43 +01:00
.gitignore add rpm build via docker 2022-11-24 10:42:43 +01:00
.golangci.yml Add TLS/auth config 2022-02-24 13:03:23 +01:00
.promu.yml Update build 2022-05-06 15:12:43 +02:00
.yamllint Update build 2022-05-06 15:12:43 +02:00
CHANGELOG.md Prepare release version 1.6.1 2022-06-17 11:52:20 +02:00
CODE_OF_CONDUCT.md Update common Prometheus files 2022-05-08 19:51:15 +00:00
collector_bmc.go Add TLS/auth config 2022-02-24 13:03:23 +01:00
collector_chassis.go Add TLS/auth config 2022-02-24 13:03:23 +01:00
collector_dcmi.go Add TLS/auth config 2022-02-24 13:03:23 +01:00
collector_ipmi.go Add --output-sensor-state argument to ipmi-sensors command 2022-06-08 16:29:21 +02:00
collector_sel.go Add TLS/auth config 2022-02-24 13:03:23 +01:00
collector_sm_lan_mode.go Fix spelling 2022-10-31 09:53:34 +01:00
collector.go Add TLS/auth config 2022-02-24 13:03:23 +01:00
config.go Add TLS/auth config 2022-02-24 13:03:23 +01:00
CONTRIBUTING.md Update for Prometheus Community 2021-09-21 13:42:22 +02:00
docker-compose.yml Added Dockerfile and docker-compose.yml 2019-10-11 22:38:21 +03:00
Dockerfile Base Docker image on Debian slim (Bullseye) 2022-03-14 10:24:58 +01:00
go.mod Bump github.com/prometheus/client_golang from 1.12.2 to 1.13.0 2022-09-01 08:08:50 +00:00
go.sum Bump github.com/prometheus/client_golang from 1.12.2 to 1.13.0 2022-09-01 08:08:50 +00:00
ipmi_local.yml Misc doc fixes for README and example configs 2020-07-26 17:16:30 +02:00
ipmi_remote.yml doc: timeout must be greater than 1000 2021-08-04 16:46:08 +02:00
LICENSE Update for Prometheus Community 2021-09-21 13:42:22 +02:00
main.go Add TLS/auth config 2022-02-24 13:03:23 +01:00
Makefile Base Docker image on Debian slim (Bullseye) 2022-03-14 10:24:58 +01:00
Makefile.common Update common Prometheus files 2022-06-14 19:51:59 +00:00
NOTICE Update for Prometheus Community 2021-09-21 13:42:22 +02:00
prometheus-ipmi-exporter.yml add rpm build via docker 2022-11-24 10:42:43 +01:00
README.md Update README.md for Building RPM Package 2022-11-24 11:31:54 +01:00
SECURITY.md Update common Prometheus files 2022-05-08 19:51:15 +00:00
VERSION Prepare release version 1.6.1 2022-06-17 11:52:20 +02:00

Prometheus IPMI Exporter

Build Status

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:

  1. 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
    
  2. 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.

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.