Expose hardware sensor data to Graphite / InfluxDB / Prometheus / Postgres / Timescaledb
OTHER License
Bot releases are hidden (Show)
Published by nickbabcock over 1 year ago
This release is backwards compatible. For those interested in Graphite tags -- they are not backwards compatible! While tagged metrics will have the same name as pre-tagged OhmGraphite metrics, Graphite will treat them separately. So one can either merge these metrics or start over.
Published by nickbabcock over 3 years ago
Published by nickbabcock almost 4 years ago
If polling for sensors + writing to graphite takes longer than the
configured interval, then it is possible for two threads to be writing
data to the same graphite connection. This will cause corrupted data to
be sent to graphite. This has been fixed.
Published by nickbabcock over 4 years ago
Two highlights from this release:
There may be a sensor that is faulty on a given machine. Maybe it reports negative temperatures. This can throw off monitoring software or make it harder to maintain with all the special cases. OhmGraphite allows one to exclude a sensor from being exported by modifying the OhmGraphite config and adding the /hidden
suffix to the sensor id like so:
<add key="/lpc/nct6792d/temperature/1/hidden" />
LibreHardwareMonitor has received a significant amount of work in the past month. The most jarring change will probably be that several hardware types (Aquacomputer, AeroCool, Heatmaster, and TBalancer) have been consolidated into a single hardware type (Cooler). This is will be an inconvenience to users relying on those metric names.
Another inconvenience is that GPU sensor identifiers have also been updated, so depending on the dashboard, GPU graphs may need to be updated to reference this new identifier.
In the end, for my own personal dashboards which are derived from the sample ones listed in the readme, the only change I've noticed is that the CPU bus speed is reported alongside CPU frequencies.
Published by nickbabcock over 4 years ago
A very minor release, but since the underlying sensor library has been updated in the meantime, the usual caveats regarding new / renamed metrics apply, though in this case most users shouldn't notice anything different. The most impactful change in these last few days is the bugfix in detection of NVMe drives. While some could be detected perfectly fine (like a HP EX920), others would only be detected as a generic hard drive (like the newer HP EX950). This release should now detect more NVMe drives than previously, and as a result more metrics will be available.
Published by nickbabcock over 4 years ago
A few features in this update:
Aliasing was introduced as it is possible that the sensor names exposed through OhmGraphite are not descriptive enough. For instance, "Fan #2" could have RPM exposed, but you know that a more descriptive name would be "CPU Fan". To have OhmGraphite export the sensor under the "CPU Fan" name, one will need to add the mapping from sensor id (+ /name
suffix) to the desired name like so:
<add key="/lpc/nct6792d/fan/1/name" value="CPU Fan" />
There are several ways to determine the sensor id of a metric:
LibreHardwareMonitor.config
into OhmGraphite.exe.config
.OhmGraphite.log
for the sensor's name that you'd like to rename (in the example, I'd search for "Fan #2"):The underlying sensor library has been updated, so as always there may be new
sensors, renames, and bugfixes.
Some updates:
For my personal dashboard:
NVMe drives expose SMART attributes but not all are transmitted. In this
update, OhmGraphite is now exposing the following additional NVMe SMART
sensors:
This doesn't cover all NVMe SMART attributes, so if there is one missing feel
free to raise an issue.
Published by nickbabcock over 4 years ago
This is a smaller update to the sensor library: LibreHardwareMonitor, but this
is still being denoted in OhmGraphite as a minor version bump to communicate
that metric values may have changed. Here are the changes to the sensor
library.
This had the following effects on a personal dashboard (AMD 2700, gtx 1070, m.2, asrock itx):
The only other change for this release is a internal dependency bump to the Postgres / TimecaleDB driver that ensures better stability.
You may have missed it, but there are now starter dashboards for visualizing OhmGraphite data.
These are designed to jump start your own dashboard!
Published by nickbabcock almost 5 years ago
Big update to the underlying LibreHardwareMonitor library, I've tried to
ensure that backwards compatibility is maintained in respect to the
metric names that are generated; however, there some breakages may slip
through. For instance, I believe that the CPU DRAM power sensor for
intel chips have been relabed to "CPU Memory", so one should double
check and adjust their dashboards as needed.
Other changes to LibreHardwareMonitor:
Published by nickbabcock about 5 years ago
ohm_gpunvidia_percent
has been split into ohm_gpunvidia_control_percent
and ohm_gpunvidia_load_percent
.name_lookup
in the config (eg: <add key="name_lookup" value="my-cool-machine" />
)Published by nickbabcock over 5 years ago
Published by nickbabcock over 5 years ago
app
metric label has been removed in favor of a metric namespace prefix of "ohm"hardware_type
metric label has been removed in favor of encapsulating it into the metric name (eg: "cpu", "nic").sensor_index
metric label has been removed. This label proved superfluous as every sensor can be uniquely identified by it's name.host
metric label has been removed: This falls in line with other prometheus exporters like node_exporter, which does not export the host as a label.DEBUG
before being discarded.Published by nickbabcock over 5 years ago
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="name_lookup" value="dns" />
</appSettings>
</configuration>
(If you opt into this configuration, expect metric names / paths to change (eg: if the metric host was previously TINI
, it may change to Tini
) (ref: https://github.com/nickbabcock/OhmGraphite/issues/53))
Published by nickbabcock over 5 years ago
Bugfix release for our Prometheus users
Published by nickbabcock over 5 years ago
Published by nickbabcock over 5 years ago
Published by nickbabcock almost 6 years ago
Published by nickbabcock almost 6 years ago
Bugfix for the postgres / timescaledb users who have experienced the rare bug of "26000: prepared statement "_p1" does not exist" during database operations. It is unknown whether this is a bug in the C# postgres driver or intended behavior. Regardless, OhmGraphite would enter an infinite loop trying to insert sensor data. The fix is to now on db failure, in addition to re-instantiating a connection, to purge all persisted prepared statements.
Published by nickbabcock about 6 years ago
This is strictly a breaking change for TimescaleDB users (nothing else has changed). Previously OhmGraphite would create a schema and initialize the Timescale table. While convenient, creating tables, indices, etc automatically is not desirable for an application that could be installed on many client machines. In production, one may want to create indices on other columns, omit an index on the host
column, or create custom constraints. OhmGraphite shouldn't dictate everything. In fact, OhmGraphite should be able to function with a minimal amount of permissions. That is why with the 0.7 release, automatic creation of tables, etc is opt-in via the new timescale_setup
option.
Recommendation: create a user that can only insert into the ohm_stats
table
CREATE USER ohm WITH PASSWORD 'xxx';
GRANT INSERT ON ohm_stats TO ohm;
Then initialize the ohm_stats
appropriately.
If one desires OhmGraphite to automatically setup the table structure then update the configuration to include timescale_setup
<add key="timescale_setup" value="true" />
A side benefit of this update is that OhmGraphite can now insert into traditional PostgreSQL databases.
Published by nickbabcock about 6 years ago
The big news for this release is TimescaleDB support, so OhmGraphite can now writes to a PostgreSQL database!
One can configure OhmGraphite to send to Timescale with the following (configuration values will differ depending on your environment):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="type" value="timescale" />
<add key="timescale_connection" value="Host=vm-ubuntu;Username=postgres;Password=123456;Database=postgres" />
</appSettings>
</configuration>
OhmGraphite will create the following schema, so make sure the user connecting has appropriate permissions
CREATE TABLE IF NOT EXISTS ohm_stats (
time TIMESTAMPTZ NOT NULL,
host TEXT,
hardware TEXT,
hardware_type TEXT,
identifier TEXT,
sensor TEXT,
sensor_type TEXT,
sensor_index INT,
value REAL
);
SELECT create_hypertable('ohm_stats', 'time', if_not_exists => TRUE);
CREATE INDEX IF NOT EXISTS idx_ohm_host ON ohm_stats (host);
CREATE INDEX IF NOT EXISTS idx_ohm_identifier ON ohm_stats (identifier);
Currenlty the schema and the columns are not configurable.
All patch notes:
Published by nickbabcock about 6 years ago