Search in sources :

Example 36 with Result

use of com.googlecode.jmxtrans.model.Result in project jmxtrans by jmxtrans.

the class ElasticWriterTests method sendNonNumericMessageToElastic.

@Test
public void sendNonNumericMessageToElastic() throws Exception {
    Result resultWithNonNumericValue = new Result(1, "attributeName", "className", "objDomain", "classNameAlias", "typeName", ImmutableMap.of("key", (Object) "abc"));
    writer.doWrite(dummyServer(), dummyQuery(), ImmutableList.of(resultWithNonNumericValue));
    // only one call is expected: the index check. No write is being made with non-numeric values.
    Mockito.verify(mockClient, times(0)).execute(Matchers.<Action<JestResult>>any());
}
Also used : JestResult(io.searchbox.client.JestResult) Result(com.googlecode.jmxtrans.model.Result) JestResult(io.searchbox.client.JestResult) DocumentResult(io.searchbox.core.DocumentResult) Test(org.junit.Test)

Example 37 with Result

use of com.googlecode.jmxtrans.model.Result in project jmxtrans by jmxtrans.

the class GangliaWriter method internalWrite.

/**
	 * Send query result values to Ganglia.
	 */
@Override
public void internalWrite(Server server, Query query, ImmutableList<Result> results) throws Exception {
    for (final Result result : results) {
        for (final Map.Entry<String, Object> resultValue : result.getValues().entrySet()) {
            final String name = KeyUtils.getKeyString(query, result, resultValue, getTypeNames());
            Object transformedValue = valueTransformer.apply(resultValue.getValue());
            GMetricType dataType = getType(resultValue.getValue());
            log.debug("Sending Ganglia metric {}={} [type={}]", name, transformedValue, dataType);
            try (GMetric metric = new GMetric(host, port, addressingMode, ttl, v31, null, spoofedHostName)) {
                metric.announce(name, transformedValue.toString(), dataType, units, slope, tmax, dmax, groupName);
            }
        }
    }
}
Also used : GMetric(info.ganglia.gmetric4j.gmetric.GMetric) GMetricType(info.ganglia.gmetric4j.gmetric.GMetricType) Map(java.util.Map) Result(com.googlecode.jmxtrans.model.Result)

Example 38 with Result

use of com.googlecode.jmxtrans.model.Result 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)

Aggregations

Result (com.googlecode.jmxtrans.model.Result)38 Test (org.junit.Test)17 JmxResultProcessor (com.googlecode.jmxtrans.model.JmxResultProcessor)9 ObjectInstance (javax.management.ObjectInstance)9 Query (com.googlecode.jmxtrans.model.Query)8 Map (java.util.Map)8 Server (com.googlecode.jmxtrans.model.Server)7 Attribute (javax.management.Attribute)6 JsonGenerator (com.fasterxml.jackson.core.JsonGenerator)4 ServerFixtures.dummyServer (com.googlecode.jmxtrans.model.ServerFixtures.dummyServer)4 JestResult (io.searchbox.client.JestResult)4 ToString (lombok.ToString)4 OutputWriter (com.googlecode.jmxtrans.model.OutputWriter)3 QueryFixtures.dummyQuery (com.googlecode.jmxtrans.model.QueryFixtures.dummyQuery)3 ResultFixtures.singleTrueResult (com.googlecode.jmxtrans.model.ResultFixtures.singleTrueResult)3 DocumentResult (io.searchbox.core.DocumentResult)3 ArrayList (java.util.ArrayList)3 AttributeList (javax.management.AttributeList)3 ImmutableList (com.google.common.collect.ImmutableList)2 ImmutableMap (com.google.common.collect.ImmutableMap)2