README.md
author Mahlon E. Smith <mahlon@laika.com>
Wed, 14 Feb 2018 15:41:11 -0800
changeset 5 a1276c3d39eb
parent 3 f34855556f4d
child 10 252cdb26f76b
permissions -rw-r--r--
Multiple changes. - Colorize output by default, add option to disable. - Time parsing per incoming client. - Add a "quiet" mode. - Allow binding to a specific IP address. - Allow debug mode to be set without recompiling. - Alter thread wrapper for reporting and config passing. - Fix file descriptor leak with client connections. - Wait for current threads to finish before exiting.


Netdata-TSRelay
===============

What's this?
------------

This program is designed to accept JSON streams from
[Netdata](http://netdata.io) clients, and write metrics to a PostgreSQL table -
specifically, [Timescale](http://timescale.com) backed tables (though
that's not technically a requirement.)


Installation
------------

You'll need a working [Nim](http://nim-lang.org) build environment to
create the binary.

Simply run `make release` to produce the binary.  Put it wherever you
please.


Configuration
-------------

There are a few assumptions that should be satisfied before running
this.

### Database setup

You'll need to create the destination table.

```sql
CREATE TABLE netdata (
	time timestamptz default now() not null,
	host text not null,
	metrics jsonb default '{}'::jsonb not null
);
```

Index it however you please based on how you intend to query the data,
including JSON functional indexing, etc.  See PostgreSQL documentation
for details.

Strongly encouraged:  Promote this table to a Timescale "hypertable".
See Timescale docs for that, but a quick example to partition
automatically at weekly boundaries would look something like:

```sql
SELECT create_hypertable( 'netdata', 'time', chunk_time_interval => 604800000000 );
```



### Netdata

You'll likely want to pare down what netdata is sending.  Here's an
example configuration for `netdata.conf`:

```
[backend]
    hostname           = your-hostname
    enabled            = yes
    type               = json
    data source        = average
    destination        = machine-where-netdata-tsrelay-lives:14866
    prefix             = n
    update every       = 10
    buffer on failures = 6
    send charts matching = !cpu.cpu* !ipv6* !users* nfs.rpc net.* net_drops.* net_packets.* !system.interrupts* system.* disk.* disk_space.* disk_ops.* mem.*
```