Class MetricCollectingServerInterceptor

java.lang.Object
io.micrometer.core.instrument.binder.grpc.AbstractMetricCollectingInterceptor
io.micrometer.core.instrument.binder.grpc.MetricCollectingServerInterceptor
All Implemented Interfaces:
io.grpc.ServerInterceptor

public class MetricCollectingServerInterceptor extends AbstractMetricCollectingInterceptor implements io.grpc.ServerInterceptor
A gRPC server interceptor that will collect metrics using the given MeterRegistry.

Usage:

 Server server = ServerBuilder.forPort(8080)
         .intercept(new MetricCollectingServerInterceptor(meterRegistry))
         .build();

 server.start()
 
Since:
1.7.0
  • Constructor Details

    • MetricCollectingServerInterceptor

      public MetricCollectingServerInterceptor(MeterRegistry registry)
      Creates a new gRPC server interceptor that will collect metrics into the given MeterRegistry.
      Parameters:
      registry - The registry to use.
    • MetricCollectingServerInterceptor

      public MetricCollectingServerInterceptor(MeterRegistry registry, UnaryOperator<Counter.Builder> counterCustomizer, UnaryOperator<Timer.Builder> timerCustomizer, io.grpc.Status.Code... eagerInitializedCodes)
      Creates a new gRPC server interceptor that will collect metrics into the given MeterRegistry and uses the given customizers to configure the Counters and Timers.
      Parameters:
      registry - The registry to use.
      counterCustomizer - The unary function that can be used to customize the created counters.
      timerCustomizer - The unary function that can be used to customize the created timers.
      eagerInitializedCodes - The status codes that should be eager initialized.
  • Method Details

    • preregisterService

      public void preregisterService(io.grpc.BindableService service)
      Pre-registers the all methods provided by the given service. This will initialize all default counters and timers for those methods.
      Parameters:
      service - The service to initialize the meters for.
      See Also:
    • preregisterService

      public void preregisterService(io.grpc.ServerServiceDefinition serviceDefinition)
      Pre-registers the all methods provided by the given service. This will initialize all default counters and timers for those methods.
      Parameters:
      serviceDefinition - The service to initialize the meters for.
      See Also:
    • newRequestCounterFor

      protected Counter newRequestCounterFor(io.grpc.MethodDescriptor<?,?> method)
      Description copied from class: AbstractMetricCollectingInterceptor
      Creates a new request counter for the given method.
      Specified by:
      newRequestCounterFor in class AbstractMetricCollectingInterceptor
      Parameters:
      method - The method to create the counter for.
      Returns:
      The newly created request counter.
    • newResponseCounterFor

      protected Counter newResponseCounterFor(io.grpc.MethodDescriptor<?,?> method)
      Description copied from class: AbstractMetricCollectingInterceptor
      Creates a new response counter for the given method.
      Specified by:
      newResponseCounterFor in class AbstractMetricCollectingInterceptor
      Parameters:
      method - The method to create the counter for.
      Returns:
      The newly created response counter.
    • newTimerFunction

      protected Function<io.grpc.Status.Code,Timer> newTimerFunction(io.grpc.MethodDescriptor<?,?> method)
      Description copied from class: AbstractMetricCollectingInterceptor
      Creates a new function that returns a timer for a given code for the given method.
      Specified by:
      newTimerFunction in class AbstractMetricCollectingInterceptor
      Parameters:
      method - The method to create the timer for.
      Returns:
      The newly created function that returns a timer for a given code.
    • interceptCall

      public <Q, A> io.grpc.ServerCall.Listener<Q> interceptCall(io.grpc.ServerCall<Q,A> call, io.grpc.Metadata requestHeaders, io.grpc.ServerCallHandler<Q,A> next)
      Specified by:
      interceptCall in interface io.grpc.ServerInterceptor