Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,13 @@ subprojects { subProject ->
compileOnly "io.spinnaker.kork:kork-plugins-spring-api:$korkVersion"
compileOnly "io.spinnaker.kork:kork-core:${korkVersion}"
compileOnly "io.spinnaker.kork:kork-web:${korkVersion}"


implementation "io.micrometer:micrometer-core:1.6.4"


// Start Prometheus deps
implementation("io.micrometer:micrometer-registry-prometheus:1.3.5") {
implementation("io.micrometer:micrometer-registry-prometheus:1.8.13") {
exclude group: 'io.micrometer', module: 'micrometer-core'
}
implementation group: 'io.prometheus', name: 'simpleclient_common', version: '0.9.0'// needs to match micrometer-registry-prometheus
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ public PrometheusRegistrySupplier(
this.clock = clock;
}

public static Clock createClockBean() {
return Clock.SYSTEM;
}

@Override
public RegistryConfigWrapper get() {
if (!prometheusConfig.isEnabled()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
import java.util.function.ToLongFunction;
import java.util.stream.Stream;

import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
import static java.util.stream.StreamSupport.stream;

Expand All @@ -54,16 +53,20 @@ public class MutatedPrometheusMeterRegistry extends MeterRegistry {
private final ConcurrentMap<String, MutatedMicrometerCollector> collectorMap = new ConcurrentHashMap<>();
private final PrometheusConfig prometheusConfig;



public MutatedPrometheusMeterRegistry(PrometheusConfig config) {
this(config, new CollectorRegistry(), Clock.SYSTEM);
}

public MutatedPrometheusMeterRegistry(PrometheusConfig config, CollectorRegistry registry, Clock clock) {
super(clock);
// config.requireValid();
this.prometheusConfig = config;
this.registry = registry;

config().namingConvention(new PrometheusNamingConvention());
config().onMeterRemoved(this::onMeterRemoved);
this.prometheusConfig = config;
}

private static List<String> tagValues(Meter.Id id) {
Expand Down Expand Up @@ -107,9 +110,10 @@ public Counter newCounter(Meter.Id id) {
}

@Override
public DistributionSummary newDistributionSummary(Meter.Id id, DistributionStatisticConfig distributionStatisticConfig, double scale) {
//MutatedMicrometerCollector collector = collectorByName(id);
PrometheusDistributionSummary summary = new PrometheusDistributionSummary(id, clock, distributionStatisticConfig, scale);
public DistributionSummary newDistributionSummary(Meter.Id id,
DistributionStatisticConfig distributionStatisticConfig, double scale) {
PrometheusDistributionSummary summary = new PrometheusDistributionSummary(id, clock,
distributionStatisticConfig, scale, prometheusConfig.histogramFlavor());
List<String> tagValues = tagValues(id);
applyToCollector(id, (collector) -> {
collector.add(id.getTags(), (conventionName, tags) -> {
Expand Down Expand Up @@ -173,7 +177,8 @@ public DistributionSummary newDistributionSummary(Meter.Id id, DistributionStati
@Override
protected io.micrometer.core.instrument.Timer newTimer(Meter.Id id, DistributionStatisticConfig distributionStatisticConfig, PauseDetector pauseDetector) {
//MutatedMicrometerCollector collector = collectorByName(id);
PrometheusTimer timer = new PrometheusTimer(id, clock, distributionStatisticConfig, pauseDetector);
PrometheusTimer timer = new PrometheusTimer(id, clock, distributionStatisticConfig, pauseDetector,
prometheusConfig.histogramFlavor());
List<String> tagValues = tagValues(id);
applyToCollector(id, (collector) -> {
collector.add(id.getTags(), (conventionName, tags) -> {
Expand Down Expand Up @@ -253,7 +258,7 @@ protected LongTaskTimer newLongTaskTimer(Meter.Id id) {
LongTaskTimer ltt = new DefaultLongTaskTimer(id, clock);
List<String> tagValues = tagValues(id);
applyToCollector(id, (collector) -> {
collector.add(id.getTags(), (conventionName, tags) -> Stream.of(new MutatedMicrometerCollector.Family(Collector.Type.UNTYPED, conventionName,
collector.add(id.getTags(), (conventionName, tags) -> Stream.of(new MutatedMicrometerCollector.Family(Collector.Type.UNKNOWN, conventionName,
new Collector.MetricFamilySamples.Sample(conventionName + "_active_count", tags.getKeys(), tags.getValues(), ltt.activeTasks()),
new Collector.MetricFamilySamples.Sample(conventionName + "_duration_sum", tags.getKeys(), tags.getValues(), ltt.duration(TimeUnit.SECONDS))
)));
Expand Down Expand Up @@ -290,7 +295,7 @@ protected <T> FunctionCounter newFunctionCounter(Meter.Id id, T obj, ToDoubleFun

@Override
protected Meter newMeter(Meter.Id id, Meter.Type type, Iterable<Measurement> measurements) {
Collector.Type promType = Collector.Type.UNTYPED;
Collector.Type promType = Collector.Type.UNKNOWN;
switch (type) {
case COUNTER:
promType = Collector.Type.COUNTER;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ public void test_that_the_prometheus_registry_will_always_return_tags_with_snake
assertEquals(false, responseEntity.getBody().contains("my.Tag"));

}

@Test
public void test_that_the_prometheus_registry_will_always_return_tags_with_snakeCase_2() {
var tags = List.of(Tag.of("main-application-test", "myValue"));
Expand Down