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

この機械翻訳は、参考として提供されています。

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

問題を作成する

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

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

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

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

ヒント

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

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

  • 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.