Search in sources :

Example 16 with Meter

use of io.micrometer.core.instrument.Meter in project zipkin by openzipkin.

the class ZipkinMetricsController method fetchMetricsFromMicrometer.

// Extracts Zipkin metrics to provide backward compatibility
@Get("/metrics")
public HttpResponse fetchMetricsFromMicrometer() throws IOException {
    StringWriter writer = new StringWriter();
    JsonGenerator generator = JsonUtil.createGenerator(writer);
    generator.writeStartObject();
    // Get the Zipkin Custom meters for constructing the Metrics endpoint
    for (Meter meter : meterRegistry.getMeters()) {
        String name = meter.getId().getName();
        if (!name.startsWith("zipkin_collector"))
            continue;
        String transport = meter.getId().getTag("transport");
        if (transport == null)
            continue;
        Meter.Type type = meter.getId().getType();
        if (type == Meter.Type.COUNTER) {
            generator.writeNumberField("counter." + name + "." + transport, ((Counter) meter).count());
        } else if (type == Meter.Type.GAUGE) {
            generator.writeNumberField("gauge." + name + "." + transport, ((Gauge) meter).value());
        }
    // We only use counters and gauges
    }
    generator.writeEndObject();
    // instead of using try/finally as extra indent causes lines to wrap
    generator.flush();
    return HttpResponse.of(HttpStatus.OK, MediaType.JSON, writer.toString());
}
Also used : StringWriter(java.io.StringWriter) Meter(io.micrometer.core.instrument.Meter) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) Gauge(io.micrometer.core.instrument.Gauge) Get(com.linecorp.armeria.server.annotation.Get)

Aggregations

Meter (io.micrometer.core.instrument.Meter)16 MeterRegistry (io.micrometer.core.instrument.MeterRegistry)6 Test (org.junit.Test)5 Test (org.junit.jupiter.api.Test)5 ArrayList (java.util.ArrayList)4 Gauge (io.micrometer.core.instrument.Gauge)3 DefaultMeter (io.micrometer.core.instrument.internal.DefaultMeter)3 Collections (java.util.Collections)3 DistributionSummary (io.micrometer.core.instrument.DistributionSummary)2 FunctionTimer (io.micrometer.core.instrument.FunctionTimer)2 LongTaskTimer (io.micrometer.core.instrument.LongTaskTimer)2 Timer (io.micrometer.core.instrument.Timer)2 DefaultLongTaskTimer (io.micrometer.core.instrument.internal.DefaultLongTaskTimer)2 SimpleMeterRegistry (io.micrometer.core.instrument.simple.SimpleMeterRegistry)2 HashMap (java.util.HashMap)2 List (java.util.List)2 Map (java.util.Map)2 TimeUnit (java.util.concurrent.TimeUnit)2 JsonGenerator (com.fasterxml.jackson.core.JsonGenerator)1 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1