Skip to content

Releases: nickbabcock/OhmGraphite

v0.8.3 - April 8th, 2019

09 Apr 01:10
Compare
Choose a tag to compare
  • Allow one to switch from sending NetBIOS machine name to sending internet host name to metric sink.
<?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: #53))

  • Improve postgres connection attempts in edge cases
  • Update internal dependencies:
    • Bump prometheus-net from 3.0.3 to 3.1.0 (no apparent changes for OhmGraphite)
    • Bump Npgsql from 4.0.4 to 4.0.5 (fixes bugs)
    • Bump NLog.Config from 4.5.11 to 4.6.2 (more logging configurations for those who want it)

v0.8.2 - February 25th, 2019

25 Feb 12:15
Compare
Choose a tag to compare

Bugfix release for our Prometheus users

  • Sanitize additional metric names for Prometheus (#43)
  • Bump prometheus-net from 3.0.1 to 3.0.3 for bugfixes

v0.8.1 - February 7th, 2019

07 Feb 13:29
Compare
Choose a tag to compare
  • Fix: graphite: remove NIC guids in squirrelly parentheses
  • Fix: graphite: when graphite tag functionality is enabled, format number with culture invariant
  • Internal dependency update:
    • Bump prometheus-net from 2.1.3 to 3.0.1

v0.8.0 - January 30th, 2019

31 Jan 00:41
Compare
Choose a tag to compare
  • Update LibreHardwareMonitor to 98969e
    • Add: Network (NIC) sensors (data downloaded, etc)
    • Add: AsRock B85M-DGS support for Voltage sensors
    • Add: Asus ROG Maximus Apex Mobo support
    • Add: Intel SSD Airflow temperature support
    • Add: Nuvoton NCT6798D support
    • Add: Z390 mobos and IT8688E chip support
    • Add: Nvidia power usage monitor via NVML (you'll need to install Nvidia's CUDA toolkit)
  • Internal dependency update:
    • Bump TopShelf from 4.1.0 to 4.2.0

v0.7.2 - December 31st, 2018

31 Dec 13:22
1a6970e
Compare
Choose a tag to compare
  • Bugfix for postgres / timescaledb users. This release eschews the asynchronous npgsql APIs in favor of the synchronous ones due to reliability issues.
  • Update Npgsql from 4.0.3 to 4.0.4

v0.7.1 - November 29th, 2018

30 Nov 01:41
Compare
Choose a tag to compare

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.

v0.7.0 - October 17th, 2018

17 Oct 22:04
Compare
Choose a tag to compare

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.

v0.6.0 - October 7th, 2018

07 Oct 19:13
Compare
Choose a tag to compare

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:

  • Add TimescaleDB support
  • Update inner dependencies:
    • Update Topshelf from 4.0.4 to 4.1.0
    • Update pometheus-net from 2.1.0 to 2.1.3
  • Switch packing executable from ILRepack to Costura, as ILRepack is unable to pack in Npgsql without type exceptions at runtime.

v0.5.0 - July 26th 2018

27 Jul 01:51
Compare
Choose a tag to compare
  • Add Prometheus support
    • OhmGraphite now requires .NET v4.6.1 (up from .NET v4.6). Most users should be unaffected by this change.
  • More metrics! OhmGraphite now takes advantage of metrics that the underlying hardware library detects at runtime.

v0.4.0 - July 15th 2018

15 Jul 22:38
Compare
Choose a tag to compare
  • Update LibreHardwareMonitor to 4652be0
    • Support for Ryzen 2000 series processors
  • As long as OhmGraphite can send to a given graphite endpoint, keep a persistent tcp connection alive. Previous behavior would open a connection every interval seconds. This technique should work for 99% of use cases, but when there are a limited number of ports open on the client load one can receive the error "Only one usage of each socket address (protocol/network address/port) is normally permitted". The new behavior will keep the same connection open until there is a failure, which will then trigger a reconnect.
  • Update internal dependencies
    • NLog (4.4.12) -> (4.5.6)
    • TopShelf (4.0.3) -> (4.0.4)