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.