C SDK API使用ガイド

New RelicのC SDKは、パフォーマンス上の問題を見つけて解決できるよう、アプリケーションとマイクロサービスをモニターします。Cアプリケーションは、コンパイルされたネイティブバイナリファイルから実行します。トランザクションをモニターするには、New Relicメソッドを追加することにより、コードを手動でインストゥルメントする必要があります。

このガイドは、使用すべきメソッドを決定するうえで役立ちます。メソッドのコード、必要なパラメーター、例は GitHubにあるNew RelicのC SDKドキュメントに記載されています。

カスタマイズでスレッドが安全であることを確認する

C SDKは複数のスレッド化されたアプリケーションのインストゥルメンテーションに対応していますが、複数のスレッドをインストゥルメントする前に初期化する必要があります。次のどの機能を呼び出す際も、他のC SDK機能を呼び出す前に、それらがメインスレッドで呼び出されていることを確認してください:

トランザクションをモニターする

トランザクションをモニターするために、手動でコードをインストゥルメントする前に:

  1. アプリケーションについて、C SDKの互換性と要件を確認します。
  2. C SDKライブラリの最新バージョンを使用していることを確認し、必要に応じて更新します。
以下を行う場合... このメソッドを使用します:
ウェブトランザクションのタイミングを開始する newrelic_start_web_transaction()
非ウェブトランザクションのタイミングを開始する newrelic_start_non_web_transaction()
トランザクションのタイミングを停止する newrelic_end_transaction()
トランザクションのNew Relicへのレポートを抑止する newrelic_ignore_transaction()

セグメントを使用する時間固有メソッド

New Relic UIにトランザクションがすでに表示されており、そのトランザクション中に呼び出された特定のメソッドに関するデータが十分ではない場合は、セグメントをインストゥルメントできます。たとえば、複雑なロジックを有するメソッドのタイミングを実行したい場合は、トランザクションにある各々のメソッドについてセグメントを作成できます。

既存のトランザクション内でメソッドをインストゥルメントするには、次のいずれかについてセグメントを作成します:

  • 外部サービス
  • コードの機能または他の任意ブロック(カスタムセグメントを使用)
  • データストア
  • 低速クエリトレース(SQLデータストアのみ)
以下を行う場合... このメソッドを使用します:
セグメントのタイミングを開始する newrelic_start_datastore_segment()
newrelic_start_external_segment()
newrelic_start_segment()
セグメントのタイミングを停止する newrelic_end_segment()
手動でセグメントを親化する

newrelic_set_segment_parent()およびnewrelic_set_segment_parent_root()

これは、たとえば非同期プロセスにおいて、セグメントとトランザクションのトップレベルの呼び出しの「子」としてセグメントの可視化を図りたい場合に役立ちます。詳細については、GitHubにある手動によるセグメントの親化に関するドキュメントを参照してください。

セグメントは、アクティブなトランザクション上で記録されます。セグメントをアクティブなトランザクションに追加する場合は、newrelic_txn_t*、または、newrelic_start_web_transaction()もしくはnewrelic_start_non_web_transaction()で返されるトランザクションポインタにアクセスする必要があります。

トランザクションのメタデータの強化

New Relicがトランザクションについて報告するメタデータを管理できます。これは、トランザクションに関して異なるレベルの詳細度が必要な場合に役立ちます。例えば:

  • メトリクスのグループ化問題が発生した場合は、特定化しやすくするためにトランザクションのデフォルト名を変更できます。
  • トランザクションに関するダッシュボードを作成したい場合は、カスタム属性を追加できます。
以下を行う場合... このメソッドを使用します:
トランザクションにメタデータ(顧客のアカウント名またはサブスクリプションレベルなど)を追加する

以下のタイプに基づき、トランザクションにカスタム属性を追加します:

外部サービスの呼び出しをインストゥルメントする

これらのメソッドは、アプリケーションについて、他のアプリケーションまたはデータベースへの接続に関するデータを収集するために使用します。

以下を行う場合... このメソッドを使用します:
リクエストが分散システムを経由するパスを確認する 手順に従い、ディストリビューティッドトレーシングを有効化・インストゥルメントします。
外部リソース(外部サービス、データベースサービス、メッセージクエリなど)への呼び出し時間を測定する 手順に従い、外部セグメントへの呼び出しをインストゥルメントする

収集またはログのエラー

C SDKが自動的にエラーを検出します。エラーをNew Relicへ報告する方法を変更したい場合は、エラーコレクターの設定を変更します。

以下を行う場合... このメソッドを使用します:
アプリケーションのログレベルを設定する

C SDKのログを設定するにはnewrelic_configure_log()を、Cデーモンのログを設定するにはコマンドラインフラグを使用します。詳細については、C SDKのロギングに関するドキュメントを参照してください。

エラーを報告する newrelic_notice_error()

アプリケーションからカスタムデータを送信する

C SDKでカスタムデータ を記録するには、次のメソッドのいずれかを使用できます:

  • カスタムイベント: New Relicでは、イベントデータとは、基本のデータタイプです。イベントデータは、特定時間の単一イベントの記録を意味します。これは、特定の詳細情報を表示する、もしくはクエリする際に役立ちます。
  • カスタムイベント属性: イベントに関する追加のメタデータを含めるには、カスタムイベントにキー/値のペア(カスタム-属性)を追加できます。
  • カスタムメトリックス: メトリックタイムスライスのデータは、New Relicが集計するデータの統計的測定値で、UIで表示し、Insightsでチャート化できます。一般的に、メトリックスデータはイベントデータより長期にわたり保持されます。
カスタムイベント

C SDKには、カスタムイベントをNew Relic Insightsへ送信することを可能にするカスタムイベントAPIがあります。イベントを送信するには、トランザクションを開始してnewrelic_create_custom_event および newrelic_record_custom_event機能を使用します。例えば:

   // txn is a newrelic_txn_t*, created via newrelic_start_web_transaction
   newrelic_custom_event_t* custom_event=0;
   custom_event = newrelic_create_custom_event("aTypeForYourEvent");
   newrelic_record_custom_event(txn, &custom_event);

必ずInsightsカスタムデータの要件および制限を確認し、カスタムイベントで許可される値、されない値に関するガイダンスを得るようにしてください。詳細については、APMにおけるカスタムイベントに関するドキュメントを参照してください。

カスタムイベントを作成し、トランザクションの終了前にそれを削除する必要がある場合は、newrelic_discard_custom_event(&custom_event);を使用します。

カスタムイベント属性

さらに、一連のnewrelic_custom_event_add_*機能を使用して、intlongdouble、および char* (ストリング)属性をカスタムイベントに追加できます。例えば:

// Example custom attributes:
newrelic_custom_event_t* custom_event=0;
custom_event = newrelic_create_custom_event("aTypeForYourEvent");

newrelic_custom_event_add_attribute_int(custom_event, "keya", 42);
newrelic_custom_event_add_attribute_long(custom_event, "keyb", 84);
newrelic_custom_event_add_attribute_double(custom_event, "keyc", 42.42);
newrelic_custom_event_add_attribute_string(custom_event, "keyd", "A string");

newrelic_record_custom_event(txn, &custom_event);

詳細については、カスタム属性に関するドキュメントを参照してください。

カスタムメトリックス

C SDKには、 newrelic_record_custom_metric()関数があります。これにより、APIの呼び出しを使用して以下のような時間ベースのパフォーマンスデータを記録できます:

  • トランザクションのタイミングデータ
  • コンピューターのリソースデータ
  • サブスクリプションデータや購入データ

カスタムメトリックスを作成するには、アクティブなトランザクションに加えて名前またはその他の識別子、およびミリ秒単位の時間を関数に指定します。

カスタムメトリックのプレフィックス名は、必ずCustom/で始めてください。

例えば:

// txn is a newrelic_txn_t*, created via newrelic_start_web_transaction

// Record a metric value of 100ms in the transaction txn
    newrelic_record_custom_metric(txn, "Custom/MyMetric/My_label", 100);

詳細については、カスタムメトリックスを収集するを参照してください。

以下は、カスタムデータの使用方法の例です。コードの詳細情報およびオプション例については、GitHubにあるNew Relicグローバルドキュメントを参照してください。

以下を行う場合... このメソッドを使用します:
タイムスタンプと属性のデータを自動入力するためにカスタムイベントを作成する。 newrelic_create_custom_event()
現在のトランザクションにタイムスタンプしカスタムイベントを追加することで、Insightsでのクエリまたは可視化を可能にする。

newrelic_record_custom_event()

追加メタデータによりカスタムイベントを強化する。

カスタムイベント属性を、タイプ別にカスタムイベントに追加する:

カスタムイベントを作成した後、New Relicへの報告をやめるためにトランザクションの終了前に削除する。

newrelic_discard_custom_event

これはプログラムでのリークを回避するため、不要なカスタムイベントに割当てられたメモリを解放するために必要です。

Insightsで検索またはチャート化できるカスタムパフォーマンスの期間を報告する。 newrelic_record_custom_metric()

デスクトップブラウザのパフォーマンスをモニターする

アプリケーションにおいてデスクトップブラウザのパフォーマンスをモニターするには、コピー/ペーストの方法でNew Relic Browser をインストールします。

構成設定を変更する

通常、アプリケーションのデフォルト設定を変える必要はありません。しかし、必要に応じて設定のいくつかを調整できます。詳細については、C SDKの設定に関するドキュメントを参照してください。

その他のヘルプ

推奨する詳細情報: