add fast ilo exporter project

This commit is contained in:
Benjamin Wiegand 2024-09-07 12:27:36 -07:00
parent 3bc7bb3e38
commit e470c4b6eb
9 changed files with 24 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
www/img/ilo-drives.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
www/img/ilo-overview.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 KiB

View File

@ -71,6 +71,30 @@
<small>click image to view in full resolution</small>
</div>
<div class="project sub-section">
<h3>Fast ILO Exporter <small>(2024)</small></h3>
<p>Uses SNMP instead of HTTP when possible to fetch metrics like temperature, fan speed, power draw, drive status, memory status, health, etc. from the ILO controller of an HP server, and exports them to Prometheus. It is significantly faster (15 seconds vs 1 minute) than the pre-existing solutions I tried which only use the slower HTTP API.</p>
<details>
<summary>More details</summary>
<p>
&emsp;&emsp;Fast ILO Exporter is a quickly thrown together Python project that I made over the course of a few days to export metrics like temperature, fan speed, power draw, drive status, memory status, health, and more from my HP server with an ILO4 controller. I built it after finding out that all the pre-existing solutions used the ILO's HTTP API and were extremely slow, requiring scrape intervals ranging from 1-5 minutes. For my purposes, such a delay is not satisfactory.
</p>
<p>
&emsp;&emsp;My implementation uses SNMP to grab most of this information, which ends up being significantly faster, easily achieving the 15 second scrape interval that I was after. The exporter also optionally fetches some minimal information not available over SNMP using the HTTP API, and maps it with the values received over SNMP. Even with all the HTTP functions enabled, it's still able to achieve my 15 second scrape interval since it only has to make 2 HTTP requests.
</p>
<p>
&emsp;&emsp;I also took the time to make this project publicly available too. You can view the source code <a href="https://github.com/Benjamin-Wiegand/ilo_exporter" target="_blank">on GitHub</a> or <a href="https://git.wiegand.pw/ben/fast_ilo_exporter" target="_blank">my personal git server</a>.
</p>
</details>
<div class="double-screenshot">
<a target="_blank" href="/img/ilo-overview.jpg"><img src="/img/ilo-overview-thumb.webp" alt="overview of my ILO dashboard in grafana"></a>
<a target="_blank" href="/img/ilo-temperatures.jpg"><img src="/img/ilo-temperatures-thumb.webp" alt="temperature sensor data shown in my ILO dashboard in grafana"></a>
<a target="_blank" href="/img/ilo-drives.jpg"><img src="/img/ilo-drives-thumb.webp" alt="drive health, status, and temperature shown in my ILO dashboard in grafana"></a>
<a target="_blank" href="/img/ilo-fan-and-cpu-info.jpg"><img src="/img/ilo-fan-and-cpu-info-thumb.webp" alt="fan speed, fan health, fan status, and cpu status shown in my ILO dashboard in grafana"></a>
</div>
<small>click image to view in full resolution</small>
</div>
<div class="project sub-section">
<h3>SMBus MITM <small>(2023/2024)</small></h3>
<p>Uses a microcontroller to intercept laptop battery communications, providing additional information regarding battery health and maintenance.</p>