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トランザクションとしてマークする |
|
トランザクションが Apdex スコアに影響するのを防ぐ | Ignoring Apdex contributions を参照してください。 |
関連ログの参照
アプリケーションのエラーとトレースのコンテキスト内でログを直接表示するには、次のAPI呼び出しを使用してログに注釈を付けます。
ログデータと他のテレメトリーデータとの相関関係については、 logs in context のドキュメントをご覧ください。
エラーを収集または無視する
通常、エージェントは自動的にエラーを検出します。しかし、エージェントを使って手動でエラーをマークすることもできます。また、エラーを 無視または予想される としてマークすることもできます。
以下を行う場合... | 操作... |
---|---|
エージェントが自動的に報告しないエラーを報告する | |
エージェントがエラーをまったく報告しないようにする | エラーを無視としてマークします。 エラーコレクター を参照して、 |
エラーがApdexやエラーレートに影響することを防ぎつつ、New Relicに報告することができます。 | エラーを期待通りにマークします。 Sending New Relic handles errors を参照し、 |
アプリケーションからカスタムイベントとメトリクスデータを送信する
APMには、任意のカスタムデータを記録する多くの方法が含まれます。New Relicデータ型の説明については、データ収集をご覧ください。
以下を行う場合... | 操作... |
---|---|
ダッシュボードで分析できるように、イベントに関するデータを送信する | |
メタデータを使用してイベントにタグ付けし、ダッシュボードまたはエラー分析でフィルターしてファセットする | カスタム属性の追加.属性のハッシュを に渡す |
カスタムパフォーマンスデータをレポートする |
ブラウザエージェントの制御
通常、ブラウザエージェントは、ページに自動的に追加されるか、JavaScriptスニペットをコピー/ペーストすることで展開されます。これらの推奨方法の詳細については、 ブラウザモニタリングにアプリを追加する を参照してください。ただし、APMエージェントのAPIコールでブラウザエージェントを取得することもできます。詳細については、 browser_timing_header()
を参照してください。
データストアへの呼び出しをインストゥルメントする
これらのメソッドを使用して、アプリの他のデータストアへの接続に関するデータを収集します。
以下を行う場合... | 操作... |
---|---|
New Relic が自動的にインストルメントしていないデータストアへのタイムコール |
|
データストアの呼び出しをRubyのブロックできれいにまとめることができなかった場合 |
|
SQLクエリをタイミングよくキャプチャ |
|
SQL以外のクエリをタイミングを合わせて取得 |
|
外部への機器呼び出し
これらの方法は、外部からの要求に応じてデータを収集するために使用します。
以下を行う場合... | 操作... |
---|---|
New Relicが自動的に計測していない外部リクエストへのコールをタイムアウトさせる |
|
クロスアプリケーショントレーシング(CAT)ヘッダを送信用HTTPリクエストに追加する | 使用 |
受信したHTTPリクエストからCATヘッダを読み取る | 使用 |
アウトバウンドリクエストでCAT情報を伝送するための難読化された文字列の生成 | 使用方法 |
インバウンドリクエストから受け取ったCAT情報を含む難読化された文字列の処理 | 使用 |
分散型トレーシングのためのインストゥルメントコール
重要
以下のAPIの例では、Rubyエージェントのバージョン6.9.0以上が必要です。
これらのAPIは、 分散型トレーシングが有効になっている必要があります。.
Distributed tracing では、リクエストが分散システムを通過する際のパスを確認することができます。
以下のコールを使用して分散型トレーシングを実装する方法の一般的な説明については、 Use distributed tracing APIs を参照してください。
以下を行う場合... | 操作... |
---|---|
呼び出されたサービスにペイロード/ヘッダーを送信します。 |
|
最初のサービスから受け取ったペイロード/ヘッダーを受け入れ、これらのサービスをトレースで結びつける | 参照 |