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());
}
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);
}
}
}
}
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);
}
Aggregations