Search in sources :

Example 21 with Result

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

the class StatsDTelegrafWriter method write.

@Override
public void write(@Nonnull Writer writer, @Nonnull Server server, @Nonnull Query query, @Nonnull Iterable<Result> results) throws IOException {
    int resultIndex = -1;
    for (Result result : results) {
        resultIndex++;
        String bucketType = getBucketType(resultIndex);
        String attributeName = result.getAttributeName();
        List<String> resultTagList = new ArrayList<>();
        resultTagList.add(",jmxport=" + server.getPort());
        //tagList.add("objectName=" + query.getObjectName());
        resultTagList.add("attribute=" + attributeName);
        for (Map.Entry<String, Object> values : result.getValues().entrySet()) {
            String field = values.getKey();
            Object value = values.getValue();
            if (isNotValidValue(value)) {
                log.debug("Skipping message key[{}] with value: {}.", field, value);
                continue;
            }
            List<String> tagList = new ArrayList(resultTagList);
            boolean isSingleValueAttribute = StringUtils.equals(attributeName, field);
            if (!isSingleValueAttribute) {
                tagList.add("resultKey=" + values.getKey());
            }
            for (Map.Entry e : tags.entrySet()) {
                tagList.add(e.getKey() + "=" + e.getValue());
            }
            Number actualValue = computeActualValue(value);
            StringBuilder sb = new StringBuilder(result.getKeyAlias()).append(StringUtils.join(tagList, ",")).append(":").append(actualValue).append("|").append(bucketType).append("\n");
            String output = sb.toString();
            if (actualValue.floatValue() < 0 && !StatsDMetricType.GAUGE.getKey().equals(bucketType)) {
                log.debug("Negative values are only supported for gauges, not sending: {}.", output);
            } else {
                log.debug(output);
                writer.write(output);
            }
        }
    }
}
Also used : ArrayList(java.util.ArrayList) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map) Result(com.googlecode.jmxtrans.model.Result)

Example 22 with Result

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

the class JmxProcessingTests method querySimpleAttribute.

@Test
public void querySimpleAttribute() throws Exception {
    OutputWriterFactory outputWriterFactory = mock(OutputWriterFactory.class);
    OutputWriter outputWriter = mock(OutputWriter.class);
    when(outputWriterFactory.create()).thenReturn(outputWriter);
    Query query = Query.builder().setObj(MBEAN_NAME).addAttr("DummyValue").addOutputWriterFactory(outputWriterFactory).build();
    Server server = localServer();
    Iterable<Result> results1 = server.execute(query);
    query.runOutputWritersForQuery(server, results1);
    verify(outputWriter).doWrite(any(Server.class), queryCaptor.capture(), resultsCaptor.capture());
    assertThat(queryCaptor.getValue()).isEqualTo(query);
    List<Result> results = resultsCaptor.getValue();
    assertThat(results).hasSize(1);
    Result result = results.get(0);
    assertThat(result.getValues().get("DummyValue")).isEqualTo(123);
}
Also used : OutputWriterFactory(com.googlecode.jmxtrans.model.OutputWriterFactory) Query(com.googlecode.jmxtrans.model.Query) MBeanServer(javax.management.MBeanServer) ServerFixtures.localServer(com.googlecode.jmxtrans.model.ServerFixtures.localServer) Server(com.googlecode.jmxtrans.model.Server) OutputWriter(com.googlecode.jmxtrans.model.OutputWriter) Result(com.googlecode.jmxtrans.model.Result) Test(org.junit.Test)

Example 23 with Result

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

the class JmxResultProcessorTest method canReadSingleBooleanValue.

@Test
public void canReadSingleBooleanValue() throws MalformedObjectNameException, InstanceNotFoundException {
    Attribute booleanAttribute = new Attribute("BootClassPathSupported", true);
    ObjectInstance runtime = getRuntime();
    List<Result> results = new JmxResultProcessor(dummyQueryWithResultAlias(), runtime, ImmutableList.of(booleanAttribute), runtime.getClassName(), TEST_DOMAIN_NAME).getResults();
    assertThat(results).hasSize(1);
    Result result = results.get(0);
    assertThat(result.getAttributeName()).isEqualTo("BootClassPathSupported");
    assertThat(result.getValues()).hasSize(1);
    Object objectValue = result.getValues().get("BootClassPathSupported");
    assertThat(objectValue).isInstanceOf(Boolean.class);
    Boolean booleanValue = (Boolean) objectValue;
    assertThat(booleanValue).isEqualTo(TRUE);
}
Also used : Attribute(javax.management.Attribute) ObjectInstance(javax.management.ObjectInstance) JmxResultProcessor(com.googlecode.jmxtrans.model.JmxResultProcessor) Result(com.googlecode.jmxtrans.model.Result) Test(org.junit.Test)

Example 24 with Result

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

the class JmxResultProcessorTest method doesNotReorderTypeNames.

@Test
public void doesNotReorderTypeNames() throws MalformedObjectNameException {
    String className = "java.lang.SomeClass";
    String propertiesOutOfOrder = "z-key=z-value,a-key=a-value,k-key=k-value";
    List<Result> results = new JmxResultProcessor(dummyQueryWithResultAlias(), new ObjectInstance(className + ":" + propertiesOutOfOrder, className), ImmutableList.of(new Attribute("SomeAttribute", 1)), className, TEST_DOMAIN_NAME).getResults();
    assertThat(results).hasSize(1);
    Result integerResult = results.get(0);
    assertThat(integerResult.getTypeName()).isEqualTo(propertiesOutOfOrder);
}
Also used : Attribute(javax.management.Attribute) JmxResultProcessor(com.googlecode.jmxtrans.model.JmxResultProcessor) ObjectInstance(javax.management.ObjectInstance) Result(com.googlecode.jmxtrans.model.Result) Test(org.junit.Test)

Example 25 with Result

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

the class JmxResultProcessorTest method canReadSingleIntegerValue.

@Test
public void canReadSingleIntegerValue() throws MalformedObjectNameException, InstanceNotFoundException {
    Attribute integerAttribute = new Attribute("CollectionCount", 51L);
    ObjectInstance runtime = getRuntime();
    List<Result> results = new JmxResultProcessor(dummyQueryWithResultAlias(), runtime, ImmutableList.of(integerAttribute), runtime.getClassName(), TEST_DOMAIN_NAME).getResults();
    assertThat(results).hasSize(1);
    Result integerResult = results.get(0);
    assertThat(integerResult.getAttributeName()).isEqualTo("CollectionCount");
    assertThat(integerResult.getValues()).hasSize(1);
    Object objectValue = integerResult.getValues().get("CollectionCount");
    assertThat(objectValue).isInstanceOf(Long.class);
    Long integerValue = (Long) objectValue;
    assertThat(integerValue).isEqualTo(51L);
}
Also used : Attribute(javax.management.Attribute) ObjectInstance(javax.management.ObjectInstance) JmxResultProcessor(com.googlecode.jmxtrans.model.JmxResultProcessor) Result(com.googlecode.jmxtrans.model.Result) Test(org.junit.Test)

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