NAME

Measure::Everything::Adapter::InfluxDB::TCP - Send stats to Influx via TCP using Telegraf

VERSION

version 1.004

SYNOPSIS

Measure::Everything::Adapter->set( 'InfluxDB::TCP',
    host => 'localhost',   # default
    port => 8094,          # default
    precision => 'ms'      # default is ns (nanoseconds)
);

use Measure::Everything qw($stats);
$stats->write('metric', 1);

DESCRIPTION

Send stats via TCP to a Telegraf service, which will forward them to InfluxDB. No buffering whatsoever, so there is one TCP request per call to $stats->write. This might be a bad idea.

If TCP listener is not available when set is called, an error will be written via Log::Any. write will silently discard all metrics, no data will be sent to Telegraf / InfluxDB.

If a request fails no further error handling is done. The metric will be lost.

OPTIONS

Set these options when setting your adapter via Measure::Everything::Adapter->set

  • host

    Name of the host where your Telegraf is running. Default to localhost.

  • port

    Port your Telegraf is listening. Defaults to 8094.

  • precision

    A valid InfluxDB precision. Default to undef (i.e. nanoseconds). Do not set it if you're talking with Telegraf, as Telegraf will always interpret the timestamp as nanoseconds.

Handling server disconnect

Measure::Everything::Adapter::InfluxDB::TCP installs a local handler for SIGPIPE to handle a disconnect from the server. If the server goes away, InfluxDB::TCP will try to reconnect every time a stat is written. As of now (1.003), this behavior is hardcoded.

You might want to check out Measure::Everything::Adapter::InfluxDB::UDP for an even lossier, but more failure tolerant way to send your stats.

See also this blog post, where HJansen provided the correct solution to my problem. Nicholas Clark also pointed me in the right direction (in #Austria.pm)

Example

See "send_metrics.pl" in example for a working example.

AUTHOR

Thomas Klausner <domm@plix.at>

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Thomas Klausner.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.