可観測性
Micrometer による可観測性のサポート (英語) は Spring for GraphQL に直接組み込まれています。これにより、GraphQL リクエストのメトリクスとトレースの両方と、「重要な」データフェッチ操作が可能になります。GraphQL エンジンはトランスポート層の上で動作するため、Spring Framework でサポートされている場合は、トランスポートからの観測も期待する必要があります。
アプリケーションで ObservationRegistry
が構成されている場合にのみ、観察結果が公開されます。Spring Boot でオブザーバビリティインフラストラクチャの構成について詳しく知ることができます。GraphQL 観測で生成されたメタデータをカスタマイズする場合は、インストルメンテーションでカスタム規則を直接構成できます。アプリケーションが Spring Boot を使用している場合、カスタム規則を Bean として提供することが推奨される方法です。
サーバーリクエストインストルメンテーション
GraphQL サーバーリクエストの観察は、従来のアプリケーションとリアクティブアプリケーション、何よりもサポートされているトランスポートに対して "graphql.request"
という名前で作成されます。このインストルメンテーションは、親観測が既知の "micrometer.observation"
キーを使用して GraphQL コンテキスト上の現在の観測として設定される必要があることを前提としています。ネットワーク境界を越えたトレース伝播の場合、トランスポートレベルで別の計測を担当する必要があります。HTTP の場合、Spring Framework にはトレースの伝播を処理する専用のインストルメンテーションがあります。
アプリケーションは、アプリケーション内で org.springframework.graphql.observation.GraphQlObservationInstrumentation
インストルメンテーションを構成する必要があります。デフォルトでは org.springframework.graphql.observation.DefaultExecutionRequestObservationConvention
を使用し、ExecutionRequestObservationContext
によってサポートされます。
デフォルトでは、次の KeyValues が作成されます。
名前 | 説明 |
| GraphQL オペレーション名。 |
| GraphQL リクエストの結果。 |
graphql.operation
KeyValue は、提供されたクエリのカスタム名を使用します。カスタム名がない場合、操作の標準名 (英語) ("query"
、"mutation"
または "subscription"
) が使用されます。graphql.outcome
KeyValue は次のようになります。
有効な GraphQL レスポンスが送信され、エラーが含まれていない場合は
"SUCCESS"
リクエストを解析できなかった場合、またはレスポンスにエラーが含まれている場合は
"REQUEST_ERROR"
(いずれもorg.springframework.graphql.execution.ErrorType.INTERNAL_ERROR
型ではない)有効な GraphQL レスポンスを生成できなかった場合、またはレスポンスに少なくとも 1 つの
org.springframework.graphql.execution.ErrorType.INTERNAL_ERROR
型のエラーが含まれている場合は"INTERNAL_ERROR"
名前 | 説明 |
| GraphQL リクエストの |
Spring for GraphQL は、サーバーリクエストの観測イベントも提供します。Micrometer 観測イベント (英語) は通常、トレースのスパンアノテーションとして処理されます。このインストルメンテーションは、GraphQL レスポンスにリストされているエラーをイベントとして記録します。
名前 | コンテキスト名 |
GraphQL エラー型 (例: | 完全な GraphQL エラーメッセージ (例: |
DataFetcher 計装
GraphQL DataFetcher オブザベーションは "graphql.datafetcher"
という名前で作成され、「重要」と見なされるデータフェッチ操作に対してのみ作成されます (Java オブジェクトのプロパティフェッチは簡単な操作です)。アプリケーションは、そのアプリケーションで org.springframework.graphql.observation.GraphQlObservationInstrumentation
計装を構成する必要があります。デフォルトでは org.springframework.graphql.observation.DefaultDataFetcherObservationConvention
を使用しており、DataFetcherObservationContext
に支えられています。
デフォルトでは、次の KeyValues が作成されます。
名前 | 説明 |
| データ取得エラーのクラス名 |
| フェッチされるフィールドの名前。 |
| GraphQL データ取得オペレーションの結果、"SUCCESS" または "ERROR"。 |
名前 | 説明 |
| フェッチされるフィールドへのパス (例: "/bookById")。 |