Getting temperature readings from your ESXi host in Observium

It always irked me that I was not able to read the temperature of my ESXi host. Lately I renovated a storage space underneath my stairs and moved all my infrastructure to it. Since there is a lot of equipment in the same place and probably could get really hot unless I calibrate my fans accordingly I decided to give it one more try.

This time I succeeded, and here’s how to do it.

This guide probably works at least partly for LibreNMS too.

Intalling ipmitool

First things first. Make sure that you have ipmitool installed, otherwise install it:

apt-get install ipmitool

Create a user via your IPMI web interface

Verify that you have a user set up with the correct permissions (“User” was enough in my case).

Test the IPMI interface with ipmitool

Then you can test the connection to your IPMI interface with the following command:

ipmitool -H 192.168.1.50 -L USER -U myuser -P mypassword -I lanplus sdr elist full

What this does is to show the sensor of your chassis using the protocol support used by an IPMI v2.0 RMCP+ LAN Interface.

If this does not work, verify that the port of your IPMI API is 623 (UDP). You can also try a different interface from the following list:

Interfaces:
        open          Linux OpenIPMI Interface [default]
        imb           Intel IMB Interface
        lan           IPMI v1.5 LAN Interface
        lanplus       IPMI v2.0 RMCP+ LAN Interface
        free          FreeIPMI IPMI Interface
        serial-terminal  Serial Interface, Terminal Mode
        serial-basic  Serial Interface, Basic Mode
        usb           IPMI USB Interface(OEM Interface for AMI Devices)

Configuring Observium

Navigate to your ESXi server in Observium, click on the settings button, and the “Properties”. Here, go to IPMI and enter the settings used above.

Troubleshooting Observium

In case you still do not get temperature readings in Observium there is one more trick that you can try.

/opt/observium/poller.php -d -h 192.168.1.50 -m ipmi

This command will show you exactly which command Observium is using. Compare the command with your successful attempt from the steps above and attempt to change accordingly.

TLDR;

My mistake was that the IPMI “API interface”  does not necessarily listen to the same port as the web interface. In my case it was listening on port 623 (UDP).

What was yours?