Class OpenTelemetryMetricsModule

java.lang.Object
io.grpc.opentelemetry.OpenTelemetryMetricsModule

final class OpenTelemetryMetricsModule extends Object
Provides factories for StreamTracer that records metrics to OpenTelemetry.

On the client-side, a factory is created for each call, and the factory creates a stream tracer for each attempt. If there is no stream created when the call is ended, we still create a tracer. It's the tracer that reports per-attempt stats, and the factory that reports the stats of the overall RPC, such as RETRIES_PER_CALL, to OpenTelemetry.

On the server-side, there is only one ServerStream per each ServerCall, and ServerStream starts earlier than the ServerCall. Therefore, only one tracer is created per stream/call, and it's the tracer that reports the summary to OpenTelemetry.

  • Field Details

    • logger

      private static final Logger logger
    • LOCALITY_LABEL_NAME

      private static final String LOCALITY_LABEL_NAME
      See Also:
    • DEFAULT_PER_CALL_METRICS_SET

      public static final com.google.common.collect.ImmutableSet<String> DEFAULT_PER_CALL_METRICS_SET
    • SECONDS_PER_NANO

      private static final double SECONDS_PER_NANO
      See Also:
    • resource

      private final OpenTelemetryMetricsResource resource
    • stopwatchSupplier

      private final com.google.common.base.Supplier<com.google.common.base.Stopwatch> stopwatchSupplier
    • localityEnabled

      private final boolean localityEnabled
    • plugins

      private final com.google.common.collect.ImmutableList<OpenTelemetryPlugin> plugins
  • Constructor Details

  • Method Details

    • getServerTracerFactory

      io.grpc.ServerStreamTracer.Factory getServerTracerFactory()
      Returns the server tracer factory.
    • getClientInterceptor

      io.grpc.ClientInterceptor getClientInterceptor(String target)
      Returns the client interceptor that facilitates OpenTelemetry metrics reporting.
    • recordMethodName

      static String recordMethodName(String fullMethodName, boolean isGeneratedMethod)