Go to file
2025-02-12 20:45:36 +01:00
.circleci Replace codespell with misspell 2025-01-30 11:47:22 +01:00
.github Update common Prometheus files 2025-02-08 17:49:20 +00:00
contrib/rpm Refactor rpm build process 2022-12-02 14:19:36 +01:00
docs docs/metrics: mention new build info metric 2025-02-12 20:41:29 +01:00
freeipmi Fixup revive linter issues. 2025-02-05 17:22:13 +01:00
.gitignore add rpm build via docker 2022-11-24 10:42:43 +01:00
.golangci.yml Enable revive linter 2025-02-05 16:48:24 +01:00
.promu.yml chore!: adopt slog, drop go-kit/log 2024-10-17 20:28:12 -04:00
.yamllint Update common Prometheus files 2024-12-05 17:48:40 +00:00
CHANGELOG.md Prepare release of version 1.10.0 2025-02-12 20:45:36 +01:00
CODE_OF_CONDUCT.md Update common Prometheus files 2022-05-08 19:51:15 +00:00
collector_bmc_native.go Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
collector_bmc_watchdog_native.go Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
collector_bmc_watchdog.go chore!: adopt slog, drop go-kit/log 2024-10-17 20:28:12 -04:00
collector_bmc.go Fixup revive linter issues. 2025-02-05 17:22:13 +01:00
collector_chassis_native.go Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
collector_chassis.go chore!: adopt slog, drop go-kit/log 2024-10-17 20:28:12 -04:00
collector_dcmi_native.go Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
collector_dcmi.go chore!: adopt slog, drop go-kit/log 2024-10-17 20:28:12 -04:00
collector_ipmi_native.go Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
collector_ipmi.go Fixup revive linter issues. 2025-02-05 17:22:13 +01:00
collector_sel_events_native.go Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
collector_sel_events.go Fixup revive linter issues. 2025-02-05 17:22:13 +01:00
collector_sel_native.go Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
collector_sel.go chore!: adopt slog, drop go-kit/log 2024-10-17 20:28:12 -04:00
collector_sm_lan_mode_native.go Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
collector_sm_lan_mode.go chore!: adopt slog, drop go-kit/log 2024-10-17 20:28:12 -04:00
collector.go Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
config.go Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
CONTRIBUTING.md Update for Prometheus Community 2021-09-21 13:42:22 +02:00
docker-compose.yml Fix docker-compose command 2023-03-14 11:37:13 +01:00
Dockerfile fix: bring back aarch64 builds 2024-03-13 13:33:05 -04:00
go.mod Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
go.sum Implement native collectors with go-ipmi 2025-02-06 10:26:48 +01:00
ipmi_local_sudo.yml Refactor and improve documentation 2024-10-18 10:09:07 +02:00
ipmi_local.yml Refactor and improve documentation 2024-10-18 10:09:07 +02:00
ipmi_remote.yml Refactor and improve documentation 2024-10-18 10:09:07 +02:00
LICENSE Update for Prometheus Community 2021-09-21 13:42:22 +02:00
main.go Merge pull request #240 from antondollmaier/master 2025-02-12 20:29:45 +01:00
MAINTAINERS.md Add MAINTAINERS.md 2024-12-05 12:24:32 +01:00
Makefile fix: bring back aarch64 builds 2024-03-13 13:33:05 -04:00
Makefile.common Update common Prometheus files 2025-01-15 17:50:50 +00:00
NOTICE Update for Prometheus Community 2021-09-21 13:42:22 +02:00
README.md README: add note about native IPMI mode 2025-02-06 10:26:48 +01:00
SECURITY.md Update common Prometheus files 2022-05-08 19:51:15 +00:00
VERSION Prepare release of version 1.10.0 2025-02-12 20:45:36 +01: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, implementing the multi-target exporter pattern. If you plan to use the latter, please read the guide Understanding and using the multi-target exporter pattern to get the general idea about the configuration.

By default, the exporter relies on tools from the FreeIPMI suite for the actual IPMI implementation.

There is, however, experimental support for using the Go-native go-ipmi library instead of FreeIPMI. Feedback to help mature this support would be greatly appreciated. Please read the native IPMI documentation if you are interested.

Installation

For most use-cases, simply download the the latest release.

For Kubernets, you can use the community-maintained Helm chart.

Pre-built container images are available on dockerhub and quay.io.

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 install github.com/prometheus-community/ipmi_exporter@latest

Building a container image

You can build a container image with the included docker make target:

make promu
promu crossbuild -p linux/amd64 -p linux/arm64
make docker

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

When running a container image, make sure to:

  • set config.file to where the config file is mounted
  • expose the default port (9290) or set web.listen-address accordingly

NOTE: you should only use containers for collecting remote metrics.

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.

Privileges

Collecting host-local IPMI metrics requires root privileges. See privileges document for how to avoid running the exporter as root.