|
|
@ -39,6 +39,7 @@ import org.springframework.util.StringUtils;
|
|
|
|
* a gauge.
|
|
|
|
* a gauge.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @author Dave Syer
|
|
|
|
* @author Dave Syer
|
|
|
|
|
|
|
|
* @author Odín del Río
|
|
|
|
* @since 1.3.0
|
|
|
|
* @since 1.3.0
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public class StatsdMetricWriter implements MetricWriter, Closeable {
|
|
|
|
public class StatsdMetricWriter implements MetricWriter, Closeable {
|
|
|
@ -87,12 +88,12 @@ public class StatsdMetricWriter implements MetricWriter, Closeable {
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void increment(Delta<?> delta) {
|
|
|
|
public void increment(Delta<?> delta) {
|
|
|
|
this.client.count(delta.getName(), delta.getValue().longValue());
|
|
|
|
this.client.count(sanitizeMetricName(delta.getName()), delta.getValue().longValue());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void set(Metric<?> value) {
|
|
|
|
public void set(Metric<?> value) {
|
|
|
|
String name = value.getName();
|
|
|
|
String name = sanitizeMetricName(value.getName());
|
|
|
|
if (name.contains("timer.") && !name.contains("gauge.")
|
|
|
|
if (name.contains("timer.") && !name.contains("gauge.")
|
|
|
|
&& !name.contains("counter.")) {
|
|
|
|
&& !name.contains("counter.")) {
|
|
|
|
this.client.recordExecutionTime(name, value.getValue().longValue());
|
|
|
|
this.client.recordExecutionTime(name, value.getValue().longValue());
|
|
|
@ -117,6 +118,16 @@ public class StatsdMetricWriter implements MetricWriter, Closeable {
|
|
|
|
this.client.stop();
|
|
|
|
this.client.stop();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* The statsd server does not allow ":" in metric names. Since the the statsd client
|
|
|
|
|
|
|
|
* is not dealing with this, we have to sanitize the metric name.
|
|
|
|
|
|
|
|
* @param name The metric name
|
|
|
|
|
|
|
|
* @return The sanitized metric name
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private String sanitizeMetricName(String name) {
|
|
|
|
|
|
|
|
return name.replace(":", "");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static final class LoggingStatsdErrorHandler
|
|
|
|
private static final class LoggingStatsdErrorHandler
|
|
|
|
implements StatsDClientErrorHandler {
|
|
|
|
implements StatsDClientErrorHandler {
|
|
|
|
|
|
|
|
|
|
|
|