• ログイン今すぐ開始

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

gRPC インストルメンテーション

New Relic Ruby エージェントは、 grpc gem (バージョン 1.0.0 以降) を使用するgRPCクライアントとサーバーを自動的に計測します。単項、双方向、クライアント ストリーミング、およびサーバー ストリーミングのすべての通信タイプがサポートされています。

重要

gRPC インストルメンテーションには、Ruby エージェント バージョン 8.10.0 以降が必要です。

構成 (すべての設定はオプションです)

gRPC クライアントとサーバーのインストルメンテーションを個別に構成できます。デフォルトでは、両方の構成オプションがautomaticの略であるautoに設定されています。それぞれのエージェントの自動動作は、最初に Ruby モジュールのプリペンド動作を利用しようとし、既知の互換性の問題が発生した場合に Ruby メソッド チェーン動作にフォールバックすることにより、インストルメンテーションを有効にすることです。

以降のセクションで追加のオプションと例を参照してください。

クライアントとサーバーのオプション

New Relic 設定ファイルを変更するか、環境変数を設定することで、エージェントの動作を変更できます。クライアントとサーバーの両方に適用されるオプションは次のとおりです。

  • auto: 自動 Ruby メソッド動作選択によって有効になるデフォルト
  • disabled: インストルメンテーションが無効
  • prepend: Ruby メソッドのプリペンドの使用を強制する
  • chain: Ruby メソッドチェーンの使用を強制する

クライアント固有のオプション

以下はクライアントにのみ使用します。

  • 構成ファイルのパラメーター: instrumentation.grpc_client
  • 環境変数: NEW_RELIC_INSTRUMENTATION_GRPC_CLIENT

サーバー固有のオプション

以下はサーバーにのみ使用します。

  • 構成ファイルのパラメーター: instrumentation.grpc_server
  • 環境変数: NEW_RELIC_INSTRUMENTATION_GRPC_SERVER

クライアントとサーバーの構成例

構成ファイルを使用して gRPC サーバー インストルメンテーションを無効にするには:

# newrelic.yml
instrumentation.grpc_server: disabled

環境変数を使用して gRPC クライアント インストルメンテーションを無効にするには:

export NEW_RELIC_INSTRUMENTATION_GRPC_CLIENT=disabled

検証

New Relic Ruby エージェントが起動すると、ロードされたgrpc gem の存在が検出され、gRPC インストルメンテーションの適用が試行されます。gRPC クライアントおよびサーバー コンポーネントにこのインストルメンテーションを適用することに成功すると、エージェントは次の行をログ ファイルに書き込みます (デフォルトではlog/newrelic_agent.log )。

INFO : Installing New Relic supported gRPC_Client instrumentation using Prepend
INFO : Installing New Relic supported gRPC_Server instrumentation using Prepend

使用方法

インストルメンテーションが適切に機能している限り (これを確認するには、上記の検証を参照してください)、New Relic Ruby エージェントによって実行されるすべてのインストルメンテーションは完全に自動化され、既存の gRPC クライアントおよび/またはサーバー コードを変更する必要はありません。

New Relic Ruby エージェントの gRPC インスツルメンテーションには、スパンに分散トレース ヘッダーが含まれています。これにより、gRPC クライアントとサーバーの呼び出しを、W3C 分散トレースをサポートする他のサービスに接続できます。gRPC リクエストは、Ruby ベースのクライアントから別の言語に基づくサーバーに送信できます。Ruby ベースのサーバーは、別の言語に基づくクライアントからのリクエストに対応できます。

重要

gRPC クライアント リクエストは、既存の New Relic トランザクションが存在するときに生成されない限り、New Relic に報告されません。通常、これは、Rails コントローラー メソッドまたはバックグラウンド ジョブ プロセスがアクティブであり、gRPC クライアント リクエストの呼び出しを担当していることを意味します。リクエストは、New Relic Web UI の外側のラッパーのトランザクションの下にロールアップされます。

gRPC サーバー リクエストは、常に新しい New Relic トランザクションを生成し、既存の New Relic トランザクションを要求したり、ロールアップしたりすることはありません。

データを見る

収集された gRPC データは、New Relic UI の多数のページで確認できます。

概要ページ

[UI の概要] ページでは、gRPC クライアント リクエストがウェブ トランザクションとして表示され、ウェブトランザクション時間スループットエラー率のグラフにデータが含まれます。

分散トレース ページ

ヒント

新しい Ruby エージェントでは分散トレースがデフォルトでオンになっていますが、質問がある場合は、Ruby サービスの分散トレース を参照してください

UI の分散トレース ページで gRPC データを確認します。

  1. one.newrelic.com > APM & servicesに移動します。

  2. エンティティ(サービス)をクリックします。

  3. 左側のペインの[監視]セクションで、[分散トレース]をクリックします。

  4. トレース グループをクリックします。

  5. リストからトレースを選択し、クリックします。

  6. [すべて展開]をクリックします。

  7. 得られたトレース スパンのリストから、個々のトレース スパンをクリックします。

  8. 右側のペインで [属性] タブをクリックします。

    • クライアント インスタンス: grpc_statusgrpc_typehttp.method 、およびhttp.url属性がすべて表示されます。クライアント リクエスト ( 0以外のgrpc_status値を持つ) が失敗した場合、追加のgrpc_message属性が gRPC ステータス メッセージと共に表示されます。
    • サーバー インスタンス: request.grpc_typerequest.method 、およびrequest.uri属性がすべて表示されます。

クライアント アプリケーションとサーバー アプリケーションの両方が、gRPC (Ruby または別の言語) をサポートする New Relic エージェントによって監視されている限り、分散トレーシング マップは次のことを行う必要があります。

  • クライアント アプリケーションとサーバー アプリケーションの両方を表示します。
  • それらの間で実行された異なる通話タイプの数を報告します。

gRPC ベースの Ruby 例外が発生した場合、例外に関する情報が[イベント] > [エラー] ページに表示されます。

サポートとフィードバック

New Relic Ruby エージェントの gRPC インストルメンテーションに関連するサポートやフィードバックについて New Relic に連絡する場合は、次の質問に対する回答を用意してください。

  • 使用しているgrpc gem のバージョンは何ですか?
  • New Relic Infinite Tracing を使用していますか?
  • アプリケーションの環境をどのように説明しますか?(フレームワーク、Ruby バージョン、その他の主要な使用技術)
  • gRPC は何に使用しますか?
  • gRPC クライアントに Ruby を使用していますか?
  • gRPC クライアントに別の言語を使用していますか?
  • gRPC サーバーに Ruby を使用していますか?
  • gRPC サーバーに別の言語を使用していますか?
  • gRPC クライアント コードをどこで呼び出していますか?(コントローラ、バックグラウンド ジョブなどから)
  • データを送信するためにどのような戦略を使用していますか?(単項、双方向、クライアント ストリーミング、サーバー ストリーミング)
Copyright © 2022 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.