EOL通知
2022 年 4 月以降、C SDK 機能はサポートされていません。詳細については、 サポート フォーラムの投稿 を参照してください。
分散トレースを使用すると、分散システム全体でのリクエストの全過程を確認できます。C SDKは、ヘッドベースのサンプリングによる標準の分散トレースをサポートします。InfiniteTracingまたはW3CTraceコンテキストと呼ばれる機能はサポートしていません。
C SDKでは、他のNew Relicエージェントの自動インストルメンテーションとは異なり、Cサービスを手動でインストルメントする必要があります。つまり、C SDKを使用するには、コードにいくつかの行を追加してから、分散トレースを有効にするための構成を追加する必要があります。
次のように作業を開始します。
- サンプルプログラムのインストルメント(推奨):開始するための迅速な方法
- トランザクションとHTTPリクエストの計測
ヒント
始める前に背景を詳しく知りたい場合は、次のトピックを確認してください。
スパンサンプリングのしくみは、分散トレースオプションを説明しています。
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 ドキュメント を参照してください。
あなたがしたい場合は... | これを使用 |
---|---|
呼び出されたサービスに送信されるペイロードの作成と返却 | |
最初のサービスから送信されたペイロードを受け入れる | これにより、これらのサービスがトレースで結ばれます。 |
ペイロードのBase64エンコードされたJSON文字列表現を返す | これは、 |
ペイロードにBase64エンコードされた文字列を受け入れる | これは、 |