GraphQL

GraphQL は、API 用のクエリ言語であり、複雑なデータの読み取り、書き込み、およびリアルタイム更新をサポートします。GraphQL は、データをトラバース、取得、および変更するための強力なクエリ構文を使用して、グラフの形式でデータを構造化します。GraphQL API は、異なる HTTP 動詞を同じ URL に送信する代わりに、ミューテーションを使用して読み取りと書き込みを区別します。
GraphQL には、以下の利点があります。
  • デフォルトで可能な限り最小のデータを取得します。クエリで要件を定義することにより、特定のデータを取得することもできます。
  • 複雑なクエリを構築することで、各クライアントが同じ API を異なる方法で使用できます。
このセクションでは、以下の情報について説明します。
GraphQL プローブ
GraphQL プローブは、Node.js プローブ エージェントの一部として使用可能であり、既存の Node.js プローブ エージェントと共に実行され、GraphQL のパフォーマンスを監視します。GraphQL プローブは、個別にインストールする必要はありません。GraphQL プローブは、Apollo サーバ モジュールをサポートし、GraphQL クエリに基づいてメトリックを収集します。
Node.js プローブ エージェントは、Node.js アプリケーションが apollo、apollo-datasource-rest、apollo-server、graphql NPM パッケージを使用している場合にのみ、GraphQL をサポートします。
GraphQL 設定の構成
GraphQL には、以下の追加の設定が必要です。
  • インフラストラクチャ エージェントの設定
  • Node.js プローブ エージェントの設定
Node.js プローブ エージェントがすでにインストールされている場合は、Node.js エージェントの最新バージョンをダウンロードしてインストールします。次に、設定を更新して、Node.js プローブ エージェントを再起動します。また、インフラストラクチャ エージェントの最新バージョンをダウンロードしてインストールします。詳細については、「」を参照してください。
インフラストラクチャ エージェントの設定
インフラストラクチャ エージェントのプロパティは、
IntroscopeAgent.profile
ファイルで設定することができます。
以下の手順に従います。
  1. apmia/core/config/IntroscopAgent.profile
    ファイルを開きます。
  2. 以下のプロパティを、10 以上に設定します。デフォルト値は 5 です。
    introscope.agent.urlgroup.group.default.format={path_delimited:/:0:10}
  3. インフラストラクチャ エージェントを再起動します。
Node.js プローブ エージェントの設定
Node.js プローブ エージェント設定で、
showGraphQLQuery
プロパティを
True
に変更して、トランザクション追跡に完全なクエリを表示します。このプロパティは、
config.json
ファイルで使用できます。デフォルトでは、このプロパティは false に設定され、クエリ名のみが表示されます。
"graphql": { "showGraphQLQuery": false },
このプロパティを設定したら、Node.js アプリケーションを再起動して変更を有効にします。
メトリック ビューの GraphQL モニタリング メトリック
GraphQL プローブは、GraphQL のパフォーマンスを監視し、GraphQL クエリに基づいてメトリックを収集します。GraphQL URL は、次のメトリック パスの Frontends メトリックの下に表示されます:
Frontends/Apps/${app-name}/URLs
URL の形式は以下のとおりです。
${graphql-endpoint}/${Graphql-operation}/${coma separated query fields}
where,
${Graphql-operation}
is the GraphQL operation which can be query or mutation.
${coma separated query fields}
is query names which are part of the GraphQL query.
たとえば、エンドポイント URL が
http://localhost:4001/graphql
で、クエリ本文が以下の GraphQL クエリを考えてみます。このクエリは、REST サービスへのバックエンド呼び出しを行います。
query { cars7 { id plateNumber } }
メトリック ビューでは、クエリの GraphQL URL
/graphql/query/cars7
が以下のように表示されます。この URL で、
graphql
はエンドポイントを示し、
query
は Graphql 操作を示し、
cars7
はクエリを示します。
GraphQL in Metric View
トランザクション追跡
メトリック ビューで GraphQL のトランザクション追跡は以下のように表示されます。この画像で以下の場合について考えてみましょう。
  • 赤色の #1 は、この GraphQL URL にエラーがあることを示します。この URL のエラー追跡を参照できます。
  • #2 は、この GraphQL URL にエラーがないことを示します。この URL の完全な追跡を参照できます。
Error Traces in Metric View
エラー追跡の表示:
/graphql/query/cars6
URL をクリックすると、エラー追跡が表示されます。
エラー追跡
では、
エラー メッセージ
例外
などのエラー詳細が、以下のように右下に表示されます。
Error Traces in Metric View
完全な追跡の表示:
/graphql/query/cars7
URL をクリックすると、完全な追跡が表示されます。
[Complete Trace (完全な追跡)]
[コンポーネントの詳細]
セクションでは、他の属性に加えて以下の GraphQL 属性を表示できます。
  • GraphQL 操作
    : 操作がクエリまたはミューテーションの場合。
  • GraphQL クエリ
    config.json
    ファイル内で
    showGraphQLQuery
    プロパティが
    true
    に設定されている場合、実際のクエリ ペイロードが表示されます。それ以外の場合は、クエリ名のみが表示されます。
以下の図は、エラーのない GraphQL URL の完全な追跡を示しています。
GraphQL in Metric View
ATC マップ ビューの GraphQL 属性
このマップには、選択したレイヤ内のコンポーネントおよびコンポーネントの接続が表示されます。各モニタリング エージェントは、アプリケーション環境内のコンポーネントから特定の基本属性と拡張固有属性を収集します。
以下の図は、GraphQL フロントエンドがバックエンドにどのようにリンクされているかを示しています。
ATC View
Vertex
説明
1
GraphQL であるフロントエンドの頂点。
2
Web サービス コールであるバックエンドの頂点。
[コンポーネント ビュー]
[基本属性]
セクションで、
[名前]
属性に GraphQL URL が表示されます。