Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Register and schedule Micrometer MeterRegistry when Meters are registered #2255

Merged
merged 3 commits into from
Nov 24, 2021
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -22,38 +22,27 @@
import co.elastic.apm.agent.impl.GlobalTracer;
import io.micrometer.core.instrument.MeterRegistry;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.NamedElement;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;

import java.util.Collection;
import java.util.Collections;

import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
import static net.bytebuddy.matcher.ElementMatchers.nameContains;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;

public class MicrometerInstrumentation extends TracerAwareInstrumentation {

private static final MicrometerMetricsReporter reporter = new MicrometerMetricsReporter(GlobalTracer.requireTracerImpl());

@Override
public ElementMatcher<? super NamedElement> getTypeMatcherPreFilter() {
return nameContains("Meter").or(nameContains("Registry"));
}

@Override
public ElementMatcher<? super TypeDescription> getTypeMatcher() {
return hasSuperType(named("io.micrometer.core.instrument.MeterRegistry"));
return named("io.micrometer.core.instrument.MeterRegistry");
}

@Override
public ElementMatcher<? super MethodDescription> getMethodMatcher() {
return isPublic().and(not(isStatic()));
return named("registerMeterIfNecessary");
eyalkoren marked this conversation as resolved.
Show resolved Hide resolved
}

@Override
Expand Down