OhmGraphite takes the hard work of extracting hardware sensors from Open Hardware Monitor (technically LibreHardwareMonitor for most up to date hardware) and exports the data in a graphite (or InfluxdDB) compatible format. OhmGraphite is for those missing any of the following in Grafana or (other time series UI):
- Breakdown of GPU utilization
- Fan speed
- Temperature for hard drives, CPU cores, GPU, Motherboard
- Voltage readings
- People who are familiar with Graphite / InfluxDB / Grafana and may have an instance running on their home or cloud server. If you're not familiar with those applications, it may be overwhelming to setup and maintain them. If you're just looking for a UI for hardware sensors, I'd recommend HWINFO
- People who have administrative privileges
- People who know how to execute commands on Windows Command Prompt or other terminal
- People who like lightweight (8MB of RAM and neglible CPU usage), portable (can run off usb), and straightforward applications
OhmGraphite functions as a console app (cross platform) or a Windows service that periodically polls the hardware. My recommendation is that even though OhmGraphite can be run via Mono / Docker, many hardware sensors aren't available in those modes.
I use this every day to create beautiful dashboards. Keep in mind, Open Hardware Monitor supported components will determine what metrics are available. Below are graphs / stats made with OhmGraphite (couple of the panels are complemented with telegraf as demonstrated in Monitoring Windows system metrics with grafana)
- Create a directory that will be the home base for OhmGraphite (I use C:\Apps\OhmGraphite).
- Download the latest zip and extract to our directory.
- Update app configuration (located at
OhmGraphite.exe.config
) using either the Graphite config or InfluxDB config - This config can be updated in the future, but will require a restart of the app for effect.
- The app can be ran interactively by executing
.\OhmGraphite.exe run
. Executing as administrator will most likely increase the number of sensors found (OhmGraphite will log how many sensors are found). - To install the app
.\OhmGraphite.exe install
. The command will install OhmGraphite as a Windows service (so you can manage it with your favorite powershell commands orservices.msc
) - To start the app after installation:
.\OhmGraphite.exe start
or your favorite Windows service management tool
The config below polls our hardware every 5
seconds and sends the results to a graphite server listening on localhost:2003
.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="host" value="localhost" />
<add key="port" value="2003" />
<add key="interval" value="5" />
<add key="tags" value="false" />
</appSettings>
</configuration>
Starting with 1.1.0, Graphite supports tags (similar to InfluxDB's tags). When enabled in OhmGraphite the data format switches from <name> <value> <timestamp>
to <name>;tag1=a;tag2=b <value> <timestamp>
. Since tags are such a new feature, OhmGraphite has it disabled by default to prevent cumbersome usage with Graphite 0.9 and 1.0 installations.
Examples of types of tags used (same for InfluxDB):
- sensor_type: temperature, load, watts, rpms
- hardware_type: cpu, gpu, hdd
- host: my-pc
- app: ohm
- hardware: Nvidia GTX 970, Intel i7 6700k
- raw_name (sensor name): CPU DRAM, CPU graphics
For any serious interest in tags, make sure to use external db like postgres, mysql, or redis, as sqlite won't cut it.
Graphite is the default export style, but if you're an InfluxDB user you can change the type
to influxdb
and fill out InfluxDB specific options:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="type" value="influxdb" />
<add key="interval" value="5" />
<add key="influx_address" value="http://localhost:8086" />
<add key="influx_db" value="mydb" />
<!--
<add key="influx_user" value="myuser" />
<add key="influx_password" value="mypassword" />
<add key="interval" value="5" />
-->
</appSettings>
</configuration>
- Stop OhmGraphite service
.\OhmGraphite.exe stop
- Unzip latest release and copy
OhmGraphite.exe
to your installation directory. - Start OhmGraphite service
.\OhmGraphite.exe start
- Stop OhmGraphite service
.\OhmGraphite.exe stop
- Run uninstall command
.\OhmGraphite.exe uninstall
Since the full gambit of metrics aren't available in a Docker container, I've refrained from putting the project on docker hub lest it misleads people to think otherwise.
docker build -t nickbabcock/ohm-graphite .
docker run -v $PWD/app.config:/opt/OhmGraphite/OhmGraphite.exe.config:ro nickbabcock/ohm-graphite
app.config
is in the same format as the above configuration.