外部サービス機能は、NewRelicAPMエージェントとOpenTelemetryで利用できます。手順に従って外部サービスを設定した後、十分なデータが表示されない場合は、サンプリングレートを調整する必要があります。
APMエージェント
これらの手順は、主に分散トレースに基づく拡張外部サービス機能を対象としています。
ヒント
従来の外部サービスをすでに使用しているエージェントのチェーンに新しいサービスを追加する必要がある場合は、従来のバージョンの外部サービスを引き続き使用できます。従来の外部サービスをインストールするには、以下の手順で分散トレースの代わりにクロスアプリケーショントレースを有効にします。
外部サービスで表示するサービスごとに、以下を実行します。
まだ行っていない場合は、適切なNewRelicAPMエージェントをインストールします。
エージェントで分散トレースがオンになっていることを確認します。
- 新しいエージェントをインストールした場合、標準の分散トレースはデフォルトでオンになっています。サービスがInfiniteTracingを使用する他のサービスと通信する場合は、InfiniteTracingのヘルプについてエージェントのドキュメントを参照してください。
- 古いエージェントを使用している場合は、構成手順に従って、標準の分散トレースまたは無限トレースを有効にします。分散トレースを有効にすると、古いクロスアプリケーショントレースが上書きされます。
エージェントに追加のセットアップ手順が必要かどうかを確認します。
エージェント | セットアップ |
---|---|
C SDK | 計装セグメントに関するドキュメントを参照してください。 |
Go |
|
Java | JavaエージェントAPIを使用して外部呼び出しを計測する方法については、ドキュメントを参照してください。 |
.NET | Azureの.NETエージェントと.NETエージェントは、外部呼び出しを自動的にインストルメントしますが、トランザクションのメソッドはインストルメントしません。トランザクションを表示するには、次の組み合わせを使用する必要があります。 |
Node.js | Node.jsエージェントAPIの使用に関するドキュメントを参照してください。 |
PHP | PHPエージェントAPIを使用して外部呼び出しを計測する方法についてのドキュメントを参照してください。 |
Python | 追加の手順は必要ありません。外部通話は自動的に計測されます。 |
Ruby | RubyエージェントAPIを使用して外部呼び出しを計測する方法についてのドキュメントを参照してください。 |
OpenTelemetry
New Relic UIには、サービスのOpenTelemetryインスツルメンテーションと、他のサービスへの呼び出しをセットアップする手順を完了すると、外部サービスの詳細が表示されます。外部サービス機能は、サービス間の呼び出しを、各サービスのトランザクションエンドポイントごとに分類して表示します。各トランザクションの名前は、プロセスのエントリスパン( span.kind = "server"
)に由来します。
APMサービスがOpenTelemetryサービス(アップストリームまたはダウンストリーム)に接続されている場合、そのOpenTelemetryサービスはそのAPMサービスのビューに表示されません。これは、APMサービスを表示するときに、この機能がAPMエージェントによってのみ報告されるメトリックを使用するためです。 OpenTelemetryサービスを表示すると、APMサービスが接続として表示されます。
表示される情報の品質は、コレクターで使用しているサンプリング戦略によって異なります。サンプリングを使用してUIに表示される内容を制御する方法については、次のセクションを参照してください。
ヒント
OpenTelemetryデータの100%をTrace APIに送信する場合、組織に特定のレート制限がある場合、またはデフォルトのレート制限をトリガーするのに十分なデータを送信する場合を除き、そのデータの100%が保存されます。
より多くのUIデータを表示するには、サンプリングを調整します
APMエージェントを使用していて、マップの最初のページを超えてドリルを開始したときにデータがほとんどまたはまったく表示されない場合は、より多くのデータをサンプリングするためにスパンリザーバーを調整する必要があります。これは、トランザクションレベルのデータにサンプリングされたトレースデータが入力されるためです。 OpenTelemetryの場合、最初のページとすべてのドリルダウンページの両方にサンプリングされたデータが入力されるため、必要なデータを取得するためにサンプリングを調整する必要がある場合があります。
ここでは、APMエージェントのリザーバーを調整するためのさまざまなルーチンに関する情報と、OpenTelemetryのサンプリングを調整するためのヒントを示します。サンプリングの調整についてさらにサポートが必要な場合は、これらのサポートオプションを参照してください。
APMエージェントのサンプリング
ヒント
これらの手順は、従来の外部サービスには適用されません。
すべてのAPMエージェントにはスパンを格納するリザーバーがあり、これらのエージェントリザーバーのほとんどは構成可能です。このリザーバーのサイズは、エージェントが作成するすべてのスパンを送信できる可能性に影響します。詳細については、 断片化されたトレースを参照してください。
この機能のデータは、あるサービスから別のサービスへの外部呼び出しが行われる隣接するクライアントおよびサーバースパンから取得されます。エージェントがスパンリザーバの制限に達すると、これらのコールを表すいくつかのスパンをドロップする可能性があります。
デフォルトのエージェント設定値2000は、エージェントが1分間に収集するイベントの最大数を定義します。この数よりも多くのスパンがある場合、エージェントは統計サンプリングを収集し、外部サービスマップで使用されるデータの量を本質的に低下させます。
UIに必要な種類の詳細が表示されない場合は、リザーバーのサイズを最大10,000まで増やすことができます。エージェントリザーバーを調整するには、以下を確認してください。
APMエージェント | ドキュメント |
---|---|
C SDK | リザーバーは現在構成できません |
Go | リザーバーは現在構成できません |
Java | |
.NET | |
Node.js | |
PHP | リザーバーは現在構成できません |
Python | Python構成( |
Ruby |
OpenTelemetryサンプリング
ヒント
このセクションは、サービスがOpenTelemetryコレクターを介してNewRelicにデータを送信している場合にのみ適用されます。これは、データがOpenTelemetryコレクターでサンプリングされていないためです。
OpenTelemetryの場合、すべての外部サービスビューにはサンプリングされたトレースが入力されます。これは、十分な有用なデータが表示されない可能性があることを意味します。これを解決するには、コレクターのサンプリングを変更して、より多くのデータをNewRelicに入れることができます。
構成に関するヒントについては、 サンプリングを参照してください。
次のステップ
UIを理解する方法について質問がある場合は、ヒントを参照してください。