Class GraphQlObservationInstrumentation

java.lang.Object
graphql.execution.instrumentation.SimplePerformantInstrumentation
org.springframework.graphql.observation.GraphQlObservationInstrumentation
All Implemented Interfaces:
graphql.execution.instrumentation.Instrumentation

public class GraphQlObservationInstrumentation extends graphql.execution.instrumentation.SimplePerformantInstrumentation
Instrumentation that creates observations for GraphQL requests and data fetcher operations.

GraphQL request instrumentation measures the execution time of requests and collects information from the ExecutionRequestObservationContext. A request can perform many data fetching operations. The configured ExecutionRequestObservationConvention will be used, or the DefaultExecutionRequestObservationConvention if none was provided.

GraphQL data fetcher instrumentation measures the execution time of a data fetching operation in the context of the current request. Information is collected from the DataFetcherObservationContext. The configured DataFetcherObservationConvention will be used, or the DefaultDataFetcherObservationConvention if none was provided.

Since:
1.1.0
Author:
Brian Clozel
  • Field Summary

    Fields inherited from class graphql.execution.instrumentation.SimplePerformantInstrumentation

    INSTANCE
  • Constructor Summary

    Constructors
    Constructor
    Description
    GraphQlObservationInstrumentation(io.micrometer.observation.ObservationRegistry observationRegistry)
    Create an GraphQlObservationInstrumentation that records observations against the given ObservationRegistry.
    GraphQlObservationInstrumentation(io.micrometer.observation.ObservationRegistry observationRegistry, @Nullable ExecutionRequestObservationConvention requestObservationConvention, @Nullable DataFetcherObservationConvention dateFetcherObservationConvention)
    Deprecated, for removal: This API element is subject to removal in a future version.
    GraphQlObservationInstrumentation(io.micrometer.observation.ObservationRegistry observationRegistry, @Nullable ExecutionRequestObservationConvention requestObservationConvention, @Nullable DataFetcherObservationConvention dateFetcherObservationConvention, @Nullable DataLoaderObservationConvention dataLoaderObservationConvention)
    Create an GraphQlObservationInstrumentation that records observations against the given ObservationRegistry with a custom convention.
  • Method Summary

    Modifier and Type
    Method
    Description
    @Nullable graphql.execution.instrumentation.InstrumentationContext<graphql.ExecutionResult>
    beginExecuteOperation(graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters parameters, graphql.execution.instrumentation.InstrumentationState state)
     
    @Nullable graphql.execution.instrumentation.InstrumentationContext<graphql.ExecutionResult>
    beginExecution(graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters parameters, graphql.execution.instrumentation.InstrumentationState state)
     
    CompletableFuture<graphql.execution.instrumentation.InstrumentationState>
    createStateAsync(graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters parameters)
     
    graphql.schema.DataFetcher<?>
    instrumentDataFetcher(graphql.schema.DataFetcher<?> dataFetcher, graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters parameters, graphql.execution.instrumentation.InstrumentationState state)
     
    @NonNull graphql.ExecutionInput
    instrumentExecutionInput(graphql.ExecutionInput executionInput, graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters parameters, graphql.execution.instrumentation.InstrumentationState state)
     

    Methods inherited from class graphql.execution.instrumentation.SimplePerformantInstrumentation

    beginExecuteObject, beginExecutionStrategy, beginFieldCompletion, beginFieldExecution, beginFieldFetch, beginFieldListCompletion, beginParse, beginSubscribedFieldEvent, beginValidation, createState, instrumentDocumentAndVariables, instrumentExecutionContext, instrumentExecutionResult, instrumentSchema

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface graphql.execution.instrumentation.Instrumentation

    beginDeferredField, beginFieldFetching
  • Constructor Details

    • GraphQlObservationInstrumentation

      public GraphQlObservationInstrumentation(io.micrometer.observation.ObservationRegistry observationRegistry)
      Create an GraphQlObservationInstrumentation that records observations against the given ObservationRegistry. The default observation conventions will be used.
      Parameters:
      observationRegistry - the registry to use for recording observations
    • GraphQlObservationInstrumentation

      @Deprecated(since="1.4.0", forRemoval=true) public GraphQlObservationInstrumentation(io.micrometer.observation.ObservationRegistry observationRegistry, @Nullable ExecutionRequestObservationConvention requestObservationConvention, @Nullable DataFetcherObservationConvention dateFetcherObservationConvention)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Create an GraphQlObservationInstrumentation that records observations against the given ObservationRegistry with a custom convention.
      Parameters:
      observationRegistry - the registry to use for recording observations
      requestObservationConvention - the convention to use for request observations
      dateFetcherObservationConvention - the convention to use for data fetcher observations
    • GraphQlObservationInstrumentation

      public GraphQlObservationInstrumentation(io.micrometer.observation.ObservationRegistry observationRegistry, @Nullable ExecutionRequestObservationConvention requestObservationConvention, @Nullable DataFetcherObservationConvention dateFetcherObservationConvention, @Nullable DataLoaderObservationConvention dataLoaderObservationConvention)
      Create an GraphQlObservationInstrumentation that records observations against the given ObservationRegistry with a custom convention.
      Parameters:
      observationRegistry - the registry to use for recording observations
      requestObservationConvention - the convention to use for request observations
      dateFetcherObservationConvention - the convention to use for data fetcher observations
      dataLoaderObservationConvention - the convention to use for data loader observations
      Since:
      1.4.0
  • Method Details

    • instrumentExecutionInput

      public @NonNull graphql.ExecutionInput instrumentExecutionInput(graphql.ExecutionInput executionInput, graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters parameters, graphql.execution.instrumentation.InstrumentationState state)
      Specified by:
      instrumentExecutionInput in interface graphql.execution.instrumentation.Instrumentation
      Overrides:
      instrumentExecutionInput in class graphql.execution.instrumentation.SimplePerformantInstrumentation
    • createStateAsync

      public CompletableFuture<graphql.execution.instrumentation.InstrumentationState> createStateAsync(graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters parameters)
      Specified by:
      createStateAsync in interface graphql.execution.instrumentation.Instrumentation
      Overrides:
      createStateAsync in class graphql.execution.instrumentation.SimplePerformantInstrumentation
    • beginExecution

      public @Nullable graphql.execution.instrumentation.InstrumentationContext<graphql.ExecutionResult> beginExecution(graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters parameters, graphql.execution.instrumentation.InstrumentationState state)
      Specified by:
      beginExecution in interface graphql.execution.instrumentation.Instrumentation
      Overrides:
      beginExecution in class graphql.execution.instrumentation.SimplePerformantInstrumentation
    • beginExecuteOperation

      public @Nullable graphql.execution.instrumentation.InstrumentationContext<graphql.ExecutionResult> beginExecuteOperation(graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters parameters, graphql.execution.instrumentation.InstrumentationState state)
      Specified by:
      beginExecuteOperation in interface graphql.execution.instrumentation.Instrumentation
      Overrides:
      beginExecuteOperation in class graphql.execution.instrumentation.SimplePerformantInstrumentation
    • instrumentDataFetcher

      public graphql.schema.DataFetcher<?> instrumentDataFetcher(graphql.schema.DataFetcher<?> dataFetcher, graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters parameters, graphql.execution.instrumentation.InstrumentationState state)
      Specified by:
      instrumentDataFetcher in interface graphql.execution.instrumentation.Instrumentation
      Overrides:
      instrumentDataFetcher in class graphql.execution.instrumentation.SimplePerformantInstrumentation