• Stars
    star
    459
  • Rank 94,774 (Top 2 %)
  • Language
    Go
  • License
    MIT License
  • Created over 6 years ago
  • Updated 20 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Remote IPMI exporter for Prometheus

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 a RPM Package

See how to build a RPM package.

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.

More Repositories

1

helm-charts

Prometheus community Helm charts
Mustache
4,981
star
2

windows_exporter

Prometheus exporter for Windows machines
Go
2,858
star
3

postgres_exporter

A PostgreSQL metric exporter for Prometheus
Go
2,720
star
4

elasticsearch_exporter

Elasticsearch stats exporter for Prometheus
Go
1,910
star
5

PushProx

Proxy to allow Prometheus to scrape through NAT etc.
Go
715
star
6

json_exporter

A prometheus exporter which scrapes remote JSON by JSONPath
Go
631
star
7

node-exporter-textfile-collector-scripts

Scripts for node-exporter's textfile collector
Python
490
star
8

avalanche

Prometheus/OpenMetrics endpoint series generator for load testing.
Go
393
star
9

ansible

Ansible Collection for Prometheus
Python
357
star
10

jiralert

JIRA integration for Prometheus Alertmanager
Go
333
star
11

pro-bing

A library for creating continuous probers
Go
317
star
12

bind_exporter

Prometheus exporter for BIND
Go
299
star
13

smartctl_exporter

Export smartctl statistics to prometheus
Go
289
star
14

systemd_exporter

Exporter for systemd unit metrics
Go
283
star
15

prom-label-proxy

A proxy that enforces a given label in a given PromQL query.
Go
262
star
16

stackdriver_exporter

Google Stackdriver Prometheus exporter
Go
254
star
17

promql-langserver

PromQL language server
Go
176
star
18

prometheus-playground

Turnkey sandbox projects demonstrating a wide variety of Prometheus use cases
Go
164
star
19

pgbouncer_exporter

Prometheus exporter for PgBouncer
Go
138
star
20

ecs_exporter

Prometheus exporter for Amazon Elastic Container Service (ECS)
Go
78
star
21

vscode-promql

This is supposed to become a PromQL extension for vs code.
TypeScript
52
star
22

monaco-promql

PromQL support for the Monaco code editor
TypeScript
31
star
23

community

Prometheus & The Ecosystem Community Meeting Information
20
star
24

prometheus-community

13
star
25

snmp

Tools and configurations for translating SNMP into Prometheus
11
star
26

kitefactory

Makefile
3
star
27

sublimelsp-promql

PromQL support for Sublime LSP plugin, using promql-langserver
Python
2
star