package org.stagemonitor.zipkin; import com.codahale.metrics.Gauge; import org.stagemonitor.core.metrics.metrics2.Metric2Registry; import java.util.concurrent.atomic.AtomicInteger; import zipkin.reporter.ReporterMetrics; import static org.stagemonitor.core.metrics.metrics2.MetricName.name; public class StagemonitorReporterMetrics implements ReporterMetrics { private final Metric2Registry metricRegistry; private AtomicInteger queuedSpans = new AtomicInteger(0); private AtomicInteger queuedBytes = new AtomicInteger(0); StagemonitorReporterMetrics(Metric2Registry metricRegistry) { this.metricRegistry = metricRegistry; metricRegistry.register(name("spans_queued").build(), new Gauge<Integer>() { @Override public Integer getValue() { return queuedSpans.get(); } }); metricRegistry.register(name("spans_queued_bytes").build(), new Gauge<Integer>() { @Override public Integer getValue() { return queuedBytes.get(); } }); } @Override public void incrementMessages() { metricRegistry.counter(name("messages_sent").build()).inc(); } @Override public void incrementMessageBytes(int quantity) { metricRegistry.counter(name("messages_sent_bytes").build()).inc(quantity); } @Override public void incrementMessagesDropped(Throwable cause) { metricRegistry.counter(name("messages_dropped").build()).inc(); } @Override public void incrementSpans(int quantity) { metricRegistry.counter(name("spans_reported").build()).inc(); } @Override public void incrementSpanBytes(int quantity) { metricRegistry.counter(name("spans_reported_bytes").build()).inc(); } @Override public void incrementSpansDropped(int quantity) { metricRegistry.counter(name("spans_dropped").build()).inc(quantity); } @Override public void updateQueuedSpans(int update) { queuedSpans.set(update); } @Override public void updateQueuedBytes(int update) { queuedBytes.set(update); } }