@Override public void report(Measurement measurement) { logger.info(LOG_TEMPLATE, measurement.type().toString(), measurement.name().toUpperCase(), measurement.time(), measurement.getOrDefault(0d), measurement.tags().toString(), measurement.fields().toString()); }
private ByteBuffer lineProtocol(Measurement measurement) { try { final Point.Builder builder = Point.measurement(measurement.name()); builder.time(measurement.time(), measurement.timeUnit()); builder.tag(measurement.tags()); builder.tag("type", measurement.type().toString()); if (measurement.isSimple()) { builder.addField("value", measurement.getValue()); } for (Map.Entry<String, String> field : measurement.fields().entrySet()) { builder.addField(field.getKey(), field.getValue()); } Charset charset = StandardCharsets.UTF_8; CharsetEncoder encoder = charset.newEncoder(); return encoder.encode(CharBuffer.wrap(builder.build().lineProtocol().concat("\r\n").toCharArray())); } catch (Exception e) { logger.warn("Failed to send report to influx", e); return null; } } }
@Override public void report(Measurement measurement) { if (influx == null) { logger.warn("InfluxDB client is not initialized"); return; } logger.debug("Sending Query: {}", measurement.toString()); try { final Point.Builder builder = Point.measurement(measurement.name()); builder.time(measurement.time(), measurement.timeUnit()); builder.tag("type", measurement.type().toString()); for (Map.Entry<String, String> tag : measurement.tags().entrySet()) { builder.tag(tag.getKey(), tag.getValue()); } for (Map.Entry<String, String> field : measurement.fields().entrySet()) { builder.addField(field.getKey(), field.getValue()); } if (measurement.isSimple()) { builder.addField("value", measurement.getValue()); } influx.write(dbName, retentionPolicy, builder.build()); } catch (Exception e) { logger.warn("Failed to send report to influx", e); } }
/** * Method which is sending event. * * @param measurement Measurement to send * @throws IOException */ private void sendEvent(Measurement measurement) throws IOException { final EventDSL event = riemannClient.event(); event.service(measurement.name()); event.state("ok"); if (measurement.isSimple()) { event.metric(measurement.getValue()); } event.time(measurement.time()); event.ttl(30); for (Map.Entry<String, String> tag : measurement.tags().entrySet()) { event.tag(tag.getKey()); event.attribute(tag.getKey(), tag.getValue()); } event.tag("type"); event.attribute("type", measurement.type().toString()); for (Map.Entry<String, String> field : measurement.fields().entrySet()) { event.attribute(field.getKey(), field.getValue()); } riemannClient.sendEvent(event.build()); }