package org.stagemonitor.zipkin;
import org.stagemonitor.configuration.ConfigurationOption;
import org.stagemonitor.core.StagemonitorPlugin;
public final class ZipkinPlugin extends StagemonitorPlugin {
private static final String ZIPKIN_PLUGIN = "Zipkin Plugin";
private final ConfigurationOption<String> zipkinEndpoint = ConfigurationOption.stringOption()
.key("stagemonitor.zipkin.reporter.endpoint")
.dynamic(false)
.label("Zipkin endpoint")
.description("The POST URL for zipkin's api (http://zipkin.io/zipkin-api/#/), " +
"usually \"http://zipkinhost:9411/api/v1/spans\".")
.tags("reporting", "zipkin")
.configurationCategory(ZIPKIN_PLUGIN)
.buildRequired();
private final ConfigurationOption<Integer> zipkinFlushInterval = ConfigurationOption.integerOption()
.key("stagemonitor.zipkin.reporter.messageTimeout")
.dynamic(false)
.label("Zipkin message timeout")
.description("Instead of sending one message at a time, spans are bundled into messages. " +
"Messages are sent when they fill the queue or after the timeout occurs, whichever happens first.")
.tags("reporting", "zipkin")
.configurationCategory(ZIPKIN_PLUGIN)
.buildWithDefault(1000);
private final ConfigurationOption<Integer> zipkinMaxQueuedBytes = ConfigurationOption.integerOption()
.key("stagemonitor.zipkin.reporter.maxQueueSize")
.dynamic(false)
.label("Max zipkin queued bytes")
.description("Maximum backlog of span bytes reported vs sent. Default 1% of heap. " +
"The higher this value, the more memory overhead stagemonitor may impose to your application. " +
"When the limit is reached, spans are dropped. To observe the amount of dropped spans, set " +
"'stagemonitor.internal.monitoring' to true.")
.tags("reporting", "zipkin")
.configurationCategory(ZIPKIN_PLUGIN)
.build();
String getZipkinEndpoint() {
return zipkinEndpoint.get();
}
int getZipkinFlushInterval() {
return zipkinFlushInterval.get();
}
Integer getZipkinMaxQueuedBytes() {
return zipkinMaxQueuedBytes.getValue();
}
}