Ruby で HTTP クライアントトレース

以下の目的で、Ruby エージェントは、アプリケーションやスクリプトによって送信された HTTPリクエストをトレースできます。

  • HTTPリクエストを取得し、かかっている時間の長さやそれがヒットしているホストに関するメトリクスを記録する。
  • HTTP リクエストごとにトランザクショントレースにノードを注釈として付ける
  • New Relic が計測したアプリ間におけるリクエストごとのクロスアプリケーショントレースを提供

サポートしている HTTP クライアントライブラリ

以下の HTTP クライアントライブラリは、現在、Ruby エージェントのサポート対象です。

名前 最低サポートバージョン 説明
Net::HTTP N/A (Ruby の標準ライブラリに含まれる) また、httparty のように Net::HTTP 上に構築されたライブラリにが含まれています。
Excon 0.10.1 Excon メモをご覧ください。
Typhoeus 0.5.3 Hydra リクエストを完全には計測しません。1.8.7 が安定しています。Typhoeus メモをご覧ください。
HTTPClient 2.2.0 非同期のリクエストの計測は、サポートしていません。
Curb 0.8.1 Curl::Multi リクエストは部分計測です。Curb メモをご覧ください。

Excon メモ

New Relic Ruby エージェントは、Excon のバージョン 0.10.1 以上をサポートしています。

Excon のバージョン 0.19.0 以上における Excon 計測は、Excon ミドルウェアを Excon.defaults:middlewares キーに追加することで、可能となります。そして、お使いのアプリにおいて、Excon.defaults を変更している場合は、:middlewares キーの値が変わっていないことを確認する必要があります。

Typhoeus メモ

New Relic Ruby エージェントは、Typhoeus のバージョン 0.5.3 以上をサポートしています。

TyphoeusのHydra経由で送信された並列リクエストは、現時点では部分的なトレースのみをサポートしています。このようなリクエストでは、Ruby エージェントは、バッチ全体を表す単一のトランザクショントレースのノードを記録します。また、バッチ内の個々のリクエストの詳細を表示することはできません。Hydra 経由で送信されたリクエストは、クロスアプリケーションのトレースのサポートを得ることはありません。

MRI 1.8.7 上で Typhoeus を実行しているときに、テストを実行すると、セグメンテーション違反の重大な問題が発生する可能性があります。推奨: これらの問題を避けるには、Ruby エンタープライズエディション もしくは MRI 1.9.3 以上 を使ってください。

Curb メモ

New Relic Ruby エージェントは、Curb バージョン 0.8.1 以上 をサポートしています。JRuby 上では、Curb の計測は、サポートしていません

Curl::Multi API 経由のリクエストは、現時点では部分的なトレースのみサポートしています(Typhoeus Hydra API 経由のリクエストと同等のものを提供します)。
このようなリクエストでは、Ruby エージェントは、バッチ全体を表す単一のトランザクショントレースのノードを記録しますが、バッチ内の個々のリクエストの詳細を表示することはできません。Curl::Multi 経由で送信されたリクエストは、クロスアプリケーションのトレースのサポートを得ることはありません。