|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
/*
|
|
|
|
|
* Copyright 2012-2015 the original author or authors.
|
|
|
|
|
* Copyright 2012-2016 the original author or authors.
|
|
|
|
|
*
|
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
@ -19,6 +19,7 @@ package org.springframework.boot.actuate.metrics.statsd;
|
|
|
|
|
import java.io.Closeable;
|
|
|
|
|
|
|
|
|
|
import com.timgroup.statsd.NonBlockingStatsDClient;
|
|
|
|
|
import com.timgroup.statsd.StatsDClient;
|
|
|
|
|
import com.timgroup.statsd.StatsDClientErrorHandler;
|
|
|
|
|
import org.apache.commons.logging.Log;
|
|
|
|
|
import org.apache.commons.logging.LogFactory;
|
|
|
|
@ -26,6 +27,7 @@ import org.apache.commons.logging.LogFactory;
|
|
|
|
|
import org.springframework.boot.actuate.metrics.Metric;
|
|
|
|
|
import org.springframework.boot.actuate.metrics.writer.Delta;
|
|
|
|
|
import org.springframework.boot.actuate.metrics.writer.MetricWriter;
|
|
|
|
|
import org.springframework.util.Assert;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -43,7 +45,7 @@ public class StatsdMetricWriter implements MetricWriter, Closeable {
|
|
|
|
|
|
|
|
|
|
private static final Log logger = LogFactory.getLog(StatsdMetricWriter.class);
|
|
|
|
|
|
|
|
|
|
private final NonBlockingStatsDClient client;
|
|
|
|
|
private final StatsDClient client;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create a new writer instance with the given parameters.
|
|
|
|
@ -61,12 +63,26 @@ public class StatsdMetricWriter implements MetricWriter, Closeable {
|
|
|
|
|
* @param port the port for the statsd server
|
|
|
|
|
*/
|
|
|
|
|
public StatsdMetricWriter(String prefix, String host, int port) {
|
|
|
|
|
prefix = StringUtils.hasText(prefix) ? prefix : null;
|
|
|
|
|
while (prefix != null && prefix.endsWith(".")) {
|
|
|
|
|
prefix = prefix.substring(0, prefix.length() - 1);
|
|
|
|
|
this(new NonBlockingStatsDClient(trimPrefix(prefix), host, port,
|
|
|
|
|
new LoggingStatsdErrorHandler()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create a new writer with the given client.
|
|
|
|
|
* @param client StatsD client to write metrics with
|
|
|
|
|
*/
|
|
|
|
|
public StatsdMetricWriter(StatsDClient client) {
|
|
|
|
|
Assert.notNull(client);
|
|
|
|
|
this.client = client;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static String trimPrefix(String prefix) {
|
|
|
|
|
String trimmedPrefix = StringUtils.hasText(prefix) ? prefix : null;
|
|
|
|
|
while (trimmedPrefix != null && trimmedPrefix.endsWith(".")) {
|
|
|
|
|
trimmedPrefix = trimmedPrefix.substring(0, trimmedPrefix.length() - 1);
|
|
|
|
|
}
|
|
|
|
|
this.client = new NonBlockingStatsDClient(prefix, host, port,
|
|
|
|
|
new LoggingStatsdErrorHandler());
|
|
|
|
|
|
|
|
|
|
return trimmedPrefix;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|