remove most high cardinality lettuce metrics

This commit is contained in:
Ravi Khadiwala 2023-08-09 17:36:51 -05:00 committed by ravi-signal
parent a71dc48b9b
commit f6b3500e92
1 changed files with 19 additions and 13 deletions

View File

@ -11,6 +11,7 @@ import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.Metrics; import io.micrometer.core.instrument.Metrics;
import io.micrometer.core.instrument.Tags; import io.micrometer.core.instrument.Tags;
import io.micrometer.core.instrument.config.MeterFilter; import io.micrometer.core.instrument.config.MeterFilter;
import io.micrometer.core.instrument.config.MeterFilterReply;
import io.micrometer.core.instrument.distribution.DistributionStatisticConfig; import io.micrometer.core.instrument.distribution.DistributionStatisticConfig;
import io.micrometer.datadog.DatadogMeterRegistry; import io.micrometer.datadog.DatadogMeterRegistry;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -63,20 +64,25 @@ public class MetricsUtil {
} }
}); });
// Remove high-cardinality `command` tags from Lettuce metrics and prepend "chat." to meter names datadogMeterRegistry.config()
datadogMeterRegistry.config().meterFilter(new MeterFilter() { // Deny lettuce metrics, but leave command.completions.max
@Override .meterFilter(MeterFilter.deny(id ->
public Meter.Id map(final Meter.Id id) { id.getName().startsWith("lettuce") && !id.getName().contains("command.completions.max")
if (id.getName().startsWith("lettuce")) { ))
return id.withName(PREFIX + "." + id.getName()) // Remove high-cardinality `command` tags from Lettuce metrics and prepend "chat." to meter names
.replaceTags(id.getTags().stream() .meterFilter(new MeterFilter() {
.filter(tag -> !"command".equals(tag.getKey())) @Override
.toList()); public Meter.Id map(final Meter.Id id) {
} if (id.getName().startsWith("lettuce")) {
return id.withName(PREFIX + "." + id.getName())
.replaceTags(id.getTags().stream()
.filter(tag -> !"command".equals(tag.getKey()))
.toList());
}
return MeterFilter.super.map(id); return MeterFilter.super.map(id);
} }
}); });
Metrics.addRegistry(datadogMeterRegistry); Metrics.addRegistry(datadogMeterRegistry);
} }