Search in sources :

Example 6 with BatchPoints

use of org.influxdb.dto.BatchPoints in project jmxtrans by jmxtrans.

the class InfluxDbWriterTests method emptyCustomTagsDoesntBotherWrite.

@Test
public void emptyCustomTagsDoesntBotherWrite() throws Exception {
    InfluxDbWriter writer = getTestInfluxDbWriterWithDefaultSettings();
    writer.doWrite(dummyServer(), dummyQuery(), results);
    verify(influxDB).write(messageCaptor.capture());
    BatchPoints batchPoints = messageCaptor.getValue();
    assertThat(batchPoints.getDatabase()).isEqualTo(DATABASE_NAME);
    List<Point> points = batchPoints.getPoints();
    assertThat(points).hasSize(1);
}
Also used : BatchPoints(org.influxdb.dto.BatchPoints) Point(org.influxdb.dto.Point) Test(org.junit.Test)

Example 7 with BatchPoints

use of org.influxdb.dto.BatchPoints in project camel by apache.

the class InfluxDbProducer method doInsert.

private void doInsert(Exchange exchange, String dataBaseName, String retentionPolicy) throws InvalidPayloadException {
    if (!endpoint.isBatch()) {
        Point p = exchange.getIn().getMandatoryBody(Point.class);
        try {
            LOG.debug("Writing point {}", p.lineProtocol());
            connection.write(dataBaseName, retentionPolicy, p);
        } catch (Exception ex) {
            exchange.setException(new CamelInfluxDbException(ex));
        }
    } else {
        BatchPoints batchPoints = exchange.getIn().getMandatoryBody(BatchPoints.class);
        try {
            LOG.debug("Writing BatchPoints {}", batchPoints.lineProtocol());
            connection.write(batchPoints);
        } catch (Exception ex) {
            exchange.setException(new CamelInfluxDbException(ex));
        }
    }
}
Also used : BatchPoints(org.influxdb.dto.BatchPoints) Point(org.influxdb.dto.Point) InvalidPayloadException(org.apache.camel.InvalidPayloadException)

Example 8 with BatchPoints

use of org.influxdb.dto.BatchPoints in project jmxtrans by jmxtrans.

the class InfluxDbWriter method doWrite.

/**
	 * <p>
	 * Each {@link Result} is written as a {@link Point} to InfluxDB
	 * </p>
	 *
	 * <p>
	 * The measurement for the {@link Point} is to {@link Result#getKeyAlias()}
	 * <p>
	 * <a href=
	 * "https://influxdb.com/docs/v0.9/concepts/key_concepts.html#retention-policy">
	 * The retention policy</a> for the measurement is set to "default" unless
	 * overridden in settings:
	 * </p>
	 *
	 * <p>
	 * The write consistency level defaults to "ALL" unless overridden in
	 * settings:
	 *
	 * <ul>
	 * <li>ALL = Write succeeds only if write reached all cluster members.</li>
	 * <li>ANY = Write succeeds if write reached any cluster members.</li>
	 * <li>ONE = Write succeeds if write reached at least one cluster members.
	 * </li>
	 * <li>QUORUM = Write succeeds only if write reached a quorum of cluster
	 * members.</li>
	 * </ul>
	 *
	 * <p>
	 * The time key for the {@link Point} is set to {@link Result#getEpoch()}
	 * </p>
	 *
	 * <p>
	 * All {@link Result#getValues()} are written as fields to the {@link Point}
	 * </p>
	 *
	 * <p>
	 * The following properties from {@link Result} are written as tags to the
	 * {@link Point} unless overriden in settings:
	 *
	 * <ul>
	 * <li>{@link Result#getAttributeName()}</li>
	 * <li>{@link Result#getClassName()}</li>
	 * <li>{@link Result#getObjDomain()}</li>
	 * <li>{@link Result#getTypeName()}</li>
	 * </ul>
	 * <p>
	 * {@link Server#getHost()} is set as a tag on every {@link Point}
	 * </p>
	 *
	 */
@Override
public void doWrite(Server server, Query query, Iterable<Result> results) throws Exception {
    // Creates only if it doesn't already exist
    if (createDatabase)
        influxDB.createDatabase(database);
    BatchPoints.Builder batchPointsBuilder = BatchPoints.database(database).retentionPolicy(retentionPolicy).tag(TAG_HOSTNAME, server.getSource());
    for (Map.Entry<String, String> tag : tags.entrySet()) {
        batchPointsBuilder.tag(tag.getKey(), tag.getValue());
    }
    BatchPoints batchPoints = batchPointsBuilder.consistency(writeConsistency).build();
    for (Result result : results) {
        HashMap<String, Object> filteredValues = newHashMap(Maps.filterValues(result.getValues(), isNotNaN));
        // send the point if filteredValues isn't empty
        if (!filteredValues.isEmpty()) {
            filteredValues.put("_jmx_port", Integer.parseInt(server.getPort()));
            Map<String, String> resultTagsToApply = buildResultTagMap(result);
            Point point = Point.measurement(result.getKeyAlias()).time(result.getEpoch(), MILLISECONDS).tag(resultTagsToApply).fields(filteredValues).build();
            batchPoints.point(point);
        }
    }
    influxDB.write(batchPoints);
}
Also used : BatchPoints(org.influxdb.dto.BatchPoints) Point(org.influxdb.dto.Point) ImmutableMap(com.google.common.collect.ImmutableMap) Maps.newHashMap(com.google.common.collect.Maps.newHashMap) HashMap(java.util.HashMap) TreeMap(java.util.TreeMap) Map(java.util.Map) Result(com.googlecode.jmxtrans.model.Result)

Example 9 with BatchPoints

use of org.influxdb.dto.BatchPoints in project jmxtrans by jmxtrans.

the class InfluxDbWriterTests method customTagsAreWrittenToDb.

@Test
public void customTagsAreWrittenToDb() throws Exception {
    ImmutableMap<String, String> tags = ImmutableMap.of("customTag", "customValue");
    InfluxDbWriter writer = getTestInfluxDbWriterWithCustomTags(tags);
    writer.doWrite(dummyServer(), dummyQuery(), results);
    verify(influxDB).write(messageCaptor.capture());
    BatchPoints batchPoints = messageCaptor.getValue();
    assertThat(batchPoints.getDatabase()).isEqualTo(DATABASE_NAME);
    List<Point> points = batchPoints.getPoints();
    assertThat(points).hasSize(1);
    Point point = points.get(0);
    assertThat(point.lineProtocol()).contains("customTag=customValue");
}
Also used : BatchPoints(org.influxdb.dto.BatchPoints) Matchers.anyString(org.mockito.Matchers.anyString) Point(org.influxdb.dto.Point) Test(org.junit.Test)

Aggregations

BatchPoints (org.influxdb.dto.BatchPoints)9 Point (org.influxdb.dto.Point)6 Test (org.junit.Test)6 Matchers.anyString (org.mockito.Matchers.anyString)3 TreeMap (java.util.TreeMap)2 ImmutableMap (com.google.common.collect.ImmutableMap)1 Maps.newHashMap (com.google.common.collect.Maps.newHashMap)1 Result (com.googlecode.jmxtrans.model.Result)1 ResultAttribute (com.googlecode.jmxtrans.model.ResultAttribute)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 InvalidPayloadException (org.apache.camel.InvalidPayloadException)1 ConsistencyLevel (org.influxdb.InfluxDB.ConsistencyLevel)1