enable_send_metadata | **Optional.** Whether to send check metadata e.g. states, execution time, latency etc.
flush_interval | **Optional.** How long to buffer data points before transfering to InfluxDB. Defaults to `10s`.
flush_threshold | **Optional.** How many data points to buffer before forcing a transfer to InfluxDB. Defaults to `1024`.
- socket_timeout | **Optional.** How long to wait for InfluxDB to respond. Defaults to `5s`.
Note: If `flush_threshold` is set too low, this will always force the feature to flush all data
to InfluxDB. Experiment with the setting, if you are processing more than 1024 metrics per second
//TODO: Close the connection, if we keep it open.
}
-Stream::Ptr InfluxdbWriter::Connect(TcpSocket::Ptr& socket)
+Stream::Ptr InfluxdbWriter::Connect()
{
- socket = new TcpSocket();
+ TcpSocket::Ptr socket = new TcpSocket();
Log(LogNotice, "InfluxdbWriter")
<< "Reconnecting to InfluxDB on host '" << GetHost() << "' port '" << GetPort() << "'.";
String body = boost::algorithm::join(m_DataBuffer, "\n");
m_DataBuffer.clear();
- TcpSocket::Ptr socket;
- Stream::Ptr stream = Connect(socket);
+ Stream::Ptr stream = Connect();
if (!stream)
return;
HttpResponse resp(stream, req);
StreamReadContext context;
- struct timeval timeout = { GetSocketTimeout(), 0 };
-
- if (!socket->Poll(true, false, &timeout)) {
- Log(LogWarning, "InfluxdbWriter")
- << "Response timeout of TCP socket from host '" << GetHost() << "' port '" << GetPort() << "'.";
- return;
- }
-
try {
resp.Parse(context, true);
} catch (const std::exception& ex) {
static String EscapeKey(const String& str);
static String EscapeField(const String& str);
- Stream::Ptr Connect(TcpSocket::Ptr& socket);
+ Stream::Ptr Connect();
void AssertOnWorkQueue(void);
[config] int flush_threshold {
default {{{ return 1024; }}}
};
- [config] int socket_timeout {
- default {{{ return 5; }}}
- };
};
validator InfluxdbWriter {