分散トレースを使用する と、分散システム 全体でリクエストの行程全体を確認できます。 Python エージェントには、2 種類の分散トレースが用意されています。詳細については、 スパン サンプリングの仕組み を参照してください。
標準 (ヘッドベースサンプリング): トレースが到着する前に、受け入れて分析するトレースの設定パーセンテージを決定します。 これにより、トレースによってどのようなメリットが得られるかを確認するための確かな出発点が得られます。 New Relic Python エージェントではデフォルトでオンになっています。
Infinite Tracing (tailベースサンプリング): 当社のクラウドベースのサービスは、すべてのトレースを受け入れ、それらを並べ替えて最も重要なものを見つけます。 Infinite tracing はすべてのトレースを分析し、最も重要なトレースをサンプリングするための設定オプションを提供します。
標準のディストリビューティッド(分散)トレーシング (ヘッドベースサンプリング) を試したい場合でも、無限トレーシング (テールベースサンプリング) もセットアップしたい場合でも、まず標準トレーシングをセットアップする必要があります。
標準の分散トレース サービスに エージェントをまだインストールしていない場合、これが標準のディストリビューティッド(分散)トレーシング を設定するための最良の方法です。 APM
ヒント New Relic Python エージェントをインストールすると、標準のディストリビューティッド(分散)トレーシングがデフォルトでオンになります。 オフにしたい場合は、設定ガイド をご覧ください。
サービスを特定する 各トレースデータをNew Relicに送信できるように、どのサービスをインストゥルメントするかを把握します。
APMエージェントを使用して各サービスを計量する あなたの場面に関係するサービスごとに、エージェントの個別の説明を実行します。 一部のサービスで他の言語を使用する場合は、その言語のインストール手順 を繰り返すだけです。
インストール ルーチンを開始するには、下のタイルをクリックします。各エージェントのインストールが完了したら、ここに戻って トレースを表示する ためのヒントを参照してください。
トレースを表示 各サービスをAPMエージェントでインストルメント化した後、アプリケーションでトラフィックを生成して、トレースをキャプチャできるようにします。UIでトレースを表示する2つの方法は次のとおりです。
特定のサービスを含むトレースを表示する 特定のサービスのトレースを確認する1つの方法は次のとおりです。
one.newrelic.com > All capabilities > APM & services に移動します。エンティティ(サービス)をクリックします。 左側のペインのMonitor セクションで、 Distributed tracing をクリックします。 詳細については、個々のトレースをクリックしてください。 上部のメニューでGroup similar traces がオンになっている場合は、トレース グループをクリックしてから、個々のトレースをクリックします。 必要なトレースが表示されない場合は、 trace.id
でフィルタリングできます。 アカウント全体のトレースを表示する アカウントをまたがるトレースを表示するには:
one.newrelic.com > All capabilities > Traces に移動します。左側のペインでエンティティ(サービス)を選択します。 詳細については、個々のトレースをクリックしてください。 上部のメニューでGroup similar traces がオンになっている場合は、トレース グループをクリックしてから、個々のトレースをクリックします。 必要なトレースが表示されない場合は、 trace.id
でフィルタリングできます。 トレースに関連するログを調べる ログとトレースの詳細をまとめて、トラブルシューティングをより簡単かつ迅速に行うことができます。ログをコンテキスト に含めると、NewRelicUIのトレースと一緒にログメッセージを表示できます。
特定のサービスを含むトレースの 表示またはアカウント全体のトレース の表示の手順を使用して興味深いトレースを見つけたら、次の手順を実行します。
コンテキスト内でログを有効にしている場合は、 Logs タブ ( Trace details の横) をクリックします。 個々のログに関連する詳細を表示するには、メッセージを直接クリックします。 UIでトレースを見つけるための詳細については、以下を参照してください。
無限のトレース エージェント用の 標準のディストリビューティッド(分散)トレーシングは トレースの最大 APM10% をキャプチャしますが、すべてのデータを分析して最も関連性の高いトレースを見つけたい場合は、 無限トレーシング を設定できます。
始める前に、まず要件を 満たしていることを確認してください。
標準ディストリビューティッド(分散)トレーシングのセットアップを完了する Infinite Tracing セットアップは、標準のディストリビューティッド(分散)トレーシングに基づいて構築されています。 したがって、上記の手順 を完了したことを確認してから、トレース オブザーバーのセットアップを続行してください。
トレース オブザーバーをセットアップする トレースオブザーバーは、すべてのトレースを収集して分析するNewRelicAWSベースのサービスです。トレースオブザーバーの設定 の手順に従います。完了したら、トレースオブザーバー情報をここに戻し、次の手順に進んでエージェントを構成します。
無限トレース構成設定には、標準の分散トレースに加えて、トレースオブザーバーに関する情報が含まれます。サーバー側の構成は、無限トレースでは使用できないことに注意してください。
PythonInfiniteTracing構成 設定の概要は次のとおりです。構成の詳細については、 Python エージェントの構成を 参照してください。
タイプ
必要な構成
無限のトレース
このインストールコマンドを使用してライブラリをプルダウンし、構成ファイルまたは環境変数を設定します。
$ pip install newrelic [ infinite-tracing ]
General configuration options:
構成ファイル( newrelic.ini
):
distributed_tracing.enabled = true
infinite_tracing.trace_observer_host = YOUR_TRACE_OBSERVER_HOST
環境変数:
NEW_RELIC_DISTRIBUTED_TRACING_ENABLED = true
NEW_RELIC_INFINITE_TRACING_TRACE_OBSERVER_HOST = " YOUR_TRACE_OBSERVER_HOST "
Batching and compression configuration options:
v8.7.0 の時点で、Python エージェントはバッチ処理と圧縮の両方をサポートしています。どちらの設定もデフォルトで true に設定されており、次のオプションで切り替えることができます。
構成ファイル( newrelic.ini
):
infinite_tracing.batching = true # Send spans to the trace observer in batches rather than one by one
infinite_tracing.compression = true # Enable gzip compression for data sent via Infinite Tracing
環境変数:
NEW_RELIC_INFINITE_TRACING_BATCHING = true
NEW_RELIC_INFINITE_TRACING_COMPRESSION = true
ヒント プロキシ設定についてサポートが必要な場合は、 プロキシサポート を参照してください。
(オプション) 無限トレースをカスタマイズする エージェント構成設定を追加すると、NewRelicUIにデータが表示されるようになります。データの分析に時間を費やした後、無限トレースの機能のいくつかを調整することをお勧めします。
手動計装(自動計装が機能しない場合) 推奨事項: カスタムインストゥルメンテーションを実行する前に、以下をお読みください。
サービスが他のサービスにトレースヘッダーを渡さない場合は、ディストリビューティッド(分散)トレースヘッダー API を使用して、呼び出し元のサービス と呼び出されたサービス を計測できます。 呼び出し元サービスはAPIコールを使用してヘッダーを生成し、そのヘッダーは呼び出されたサービスによって受け入れられます。
通話サービスを計測する 通話サービスをインストルメント化するには:
発呼側サービスをモニターするAPMエージェントのバージョンが 分散トレースをサポートしていることを確認してください。 ディストリビューティッド(分散)トレーシング ヘッダーを挿入するためのエージェントAPI呼び出しを呼び出します (PythonエージェントAPI を参照)。
重要 トレース内のスパンの適切な順序を維持するには、 generate the headers in the context of the span that sends it 必ず実行してください。 これらのヘッダーを宛先サービスへの呼び出しに追加します。 (オプション)呼び出しを外部呼び出しとして識別します( PythonエージェントAPI を参照)。 呼び出されたサービスを計測する 呼び出されたサービスをインストルメント化するには:
呼び出されたサービスを監視するAPMエージェントのバージョンが 分散トレースをサポートしていることを確認します。
呼び出されたサービスのNew RelicエージェントがNew Relicトランザクションを識別しない場合は、エージェントAPIを使用してトランザクションを宣言します。 トランザクションが進行中でないことを確認する 1 つの方法は、 transaction = current_transaction()
が実行されているときに、 transaction
がNone
であることです。
非Webトランザクション を報告するには、 background_task
を使用します。Pythonインストルメンテーションの詳細については、「トランザクションとセグメントの監視」 を参照してください。
受信した通話からヘッダーを抽出します。
ヘッダーを受け入れるための呼び出しを呼び出します (PythonエージェントAPIを 参照)。