• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は参考用に提供されます。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、 を参照してください。

問題を作成する

Cサービスの分散トレース

分散トレースを使用すると、分散システム全体でのリクエストの全過程を確認できます。C SDKは、ヘッドベースのサンプリングによる標準の分散トレースをサポートします。InfiniteTracingまたはW3CTraceコンテキストと呼ばれる機能はサポートしていません。

C SDKでは、他のNew Relicエージェントの自動インストルメンテーションとは異なり、Cサービスを手動でインストルメントする必要があります。つまり、C SDKを使用するには、コードにいくつかの行を追加してから、分散トレースを有効にするための構成を追加する必要があります。

次のように作業を開始します。

ヒント

始める前に背景を詳しく知りたい場合は、次のトピックを確認してください。

  • スパンサンプリングのしくみは、分散トレースオプションを説明しています。

  • Impact to APM は、 あなたが現在の

    ユーザーですが、分散トレースを設定していません。

サンプルプログラムをインストルメントする(推奨):

これは、C SDKをインストールし、標準の分散トレースを使用してサービスをインストルメント化する方法を確認する簡単な方法です。

主な手順を開始する前に:

  • 分散トレースを設定するには、NewRelicアカウントが必要です。まだお持ちでない場合は、無料のアカウントをすばやく作成できます。このリンクをクリックすると、別のサイトに移動してサインアップを完了できますが、ここに戻って以下のセットアップ手順に従うことができます。
  • 要件を満たしていることを確認してください。

ステップ1.サービスを特定する

どのサービスがリクエストに対応しているかを把握し、各サービスをインストルメント化してトレースデータをNewRelicに送信できるようにします。

ステップ2.各サービスをAPMエージェントでインストルメント化する

C SDKをインストールし、サンプルアプリをインストルメントして、テレメトリをNewRelicに報告し始める方法の例があります。それがどのように機能するかを理解したら、リクエストに関係する各Cサービスに原則を適用できます。一部のサービスが他の言語を使用している場合は、それらの言語のインストール手順に従ってください。

以下のサンプルサービスに進む前に、デフォルトのnewrelic_app_config_tを作成する必要があることに注意してください。ただし、 distributed_tracing.enabledを追加してtrueに設定する必要もあります。

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
/*
* A standalone example that demonstrates to users how to
* configure logging, configure an app, connect an app,
* start a transaction and a segment, and cleanly destroy
* everything.
*/
#include "libnewrelic.h"
int main(void) {
newrelic_app_t* app;
newrelic_txn_t* txn;
newrelic_app_config_t* config;
newrelic_segment_t* seg;
config = newrelic_create_app_config("<YOUR_APP_NAME>", "9931ae06b54780ab846c16fc602b5778ead3907f");
config->distributed_tracing.enabled = true;
...

サンプル プログラムを試すには、 ここをクリックしてください

ステップ3.トレースを表示する

各サービスをAPMエージェントでインストルメント化した後、アプリケーションでトラフィックを生成して、トレースをキャプチャできるようにします。UIでトレースを表示する方法は次のとおりです。

UIでトレースを見つけるための詳細については、以下を参照してください。

トランザクションとHTTPリクエストの計測

複数のサービスで発生したトランザクションについては、分散型トレースのペイロードには、New Relic がそれらをつなぎ合わせて完全なトランザクションのトレースにするための情報が含まれています。ただし、New Relic が監視しているサービスが互いにトレースコンテキストを送信していない場合は、トレースの詳細が不完全になってしまいます。詳細については、 distributed tracing API ヘッダーの渡し方についてのドキュメント と、GitHub の C SDK の distributed tracing ドキュメント を参照してください。

あなたがしたい場合は...

これを使用

呼び出されたサービスに送信されるペイロードの作成と返却

newrelic_create_distributed_trace_payload()

最初のサービスから送信されたペイロードを受け入れる

これにより、これらのサービスがトレースで結ばれます。

ペイロードのBase64エンコードされたJSON文字列表現を返す

これは、 newrelic_create_distributed_trace_payload()と同じ動作を提供します。

ペイロードにBase64エンコードされた文字列を受け入れる

これは、 newrelic_accept_distributed_trace_payload()と同じ動作を提供します。

Copyright © 2024 New Relic株式会社。

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