• ログイン今すぐ開始

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

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

問題を作成する

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

EOL通知

2022年4月をもって、CSDKを含むいくつかの機能のサポートを終了します。この移行に簡単に備える方法など、詳細については、 ExplorersHubの投稿をご覧ください。

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

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

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

ヒント

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

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

これは、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;
  ...

このタイルをクリックして、サンプルプログラムを試してください。

Start sample

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

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

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

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

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

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

これを使用

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

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

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

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

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

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

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

Copyright © 2022 New Relic株式会社。

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