/** * Get tracer. * * @return tracer */ public static Tracer get() { return GlobalTracer.get(); } }
/** * Build and register as a global tracer. * * @return The {@link Tracer} built and registered */ default Tracer buildAndRegister() { Tracer result = build(); GlobalTracer.register(result); return result; } }
/** * Initialize sharding tracer. * * @param tracer opentracing tracer */ public static void init(final Tracer tracer) { if (!GlobalTracer.isRegistered()) { GlobalTracer.register(tracer); } }
public XioTracing(TracingConfig config) { name = config.getApplicationName(); TracingConfig.TracingType type = config.getType(); switch (type) { case ZIPKIN: String zipkinUrl = config.getZipkinUrl(); float samplingRate = config.getZipkinSamplingRate(); Tracing tracing = buildZipkinTracing(this.name, zipkinUrl, samplingRate); if (tracing != null) { tracer = BraveTracer.create(tracing); } break; case DATADOG: if (GlobalTracer.isRegistered()) { tracer = GlobalTracer.get(); } else { tracer = new DDTracer(); GlobalTracer.register(tracer); } break; } log.info("Configured tracer type: {}", type.toString()); }
/** * Resolves tracer instance to be used. It is using {@link TracerResolver} service loader to find * the tracer. It tracer is not resolved it will use {@link io.opentracing.noop.NoopTracer}. * * @return tracer instance */ @Default @Produces @Singleton public Tracer produceTracer() { // TCK casts to MockTracer so we cannot use GlobalTracer as a bean! Tracer tracer = TracerResolver.resolveTracer(); if (tracer == null) { tracer = GlobalTracer.get(); } logger.info(String.format("Registering %s to GlobalTracer and providing it as CDI bean.", tracer)); GlobalTracer.register(tracer); return tracer; } }
@Override public void update(Class<?> type, String method, long duration, TimeUnit unit) { if (GlobalTracer.isRegistered() && reportContextSwitchesFor(type)) { String operationName = type.getSimpleName() + "." + method; long finishedMicros = System.currentTimeMillis() * 1000; long startTimestampMicros = finishedMicros - unit.toMicros(duration); Span span = GlobalTracer.get().buildSpan(operationName).withStartTimestamp(startTimestampMicros).start(); try { if ("createContextSnapshot".equals(method)) { span.log("New context snapshot created"); span.log(singletonMap(LOG_FIELD_THREAD, Thread.currentThread().getName())); } else if ("reactivate".equals(method)) { span.log("Context snapshot reactivated"); span.log(singletonMap(LOG_FIELD_THREAD, Thread.currentThread().getName())); } } finally { span.finish(finishedMicros); } } }
@Override public boolean configure(FeatureContext context) { if (!GlobalTracer.isRegistered()) { LOGGER.warning(LocalizationMessages.OPENTRACING_TRACER_NOT_REGISTERED()); } switch (context.getConfiguration().getRuntimeType()) { case CLIENT: context.register(OpenTracingClientRequestFilter.class).register(OpenTracingClientResponseFilter.class); break; case SERVER: context.register(new OpenTracingApplicationEventListener(verbosity)); } return true; }
/** * Register a {@link Tracer} to back the behaviour of the {@link #get() global tracer}. * <p> * Registration is a one-time operation, attempting to call it more often will result in a runtime exception. * <p> * Every application intending to use the global tracer is responsible for registering it once * during its initialization. * * @param tracer Tracer to use as global tracer. * @throws RuntimeException if there is already a current tracer registered */ public static synchronized void register(final Tracer tracer) { if (tracer == null) { throw new NullPointerException("Cannot register GlobalTracer <null>."); } if (tracer instanceof GlobalTracer) { LOGGER.log(Level.FINE, "Attempted to register the GlobalTracer as delegate of itself."); return; // no-op } if (isRegistered() && !GlobalTracer.tracer.equals(tracer)) { throw new IllegalStateException("There is already a current global Tracer registered."); } GlobalTracer.tracer = tracer; }
public ProduceMessageImpl(BaseMessage base, QueueSender sender) { this.base = base; this.sender = sender; this.tracer = GlobalTracer.get(); }
public static void override(Tracer tracer) { resetGlobalTracer(); GlobalTracer.register(tracer); } }
/** * Initialize sharding tracer. * * @param tracer opentracing tracer */ public static void init(final Tracer tracer) { if (!GlobalTracer.isRegistered()) { GlobalTracer.register(tracer); } }
@Override public void contextInitialized(ServletContextEvent sce) { if (GlobalTracer.isRegistered()) { TracingLogger.ROOT_LOGGER.alreadyRegistered(); return; } // an application has the option to provide a TracerFactory Tracer tracer = TracerResolver.resolveTracer(); if (null == tracer) { String serviceName = sce.getServletContext().getInitParameter(SMALLRYE_OPENTRACING_SERVICE_NAME); if (null == serviceName || serviceName.isEmpty()) { // this should really not happen, as this is set by the deployment processor TracingLogger.ROOT_LOGGER.noServiceName(); tracer = NoopTracerFactory.create(); } else { sce.getServletContext().setAttribute(SMALLRYE_OPENTRACING_TRACER_MANAGED, true); tracer = Configuration.fromEnv(serviceName).getTracer(); } } TracingLogger.ROOT_LOGGER.registeringTracer(tracer.getClass().getName()); sce.getServletContext().setAttribute(SMALLRYE_OPENTRACING_TRACER, tracer); addJaxRsIntegration(sce.getServletContext(), tracer); TracingLogger.ROOT_LOGGER.initializing(tracer.toString()); }
public QTraceFilter() { tracer = GlobalTracer.get(); }
@Override public void initializePlugin(final StagemonitorPlugin.InitArguments initArguments) { corePlugin = initArguments.getPlugin(CorePlugin.class); corePlugin.getGrafanaClient().sendGrafanaDashboardAsync("grafana/ElasticsearchRequestDashboard.json"); final Metric2Registry metricRegistry = initArguments.getMetricRegistry(); tracerFactory = getTracerImpl(); final Tracer tracer = tracerFactory.getTracer(initArguments); reportingSpanEventListener = new ReportingSpanEventListener(initArguments.getConfiguration()); for (SpanReporter spanReporter : ServiceLoader.load(SpanReporter.class, RequestMonitor.class.getClassLoader())) { addReporter(spanReporter); } samplePriorityDeterminingSpanInterceptor = new SamplePriorityDeterminingSpanEventListener(initArguments.getConfiguration()); final ServiceLoader<SpanEventListenerFactory> factories = ServiceLoader.load(SpanEventListenerFactory.class, TracingPlugin.class.getClassLoader()); this.spanWrappingTracer = createSpanWrappingTracer(tracer, initArguments.getConfiguration(), metricRegistry, factories, samplePriorityDeterminingSpanInterceptor, reportingSpanEventListener); GlobalTracer.register(spanWrappingTracer); }
@PostConstruct public void registerToGlobalTracer() { /** * Tracer registered in GlobalTracer should be the same as the tracer bean. * There can be {@link org.springframework.beans.factory.config.BeanPostProcessor}'s which * alters tracer bean, therefore tracer registered to GlobalTracer should be autowired. */ if (!GlobalTracer.isRegistered()) { GlobalTracer.register(tracer); } }
static Tracer getTracer(boolean tracingEnabled, Tracer builderTracer) { if (tracingEnabled) { return (builderTracer == null) ? GlobalTracer.get() : builderTracer; } else { return NoopTracerFactory.create(); } }
/** * Configures Jaeger tracer as the {@link GlobalTracer}. */ private static void prepare() { GlobalTracer.register( new com.uber.jaeger.Configuration( "OpenTracingTemporaryTest", new Configuration.SamplerConfiguration("const", 1), new Configuration.ReporterConfiguration( true, "localhost", 5775, 1000, 10000) ).getTracer() ); }
@Override public void contextInitialized(ServletContextEvent sce) { ServletContext servletContext = sce.getServletContext(); String skipParameter = servletContext.getInitParameter("skipOpenTracingResolver"); if (skipParameter != null && Boolean.parseBoolean(skipParameter)) { logger.info("Skipping the OpenTracing TracerResolver. " + "Your application is expected to set a tracer to GlobalTracer explicitly."); return; } if (GlobalTracer.isRegistered()) { logger.info("A Tracer is already registered at the GlobalTracer. Skipping resolution via TraceResolver."); } Tracer tracer = TracerResolver.resolveTracer(); if (tracer != null) { logger.info(String.format("Registering resolved tracer %s to GlobalTracer.", tracer.getClass().getCanonicalName())); GlobalTracer.register(tracer); } else { logger.info("No Tracerresolver found on classpath!"); } }
public static String getTraceId(final Span span) { return getTraceId(GlobalTracer.get(), span); }
@Before public void setUp() throws Exception { GlobalTracerTestHelper.resetGlobalTracer(); tracingPlugin = spy(new TracingPlugin()); doReturn(true).when(tracingPlugin).isRoot(any()); configuration = ConfigurationRegistry.builder() .addOptionProvider(tracingPlugin) .addConfigSource(new SimpleSource()) .build(); final Tracer tracer = mock(Tracer.class); GlobalTracer.register(tracer); spanContext = mock(SpanContextInformation.class); when(spanContext.getSpanWrapper()).thenReturn(mock(SpanWrapper.class)); context = new PreExecutionInterceptorContext(spanContext); interceptor = new RateLimitingPreExecutionInterceptor(); interceptor.init(configuration); }