ipmi_sensor

package
v1.33.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 9, 2024 License: MIT Imports: 18 Imported by: 14

README

IPMI Sensor Input Plugin

Get bare metal metrics using the command line utility ipmitool.

If no servers are specified, the plugin will query the local machine sensor stats via the following command:

ipmitool sdr

or with the version 2 schema:

ipmitool sdr elist

When one or more servers are specified, the plugin will use the following command to collect remote host sensor stats:

ipmitool -I lan -H SERVER -U USERID -P PASSW0RD sdr

Any of the following parameters will be added to the aforementioned query if they're configured:

-y hex_key -L privilege

Global configuration options

In addition to the plugin-specific configuration settings, plugins support additional global and plugin configuration settings. These settings are used to modify metrics, tags, and field or create aliases and configure ordering, etc. See the CONFIGURATION.md for more details.

Configuration

# Read metrics from the bare metal servers via IPMI
[[inputs.ipmi_sensor]]
  ## Specify the path to the ipmitool executable
  # path = "/usr/bin/ipmitool"

  ## Use sudo
  ## Setting 'use_sudo' to true will make use of sudo to run ipmitool.
  ## Sudo must be configured to allow the telegraf user to run ipmitool
  ## without a password.
  # use_sudo = false

  ## Servers
  ## Specify one or more servers via a url. If no servers are specified, local
  ## machine sensor stats will be queried. Uses the format:
  ##  [username[:password]@][protocol[(address)]]
  ##  e.g. root:passwd@lan(127.0.0.1)
  # servers = ["USERID:PASSW0RD@lan(192.168.1.1)"]

  ## Session privilege level
  ## Choose from: CALLBACK, USER, OPERATOR, ADMINISTRATOR
  # privilege = "ADMINISTRATOR"

  ## Timeout
  ## Timeout for the ipmitool command to complete.
  # timeout = "20s"

  ## Metric schema version
  ## See the plugin readme for more information on schema versioning.
  # metric_version = 1

  ## Sensors to collect
  ## Choose from:
  ##   * sdr: default, collects sensor data records
  ##   * chassis_power_status: collects the power status of the chassis
  ##   * dcmi_power_reading: collects the power readings from the Data Center Management Interface
  # sensors = ["sdr"]

  ## Hex key
  ## Optionally provide the hex key for the IMPI connection.
  # hex_key = ""

  ## Cache
  ## If ipmitool should use a cache
  ## Using a cache can speed up collection times depending on your device.
  # use_cache = false

  ## Path to the ipmitools cache file (defaults to OS temp dir)
  ## The provided path must exist and must be writable
  # cache_path = ""

Sensors

By default the plugin collects data via the sdr command and returns those values. However, there are additonal sensor options that be call on:

  • chassis_power_status - returns 0 or 1 depending on the output of chassis power status
  • dcmi_power_reading - Returns the watt values from dcmi power reading

These sensor options are not affected by the metric version.

Metrics

Version 1 schema:

  • ipmi_sensor:
    • tags:
      • name
      • unit
      • host
      • server (only when retrieving stats from remote servers)
    • fields:
      • status (int, 1=ok status_code/0=anything else)
      • value (float)

Version 2 schema:

  • ipmi_sensor:
    • tags:
      • name
      • entity_id (can help uniquify duplicate names)
      • status_code (two letter code from IPMI documentation)
      • status_desc (extended status description field)
      • unit (only on analog values)
      • host
      • server (only when retrieving stats from remote)
    • fields:
      • value (float)
Permissions

When gathering from the local system, Telegraf will need permission to the ipmi device node. When using udev you can create the device node giving rw permissions to the telegraf user by adding the following rule to /etc/udev/rules.d/52-telegraf-ipmi.rules:

KERNEL=="ipmi*", MODE="660", GROUP="telegraf"

Alternatively, it is possible to use sudo. You will need the following in your telegraf config:

[[inputs.ipmi_sensor]]
  use_sudo = true

You will also need to update your sudoers file:

$ visudo
# Add the following line:
Cmnd_Alias IPMITOOL = /usr/bin/ipmitool *
telegraf  ALL=(root) NOPASSWD: IPMITOOL
Defaults!IPMITOOL !logfile, !syslog, !pam_session

Example Output

Version 1 Schema

When retrieving stats from a remote server:

ipmi_sensor,server=10.20.2.203,name=uid_light value=0,status=1i 1517125513000000000
ipmi_sensor,server=10.20.2.203,name=sys._health_led status=1i,value=0 1517125513000000000
ipmi_sensor,server=10.20.2.203,name=power_supply_1,unit=watts status=1i,value=110 1517125513000000000
ipmi_sensor,server=10.20.2.203,name=power_supply_2,unit=watts status=1i,value=120 1517125513000000000
ipmi_sensor,server=10.20.2.203,name=power_supplies value=0,status=1i 1517125513000000000
ipmi_sensor,server=10.20.2.203,name=fan_1,unit=percent status=1i,value=43.12 1517125513000000000

When retrieving stats from the local machine (no server specified):

ipmi_sensor,name=uid_light value=0,status=1i 1517125513000000000
ipmi_sensor,name=sys._health_led status=1i,value=0 1517125513000000000
ipmi_sensor,name=power_supply_1,unit=watts status=1i,value=110 1517125513000000000
ipmi_sensor,name=power_supply_2,unit=watts status=1i,value=120 1517125513000000000
ipmi_sensor,name=power_supplies value=0,status=1i 1517125513000000000
ipmi_sensor,name=fan_1,unit=percent status=1i,value=43.12 1517125513000000000
Version 2 Schema

When retrieving stats from the local machine (no server specified):

ipmi_sensor,name=uid_light,entity_id=23.1,status_code=ok,status_desc=ok value=0 1517125474000000000
ipmi_sensor,name=sys._health_led,entity_id=23.2,status_code=ok,status_desc=ok value=0 1517125474000000000
ipmi_sensor,entity_id=10.1,name=power_supply_1,status_code=ok,status_desc=presence_detected,unit=watts value=110 1517125474000000000
ipmi_sensor,name=power_supply_2,entity_id=10.2,status_code=ok,unit=watts,status_desc=presence_detected value=125 1517125474000000000
ipmi_sensor,name=power_supplies,entity_id=10.3,status_code=ok,status_desc=fully_redundant value=0 1517125474000000000
ipmi_sensor,entity_id=7.1,name=fan_1,status_code=ok,status_desc=transition_to_running,unit=percent value=43.12 1517125474000000000

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Ipmi

type Ipmi struct {
	Path          string          `toml:"path"`
	Privilege     string          `toml:"privilege"`
	HexKey        string          `toml:"hex_key"`
	Servers       []string        `toml:"servers"`
	Sensors       []string        `toml:"sensors"`
	Timeout       config.Duration `toml:"timeout"`
	MetricVersion int             `toml:"metric_version"`
	UseSudo       bool            `toml:"use_sudo"`
	UseCache      bool            `toml:"use_cache"`
	CachePath     string          `toml:"cache_path"`
	Log           telegraf.Logger `toml:"-"`
}

func (*Ipmi) Gather

func (m *Ipmi) Gather(acc telegraf.Accumulator) error

func (*Ipmi) Init added in v1.23.0

func (m *Ipmi) Init() error

func (*Ipmi) SampleConfig

func (*Ipmi) SampleConfig() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL