• ログイン無料アカウント

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

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

問題を作成する

RubyのエージェントAPIを利用するためのガイド

New Relic の Ruby エージェントは、パブリック API を提供しており、ドキュメントは GitHub で公開されています。GitHub のドキュメントでは、Ruby アプリのカスタムインスツルメンテーションを設定し、より詳細なデータを収集する方法が紹介されています。

以下のセクションでは、共通の目標、解決策、ドキュメントの関連部分へのリンクを説明しています。

重要

Ruby エージェント API を使用する場合は、最新の Ruby エージェント・リリースを使用してください。以下の例で使用しているいくつかのAPIは,Ruby agent version 4.6.0 以上が必要です。

トランザクションを使用して、コードの欠落している部分をインストゥルメントする

アプリをインストゥルメントするために、New Relicはコードで各パスをそのトランザクションに分離します。New Relicは、これらのトランザクションの親メソッドの時間をインストゥルメントして総合的なパフォーマンスを測定し、追加詳細として長期間実行されているトランザクションからトランザクショントレースを収集します。

これらのメソッドは、New Relicがコードの特定の部分をインストゥルメントしていない場合に使用します。

以下を行う場合...

操作...

New Relicが自動的に計測していないメソッドの時間

新しいトランザクションを作成します。 トランザクションエントリーポイントのトレース を参照してください。

単一のメソッド呼び出し以外の時間

Use Tracer API.

トランザクションのNew Relicへのレポートを抑止する

Ignore トランザクションです。

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

New Relic UIにトランザクションがすでに表示されているが、そのトランザクション中に呼び出された特定のメソッドに関するデータが十分ではない場合は、これらの各メソッドをより詳細に時間計測するセグメントを作成できます。たとえば、複雑なロジックの特に重要なメソッドの時間を計測する必要があることがあります。

これらのメソッドは、既存のトランザクション内でメソッドをインストゥルメントする場合に使用します。

以下を行う場合...

操作...

特定のメソッドを時間

メソッドトレーサーを参照.

単一のメソッド呼び出し以外の時間

Use Tracer API.

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

計測対象のコードがNew Relic UIに表示される場合もありますが、メソッドの詳細の一部が有用ではないことがあります。例:

これらのメソッドは、New Relic UI ですでに表示されているトランザクションを New Relic がどのように計測するかを変更する場合に使用します。

以下を行う場合...

操作...

トランザクションの名前を変更する

参照 ネーミング・トランザクション.

トランザクションにメタデータ(顧客のアカウント名またはサブスクリプションレベルなど)を追加する

使用 カスタムアトリビュート.参照 カスタムアトリビュートの追加.

バックグラウンド・ジョブとしてトランザクションをマークする

Monitor custom background jobs を参照してください。

トランザクションをWebトランザクションとしてマークする

:category =>:controller オプションを set_transaction_name() に渡します。詳細については、 Naming transactions を参照してください。

トランザクションが Apdex スコアに影響するのを防ぐ

Ignoring Apdex contributions を参照してください。

関連ログの参照

アプリケーションのエラーとトレースのコンテキスト内でログを直接表示するには、次のAPI呼び出しを使用してログに注釈を付けます。

ログデータと他のテレメトリーデータとの相関関係については、 logs in context のドキュメントをご覧ください。

エラーを収集または無視する

通常、エージェントは自動的にエラーを検出します。しかし、エージェントを使って手動でエラーをマークすることもできます。また、エラーを 無視または予想される としてマークすることもできます。

以下を行う場合...

操作...

エージェントが自動的に報告しないエラーを報告する

参照 New Relic のハンドリングエラーの送信.

エージェントがエラーをまったく報告しないようにする

エラーを無視としてマークします。 エラーコレクター を参照して、 error_collector.ignore_errors の設定オプションを使用してください。

エラーがApdexやエラーレートに影響することを防ぎつつ、New Relicに報告することができます。

エラーを期待通りにマークします。 Sending New Relic handles errors を参照し、 :expectedtrue に設定してください。

アプリケーションからカスタムイベントとメトリクスデータを送信する

APMには、任意のカスタムデータを記録する多くの方法が含まれます。New Relicデータ型の説明については、データ収集をご覧ください。

以下を行う場合...

操作...

ダッシュボードで分析できるように、イベントに関するデータを送信する

カスタムイベントの作成.参照 record_custom_event() .

メタデータを使用してイベントにタグ付けし、ダッシュボードまたはエラー分析でフィルターしてファセットする

カスタム属性の追加.属性のハッシュを に渡すrecord_custom_event() .

カスタムパフォーマンスデータをレポートする

カスタム メトリックの作成.参照 record_metric() .

ブラウザエージェントの制御

通常、ブラウザエージェントは、ページに自動的に追加されるか、JavaScriptスニペットをコピー/ペーストすることで展開されます。これらの推奨方法の詳細については、 ブラウザモニタリングにアプリを追加する を参照してください。ただし、APMエージェントのAPIコールでブラウザエージェントを取得することもできます。詳細については、 browser_timing_header() を参照してください。

データストアへの呼び出しをインストゥルメントする

これらのメソッドを使用して、アプリの他のデータストアへの接続に関するデータを収集します。

以下を行う場合...

操作...

New Relic が自動的にインストルメントしていないデータストアへのタイムコール

wrap() を参照してください。

データストアの呼び出しをRubyのブロックできれいにまとめることができなかった場合

Tracer.start_datastore_segment() を参照してください。 ****finish をこのメソッドで返されたオブジェクトに対して呼び出す必要があります。

SQLクエリをタイミングよくキャプチャ

notice_sql() を参照してください。

SQL以外のクエリをタイミングを合わせて取得

notice_statement() を参照してください。

外部への機器呼び出し

これらの方法は、外部からの要求に応じてデータを収集するために使用します。

以下を行う場合...

操作...

New Relicが自動的に計測していない外部リクエストへのコールをタイムアウトさせる

Tracer.start_external_segment() を使用します。 ****finish をこのメソッドで返されたオブジェクトに対して呼び出す必要があります。

クロスアプリケーショントレーシング(CAT)ヘッダを送信用HTTPリクエストに追加する

使用 add_request_headers().

受信したHTTPリクエストからCATヘッダを読み取る

使用 read_response_headers().

アウトバウンドリクエストでCAT情報を伝送するための難読化された文字列の生成

使用方法 get_request_metadata().

インバウンドリクエストから受け取ったCAT情報を含む難読化された文字列の処理

使用 process_response_metadata().

分散型トレーシングのためのインストゥルメントコール

重要

以下のAPIの例では、Rubyエージェントのバージョン6.9.0以上が必要です。

これらのAPIは、 分散型トレーシングが有効になっている必要があります。.

Distributed tracing では、リクエストが分散システムを通過する際のパスを確認することができます。

以下のコールを使用して分散型トレーシングを実装する方法の一般的な説明については、 Use distributed tracing APIs を参照してください。

以下を行う場合...

操作...

呼び出されたサービスにペイロード/ヘッダーを送信します。

insert_distributed_trace_headers() を参照してください。

最初のサービスから受け取ったペイロード/ヘッダーを受け入れ、これらのサービスをトレースで結びつける

参照 accept_distributed_trace_headers().

Copyright © 2022 New Relic株式会社。