GraphQL のモニタリング
GraphQL の監視について学ぶ。
補足情報
クライアントサイドのトレースに対応
GraphQL 操作のトレース
Instana は、GraphQL の照会、ミューテーション、サブスクリプションのトレースを提供しています。
各操作について、以下をキャプチャーします。
- 操作タイプ (
query、mutationまたはsubscription-update)、 - 操作名 (指定されている場合)、
- 関係するすべての オブジェクト・タイプ
- 各オブジェクト・タイプに使用される 引数
- オブジェクト・タイプごとに選択した フィールド 。
引数キーのみをキャプチャーし、指定された値はキャプチャーしないことに注意してください。
以下にクエリーの例を示します。
query GetUsers {
Users(active: true) {
id
email
address
}
Orders {
items
}
}
このクエリーでは、以下をキャプチャーします。
| 呼び出しタグ | 値 |
|---|---|
| call.graphql.operationType | query |
| call.graphql.operationName | GetUsers |
| call.graphql.arguments | Users.active |
| call.graphql.fields | Users.id, Users.email, Users.address, Orders.items |
キャプチャーされた値は、呼び出しの詳細に表示されます。 これは GraphQL 操作の処理に関与した GraphQL リゾルバーを即時に確認するのに役立ち、応答が低速になっている理由を簡単に特定できます。
これらのタグは、「その他」ボタンからフィルターを追加することで、 アナリティクス画面での通話やトレースの検索にも使用できます。 例えば、Orders オブジェクト・タイプに関連するすべての GraphQL 操作を検索するには、単に「詳細」をクリックして、呼び出しタグ call.graphql.fields に Orders が含まれている呼び出しに対するフィルターを追加します。 または、タグを call.graphql.fields に設定した後、「値」ドロップダウンで推奨のオプションを確認して、選択された時間フレームに要求されたオブジェクト・タイプとフィールドを検査できます。 別のユース・ケースとして、特定のフィールドにアクセスしているすべての呼び出しを検索したり、目的のフィールド/引数名を指定して、call.graphql.fields または call.graphql.arguments に対する「contains」フィルターを追加することで、特定の引数を利用したりできます。
GraphQL サブスクリプションのトレース
GraphQL クライアントは、 GraphQL サブスクリプションを使用して、基礎となるデータ・モデルの変更を通知するように GraphQL サーバーに要求できます。
アクティブな GraphQL サブスクリプションのいずれかによってクライアントが更新を受け取るたびに、このサブスクリプション更新が、GraphQL サーバーからクライアントへの呼び出しとしてトレースされます。 つまり、Instana は、サーバーおよび影響を受けるサブスクライバー上でミューテーションが持つ 影響 の文書化に関するサブスクリプションの分散トレースに焦点を当てています。

サブスクリプション更新を表す呼び出しには、call.graphql.operationType タグの値として subscription-update のタグが付けられます。 特定のサブスクリプションの影響を容易に分析できるように、すべてのサブスクリプション更新呼び出しが GraphQL Subscribers サービスにグループ化され、各サブスクリプション・タイプは別個のエンドポイントとして表されます。