Search in sources :

Example 41 with Gauge

use of io.micrometer.core.instrument.Gauge in project micrometer by micrometer-metrics.

the class AppOpticsMeterRegistryTest method writeGaugeShouldDropNanValue.

@Test
void writeGaugeShouldDropNanValue() {
    meterRegistry.gauge("my.gauge", Double.NaN);
    Gauge gauge = meterRegistry.find("my.gauge").gauge();
    assertThat(meterRegistry.writeGauge(gauge).isPresent()).isFalse();
}
Also used : Gauge(io.micrometer.core.instrument.Gauge) TimeGauge(io.micrometer.core.instrument.TimeGauge) Test(org.junit.jupiter.api.Test)

Example 42 with Gauge

use of io.micrometer.core.instrument.Gauge in project micrometer by micrometer-metrics.

the class AppOpticsMeterRegistryTest method writeGaugeShouldDropInfiniteValues.

@Test
void writeGaugeShouldDropInfiniteValues() {
    meterRegistry.gauge("my.gauge", Double.POSITIVE_INFINITY);
    Gauge gauge = meterRegistry.find("my.gauge").gauge();
    assertThat(meterRegistry.writeGauge(gauge).isPresent()).isFalse();
    meterRegistry.gauge("my.gauge", Double.NEGATIVE_INFINITY);
    gauge = meterRegistry.find("my.gauge").gauge();
    assertThat(meterRegistry.writeGauge(gauge).isPresent()).isFalse();
}
Also used : Gauge(io.micrometer.core.instrument.Gauge) TimeGauge(io.micrometer.core.instrument.TimeGauge) Test(org.junit.jupiter.api.Test)

Example 43 with Gauge

use of io.micrometer.core.instrument.Gauge in project apm-agent-java by elastic.

the class MicrometerMeterRegistrySerializer method serializeMetricSet.

boolean serializeMetricSet(List<Tag> tags, List<Meter> meters, long epochMicros, StringBuilder replaceBuilder, JsonWriter jw) {
    boolean hasSamples = false;
    boolean dedotMetricName = config.isDedotCustomMetrics();
    jw.writeByte(JsonWriter.OBJECT_START);
    {
        DslJsonSerializer.writeFieldName("metricset", jw);
        jw.writeByte(JsonWriter.OBJECT_START);
        {
            DslJsonSerializer.writeFieldName("timestamp", jw);
            NumberConverter.serialize(epochMicros, jw);
            jw.writeByte(JsonWriter.COMMA);
            serializeTags(tags, replaceBuilder, jw);
            DslJsonSerializer.writeFieldName("samples", jw);
            jw.writeByte(JsonWriter.OBJECT_START);
            ClassLoader originalContextCL = Thread.currentThread().getContextClassLoader();
            try {
                for (int i = 0, size = meters.size(); i < size; i++) {
                    Meter meter = meters.get(i);
                    if (internallyDisabledMeters.contains(meter)) {
                        continue;
                    }
                    try {
                        // Setting the Meter CL as the context class loader during the Meter query operations
                        Thread.currentThread().setContextClassLoader(meter.getClass().getClassLoader());
                        if (meter instanceof Timer) {
                            Timer timer = (Timer) meter;
                            hasSamples = serializeTimer(jw, timer.getId(), timer.count(), timer.totalTime(TimeUnit.MICROSECONDS), hasSamples, replaceBuilder, dedotMetricName);
                        } else if (meter instanceof FunctionTimer) {
                            FunctionTimer timer = (FunctionTimer) meter;
                            hasSamples = serializeTimer(jw, timer.getId(), (long) timer.count(), timer.totalTime(TimeUnit.MICROSECONDS), hasSamples, replaceBuilder, dedotMetricName);
                        } else if (meter instanceof LongTaskTimer) {
                            LongTaskTimer timer = (LongTaskTimer) meter;
                            hasSamples = serializeTimer(jw, timer.getId(), timer.activeTasks(), timer.duration(TimeUnit.MICROSECONDS), hasSamples, replaceBuilder, dedotMetricName);
                        } else if (meter instanceof DistributionSummary) {
                            DistributionSummary timer = (DistributionSummary) meter;
                            hasSamples = serializeDistributionSummary(jw, timer.getId(), timer.count(), timer.totalAmount(), hasSamples, replaceBuilder, dedotMetricName);
                        } else if (meter instanceof Gauge) {
                            Gauge gauge = (Gauge) meter;
                            hasSamples = serializeValue(gauge.getId(), gauge.value(), hasSamples, jw, replaceBuilder, dedotMetricName);
                        } else if (meter instanceof Counter) {
                            Counter counter = (Counter) meter;
                            hasSamples = serializeValue(counter.getId(), counter.count(), hasSamples, jw, replaceBuilder, dedotMetricName);
                        } else if (meter instanceof FunctionCounter) {
                            FunctionCounter counter = (FunctionCounter) meter;
                            hasSamples = serializeValue(counter.getId(), counter.count(), hasSamples, jw, replaceBuilder, dedotMetricName);
                        }
                    } catch (Throwable throwable) {
                        String meterName = meter.getId().getName();
                        logger.warn("Failed to serialize Micrometer meter \"{}\" with tags {}. This meter will be " + "excluded from serialization going forward.", meterName, tags);
                        logger.debug("Detailed info about failure to register Micrometer meter \"" + meterName + "\": ", throwable);
                        internallyDisabledMeters.add(meter);
                    }
                }
            } finally {
                Thread.currentThread().setContextClassLoader(originalContextCL);
            }
            jw.writeByte(JsonWriter.OBJECT_END);
        }
        jw.writeByte(JsonWriter.OBJECT_END);
    }
    jw.writeByte(JsonWriter.OBJECT_END);
    jw.writeByte(NEW_LINE);
    return hasSamples;
}
Also used : Meter(io.micrometer.core.instrument.Meter) FunctionTimer(io.micrometer.core.instrument.FunctionTimer) Gauge(io.micrometer.core.instrument.Gauge) DistributionSummary(io.micrometer.core.instrument.DistributionSummary) Counter(io.micrometer.core.instrument.Counter) FunctionCounter(io.micrometer.core.instrument.FunctionCounter) LongTaskTimer(io.micrometer.core.instrument.LongTaskTimer) Timer(io.micrometer.core.instrument.Timer) FunctionTimer(io.micrometer.core.instrument.FunctionTimer) LongTaskTimer(io.micrometer.core.instrument.LongTaskTimer) FunctionCounter(io.micrometer.core.instrument.FunctionCounter)

Aggregations

Gauge (io.micrometer.core.instrument.Gauge)43 Test (org.junit.jupiter.api.Test)27 TimeGauge (io.micrometer.core.instrument.TimeGauge)16 SimpleMeterRegistry (io.micrometer.core.instrument.simple.SimpleMeterRegistry)10 MeterRegistry (io.micrometer.core.instrument.MeterRegistry)9 FunctionCounter (io.micrometer.core.instrument.FunctionCounter)7 Meter (io.micrometer.core.instrument.Meter)7 DistributionSummary (io.micrometer.core.instrument.DistributionSummary)6 FunctionTimer (io.micrometer.core.instrument.FunctionTimer)6 Timer (io.micrometer.core.instrument.Timer)6 Counter (io.micrometer.core.instrument.Counter)5 LongTaskTimer (io.micrometer.core.instrument.LongTaskTimer)5 TimeUnit (java.util.concurrent.TimeUnit)5 Test (org.junit.Test)5 Issue (io.micrometer.core.Issue)4 Measurement (io.micrometer.core.instrument.Measurement)4 MockClock (io.micrometer.core.instrument.MockClock)4 AbstractCacheMetricsTest (io.micrometer.core.instrument.binder.cache.AbstractCacheMetricsTest)4 Statistic (io.micrometer.core.instrument.Statistic)3 Arrays (java.util.Arrays)3