Cライブラリをインポートできる言語を使用して Linux上でアプリケーションをモニターするには、以下が必要です:
newrelic_new_app_config()
を使用して設定を作成し、newrelic_init()
を使用してデーモンに接続し、newrelic_create_app()
を使用してアプリケーションに接続します。詳細については、C SDKのインストレーション手順を参照してください。- 本ドキュメントの説明通り、C SDKを使用して手動でトランザクションをインストゥルメントします。
New Relicは、ウェブまたは非ウェブトランザクションを、ソフトウェアアプリケーションの動作に対する1つの論理単位として定義します。New Relic機能を追加し、ソースコードに手動でトランザクションをインストゥルメントすると、New Relicのトランザクションページでデータを表示できます。トランザクションとエラーのセグメントのインストゥルメントも行えます。
トランザクションをインストゥルメントする
モニターできるようにトランザクションをインストゥルメントするには、トランザクションの周囲でインストゥルメンテーションを開始および停止するNew Relic機能をラップします。使用する機能は、ウェブまたは非ウェブトランザクションのいずれをインストゥルメントしたいかにより異なります。
次の例では、アプリケーションはnewrelic_create_app()
を呼び出した後に作成されています。詳細については、GitHubにあるC SDKのインストレーション手順およびC SDK libnewrelic.h
ドキュメントを参照してください。
-
モニターしたいトランザクションの直前に次のコードを追加し、必要なパラメーターを供給します。
ウェブトランザクションの場合:
// Example code: newrelic_txn_t *txn; /* ... */ txn = newrelic_start_web_transaction(app, "NAME_YOUR_TRANSACTION");
非ウェブトランザクションの場合:
// Example code: newrelic_txn_t *txn; /* ... */ txn = newrelic_start_non_web_transaction(app, "NAME_YOUR_TRANSACTION");
- モニターしたいウェブまたは非ウェブトランザクションの直後に
newrelic_end_transaction()
を追加し、パラメーターとしてポインタにトランザクション&txn
を供給します。
セグメントをインストゥルメントする
C SDKを使用してトランザクションをインストゥルメントしたら、そこでセグメントをインストゥルメントできます。セグメントをインストゥルメントすることにより、トランザクション内の個別の機能および呼び出しをモニターできます。
セグメントの例
チェックアウトプロセスに関連するトランザクションがあり、これは、発送情報とクレジットカード情報の両方をプロセスするものです。アプリケーションをインストゥルメントし、当該トランザクションを最大2つのセグメントに分割することができます。1つのセグメントは発送、もう1つのセグメントは支払いです。
セグメントをインストゥルメントし、次のような種類の呼び出しをモニターできます:
詳細については、GitHubにあるC SDKのインストレーション手順およびC SDK libnewrelic.h
ドキュメントを参照してください。
- 外部サービスの呼び出しをインストゥルメントする
-
外部サービスへの呼び出しをモニターするには、インストゥルメントされたトランザクション内の外部セグメントをインストゥルメントします。外部セグメントは、トランザクションページの内訳表と外部サービスページに表示されます。
外部セグメントをインストゥルメントするには、モニターしたい機能の周囲でインストゥルメンテーションを開始および停止するNew Relic機能をラップします:
- トランザクションをインストゥルメントします。
- 外部セグメントを説明する
newrelic_external_segment_params_t
を作成し、必要なパラメーターを供給します。 -
モニターしたい機能の直前に
newrelic_start_external_segment()
を追加し、必要なパラメーターを供給します。 - モニターしたい機能の直後に
newrelic_end_segment()
を追加し、必要なパラメーターを供給します。
詳細については、GitHubにあるC SDKのインストレーション手順およびC SDK
libnewrelic.h
ドキュメントを参照してください。 - 任意コードへの呼び出しをインストゥルメントする(カスタムセグメント)
-
任意コードへの呼び出しをモニターするには、インストゥルメントされたトランザクション内のカスタムセグメントをインストゥルメントします。カスタムセグメントは、トランザクションページにある内訳表に表示されます。
カスタムセグメントをインストゥルメントするには、モニターしたい機能の周囲でインストゥルメンテーションを開始および停止するNew Relic機能をラップします。
- トランザクションをインストゥルメントします。
- モニターしたい機能の直前に
newrelic_start_segment()
を追加し、必要なパラメーターを供給します。 -
モニターしたい機能の直後に
newrelic_end_segment()
を追加し、必要なパラメーターを供給します。
詳細については、GitHubにあるC SDKのインストレーション手順およびC SDK
libnewrelic.h
ドキュメントを参照してください。 - データストアへの呼び出しをインストゥルメントする
-
データストアへの呼び出しをモニターするには、インストゥルメントされたトランザクション内のデータストアセグメントをインストゥルメントします。データストアセグメントは、New Relicのトランザクションページにある内訳表とデータベースタブに表示されます。データストアセグメントはAPM
トランザクション
イベントのdatabaseDuration
属性としても表示できます。データストアセグメントをインストゥルメントするには、モニターしたい機能の周囲でインストゥルメンテーションを開始および停止するNew Relic機能をラップします。
- トランザクションをインストゥルメントします。
- データストアセグメントを説明する
newrelic_datastore_segment_params_t
を作成します。 - モニターしたい機能の直前に
newrelic_start_datastore_segment()
を追加し、必要なパラメーターを供給します。 - モニターしたい機能の直後に
newrelic_end_segment()
を追加し、必要なパラメーターを供給します。
詳細については、GitHubにあるC SDKのインストレーション手順およびC SDK
libnewrelic.h
ドキュメントを参照してください。データベース名とデータベースインスタンスの報告方法を設定するには、
newrelic_datastore_segment_config_t
を使用します。 - データストアセグメントの低速クエリトレースを報告する(SQLのみ)
-
低速クエリトレースを報告できるのは、SQLデータベースのみです。
特定した時間より長くかかるデータストアセグメントについて低速クエリトレースを報告するには、newrelic_app_config_tで次の設定を有効化します。
transaction_tracer.datastore_reporting.enabled
をtrue
に設定することで、低速クエリトレースを有効化します。- 閾値を設定するには、
transaction_tracer.datastore_reporting.threshold_us
に、マイクロ秒単位で時間の長さを追加します。
その後、データストアの呼び出し時間が閾値より長くかかる場合は、C SDKが低速クエリとして報告します。低速クエリトレースの詳細を表示するには、New Relicのデータベースおよび低速クエリページを使用します。
詳細については、GitHubにあるC SDKのインストレーション手順およびC SDK
libnewrelic.h
ドキュメントを参照してください。
エラーをインストゥルメントする
トランザクションのエラーをモニターするためにC SDKを使用するには、newrelic_notice_error()
機能を追加することにより、手動でソースコードをインストゥルメントする必要があります。
トランザクションのエラーおよびエラーのトレースは、New Relicのエラー解析ページに表示されます。C SDKは、エラーの総数および1分間に最大100件までのエラートレースを報告します。トランザクションのエラーは、APMTransactionError
イベントとして表示、クエリ、可視化することもできます。
関数の呼び出しをエラートレースに含めるには、GNUの-rdynamic
リンカーフラグを使い、コンパイルする際にアプリケーションをリンクさせます。-rdynamic
リンカーフラグを使うと、エラートレースがより意味を持つものになります。
トランザクションのエラーをインストゥルメントするには:
- トランザクションを開始します。
newrelic_notice_error()
でエラーを記録し、必要なパラメーターを供給します。- トランザクションを終了し、必要なパラメーターを供給します。
詳細については、GitHubにあるC SDKのインストレーション手順およびC SDK libnewrelic.h
ドキュメントを参照してください。
メトリクスのグループ化問題を回避する
アカウントまたはアプリケーションが、グループで管理した方がよい個別のメトリックスを送信し過ぎた場合、New Relicはメトリクスのグループ化問題またはMGIという用語でこの問題を示します。アプリケーションがNew Relicに不必要に大量なデータを送信している場合、これが原因となってチャート、表、そしてレポートの有効性が損なわれることとなります。
メトリックのグループ化問題が最も起きやすいのはWebトランザクションであり、特に当てはまるのはURLに基づく命名が行われた場合です。このような状況を回避するために、メトリクスのグループ化問題を参照してください。