重要
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v10.9.1
Bugfix: Action Controller instrumentation no longer errors when it can't identify the controller class
When the agent could not identify a request's controller class, it logged
TypeError: no implicit conversion of nil into Stringand thenNoMethodError: undefined method 'finish' for nil, and recorded no data for that request. These transactions are now namedController/(unknown)/<action>and recorded normally. PR#3691Bugfix: Prevent
Parallelworkers from hanging when reporting large payloadsWhen
parallelinstrumentation was enabled,Parallel.each/Parallel.mapwithin_processes:could hang forever. Each worker inherited the pipe write ends the agent registered for its earlier siblings, so those pipes couldn't reach end-of-file, and the agent's pipe listener thread blocked waiting on one of them. Any worker whose data exceeded the operating system pipe buffer then blocked on exit. Now, the agent closes each pipe's write end in the parent right after forking, and the listener no longer blocks on a single pipe while others still have data waiting. Thank you to @yayamochi for reporting this bug. Issue#3680 PR#3688Bugfix: gRPC calls no longer fail on requests from Synthetics monitors
When a request from a Synthetics monitor made a gRPC call, the agent added
X-NewRelic-Syntheticsto the call's metadata. gRPC only allows lowercase metadata keys, so the call raisedArgumentError: 'X-NewRelic-Synthetics' is an invalid header key. The agent now sends the synthetics headers in lowercase. gRPC server transactions also now read the synthetics headers from incoming metadata, so a gRPC service called during a Synthetics check records its trace and Synthetics attributes. PR#3693
重要
最新のエージェント バージョンが利用可能になったらすぐに更新することをお勧めします。最新バージョンにアップグレードできない場合は、エージェントを 90 日以内のバージョンに更新してください。エージェントを最新の状態に保つ方法の詳細については、こちらをご覧ください。
エージェントのリリースとサポート日については、New Relic Ruby エージェントのEOL ポリシーを参照してください。
v10.9.0
機能:Continuous Profiling(プレビュー)
Continuous Profilingは、まだ一般提供されていない新しい機能です。エージェント側のコンポーネントコードは現在エージェントに存在しますが、一般提供リリースに先立って実際に使用するには、New Relicの営業担当者に連絡してプレビューに早期参加する必要があります。
Continuous Profilingは、実行中のアプリケーションのRubyのコールスタックを繰り返しサンプリングしてNew Relicに報告するため、アプリケーションにコードを追加することなく、本番環境でどのメソッドが最もCPU時間を消費しているか(または最も多くのオブジェクトを割り当てているか)を確認できます。
これを有効にするには、
stackprofおよびgoogle-protobufのgemをアプリケーションのGemfileに追加し、profiling.enabledをtrueに設定します:profiling.enabled: trueprofiling.enabledのみを設定した場合、エージェントはプロセスの存続期間中、10ミリ秒ごとにCPU時間をサンプリングします。以下のオプションでその動作を調整できます:設定名 デフォルト 行動 profiling.enabled falsetrueの場合、エージェントは継続的なプロファイリングデータを収集し、レポートします。profiling.include cpuサンプリング対象:CPU時間の場合は cpu、オブジェクト割り当ての場合はobject。profiling.sample_period 0.01スタックサンプル間の秒数。 profiling.includeがcpuの場合にのみ使用されます。0.000001から0.999999の間である必要があります。profiling.object_allocation_interval 10000スタックサンプル間のオブジェクト割り当て。 profiling.includeがobjectの場合にのみ使用されます。1,000から999,999の間である必要があります。profiling.delay 0プロファイリングが開始される前に待機するミリ秒数です。 0の場合はすぐに開始されます。profiling.duration 0自動的に停止する前にプロファイリングを行うミリ秒数です。 0の場合は、プロセスが終了するまでプロファイリングを行います。機能:Dalli 5.1.1のサポートの追加
Dalli 5.1.1では、エージェントによってインストゥルメントされた一部のメソッドに引数が追加されました。これにより、マルチキー操作で
ArgumentErrorが発生したり、リクエストオプションが暗黙のうちに破棄されたりする可能性がありました。現在、エージェントはこれらのメソッドに対して可変数の位置引数とキーワード引数を受け入れ、転送します。PR#3683
重要
最新のエージェント バージョンが利用可能になったらすぐに更新することをお勧めします。最新バージョンにアップグレードできない場合は、エージェントを 90 日以内のバージョンに更新してください。エージェントを最新の状態に保つ方法の詳細については、こちらをご覧ください。
エージェントのリリースとサポート日については、New Relic Ruby エージェントのEOL ポリシーを参照してください。
v10.8.0
機能:Google Cloud Runのワーカープールとジョブの一意のホスト名を報告します
PR#3609で追加されたCloud Runのホスト名サポートは、Cloud Run Servicesによって設定される環境変数である
K_REVISIONを通じてのみCloud Runを検出していました。エージェントはCLOUD_RUN_REVISION(ワーカープール)とCLOUD_RUN_EXECUTION(ジョブ)も認識するようになったため、utilization.gcp_cloud_run.use_instance_as_hostはこれら3つのリソースタイプすべてに適用されるようになりました。utilization.gcp_cloud_run.include_revision_in_hostがtrueの場合、ホスト名はこれらの変数のうち存在する方から構築されます — たとえば、ジョブの場合は{CLOUD_RUN_EXECUTION}-{instance id}です。Issue#3651 PR#3652機能:
browser_monitoring.version設定オプションを追加顧客は、新しい
browser_monitoring.version設定オプションを設定することで、New Relicが挿入する正確なBrowserエージェントローダーのバージョンを固定できるようになりました。現在利用可能でサポートされているバージョンについては、BrowserエージェントのEOLポリシーをご覧ください。PR#3663機能:バックグラウンドジョブライブラリにspan.kindを追加
これで、バックグラウンドジョブライブラリの
produceおよびconsumeの操作にspan.kind属性が追加されます。これには、ActiveJob、Sidekiq、Resque、およびDelayedJobが含まれます。PR#3636バグ修正:prependモードで、DelayedJobの計装がすべてのワーカーで再インストールされなくなりました
DelayedJobの計装がprepend(デフォルト)を介してインストールされている場合、同じプロセス内で複数の
Delayed::Workerを作成すると、エージェントは「Installing DelayedJob instrumentation」をログに記録し、追加のワーカーごとにプラグインを再度初期化していました。これは無害ですがノイズが多いものでした;現在は、既存のチェーン計装の動作に合わせて、プロセスごとに1回だけ実行されるようになりました。PR#3654バグ修正:許可リストに登録された設定値は大文字と小文字を区別しなくなりました。
以前は、許可リストに登録された設定オプションでは大文字と小文字の完全な一致が必要だったため、予期しない大文字と小文字の組み合わせの値 — たとえば
slow_sql.record_sqlに対するOBFUSCATEDやObFuScAtEdなど — は、暗黙のうちにデフォルトにフォールバックしていました。許可リストに対して検証される設定オプションは、大文字と小文字を問わず値に一致するようになったため、どちらもobfuscatedと同じように扱われます。Issue#3613 PR#3645バグ修正:Pumaが遅延読み込みされた場合にPumaの計装が機能するようになりました
gem "puma", require: falseでは、エージェントの依存関係チェックが実行されたときにPumaがまだロードされていなかったため、Pumaの計装のインストールに失敗していました。エージェントはPuma::RackHandlerをPumaが存在する証拠として認識するようになり、この問題が修正されました。Issue#3641 PR#3650
重要
最新のエージェント バージョンが利用可能になったらすぐに更新することをお勧めします。最新バージョンにアップグレードできない場合は、エージェントを 90 日以内のバージョンに更新してください。エージェントを最新の状態に保つ方法の詳細については、こちらをご覧ください。
エージェントのリリースとサポート日については、New Relic Ruby エージェントのEOL ポリシーを参照してください。
v10.7.1
バグ修正: Dalli 5.1.0でのマルチキー操作におけるArgumentErrorを解決しました。
この修正により、マルチ操作およびパイプライン操作においてオプションのリクエストオプション引数を受け入れて転送するように、Dalliの計装が更新されます。修正を提供していただいた@dbackeusに感謝します! PR#3642
バグ修正: セグメントの開始に失敗したときに、Async::HTTP requestsが
NoMethodErrorを発生させなくなりました。エージェントが
Async::HTTPリクエストのセグメントを作成中に内部エラーに遭遇した場合、計装はその欠落したセグメントをそのまま使用し、NoMethodErrorを発生させる可能性がありました。この問題は修正されました。@ydahに感謝します。PR#3640
重要
最新のエージェント バージョンが利用可能になったらすぐに更新することをお勧めします。最新バージョンにアップグレードできない場合は、エージェントを 90 日以内のバージョンに更新してください。エージェントを最新の状態に保つ方法の詳細については、こちらをご覧ください。
エージェントのリリースとサポート日については、New Relic Ruby エージェントのEOL ポリシーを参照してください。
v10.7.0
機能: transaction_tracer.cap_segment_artifactsを追加設定オプション
多数のセグメントを持つ長時間実行されるトランザクションは、トランザクションの存続期間中、メモリ使用量を継続的に増加させる可能性があります。エージェントは、オプトインの
transaction_tracer.cap_segment_artifacts設定オプションを提供するようになりました(デフォルトはfalseです)。有効にすると、transaction_tracer.limit_segmentsに達した時点で、エージェントはそのトランザクションで後から作成されたセグメントの排他的時間の記録も停止します。これにより、トランザクションのタイミングデータの精度は低下しますが、メモリ使用量は削減されます。PR#3615機能: Puma server-statisticsの計装を追加
エージェントは、Pumaのクラスタ全体のサーバー統計をサンプリングし、
backlog、running、pool_capacity、max_threads、およびrequests_countを含むRuby/Puma/*タイムスライスメトリクスとして報告するようになりました。統計は、シングルモード、およびpreload_app!が有効な場合はクラスタモードでサンプリングされます。この計装はデフォルトで無効になっています。有効にするには、disable_puma_instrumentationをfalseに設定します。有効にすると、エージェントはこれらのメトリクスを配信するためにPumaマスタープロセスでレポートスレッドを開始し、Pumaワーカーと並行して追加のエージェント接続を実行します。サンプリング間隔は、新しいpuma.sample_rate設定(デフォルトは60秒)で設定可能です。Puma 6.6以降が必要です。詳細については、ドキュメントをご覧ください。PR#3578機能:Google Cloud Runインスタンスの一意のホスト名を報告する
エージェントはCloud Runを検出し、個々のインスタンスを区別できるように、GCPインスタンスIDをホスト名として報告するようになりました。この変更前は、すべてのGoogle Cloud Runのホスト名は
localhostでした。この機能は、新しいutilization.gcp_cloud_run.use_instance_as_host設定オプション(デフォルトはtrue)によって制御されます。ホスト名を代わりに{K_REVISION}-{instance id}として報告するには、utilization.gcp_cloud_run.include_revision_in_host(デフォルトはfalse)をtrueに設定します。ここで、K_REVISIONはCloud Runのリビジョン名です。Issue#3295 PR#3609バグ修正: transaction_tracer.limit_segmentsの後にスローSQLが記録されなくなりました超過
トランザクションが
transaction_tracer.limit_segmentsを超えた後でも、その後に作成されたデータストアセグメントで引き続きスローSQLが記録される可能性がありました。制限に達した後に作成されたセグメントについて、エージェントはスローSQLの記録を停止するようになりました。PR#3615バグ修正:マルチデータベースのRailsアプリ(Rails>=7.2)で、実行計画が誤ったデータベースをターゲットにする可能性がありました。
Rails 7.2+では、エージェントは専用の接続ではなく、アプリのデフォルト/共有プールからの接続を使用して実行計画を収集していました。これは主にマルチデータベースアプリに影響を与えました。実行計画が誤ったデータベースに対して生成される可能性があり、実行計画が失敗すると共有接続が不正な状態のままになり、無関係なrequestsに影響を与える可能性がありました。エージェントは、Rails 7.2以前と同様に、実行計画に独自の専用接続を使用するようになり、実行計画の試行が失敗するたびにその接続をリセットまたは破棄するため、不正な接続が再利用されることはありません。Issue#3610 PR#3612
バグ修正: ブラウザ監視の計装が以下で失敗しなくなりました
FrozenError応答本文の最初のフラグメントがフリーズされた
Stringであり、複数のフラグメントが存在する場合、ブラウザの計装がFrozenErrorにヒットし、ブラウザのタイミングヘッダーが挿入されませんでした。これは、コンパイルされた文字列をより多くフリーズするようになったERB6.0.3+で発生し始めました。この問題は修正されました。Issue#3624 PR#3625バグ修正:すべての文字種を許可するようにブール値の設定値を正規化
バージョン9.xでは、エージェントは"FALSE"のような大文字のブール値や、"True"のような大文字と小文字が混在する値を受け入れていました。バージョン10.0.0にはPR#3341が含まれており、これにより大文字と小文字を区別しない要件が意図せず削除されていました。これにより、すべて小文字以外の文字種を使用していたユーザーは、設定オプションがデフォルトにフォールバックしていました。現在、エージェントは再び大文字と小文字を区別しないチェックを使用するようになりました。Issue#3632 PR#3633
重要
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v10.6.0
Feature: SpanLink events are now supported for the Hybrid agent
Spans created by an OpenTelemetry API can now have Span Links associated with them. Links can be added on a span's start, by passing them to the
linksargument, or by calling theOpenTelemetry::Trace::Span#add_linkAPI. PR#3586Feature: SpanEvent events are now supported for the Hybrid agent
Spans created by an OpenTelemetry API can now have SpanEvent events associated with them via the
OpenTelemetry::Trace::Span#add_eventAPI. SpanEvent events capture timestamped annotations on a span and are sent to New Relic alongside the parent span. PR#3587Feature: Set span kind on all Hybrid agent spans
Previously, only OpenTelemetry spans translated into external request segments or datastore segments added span kind as an attribute. Now, the agent adds span kind to all OpenTelemetry spans where the value is available. PR#3589
Feature: Add support for OpenTelemetry::Tracer#start_root_span
The
OpenTelemetry::Tracer#start_root_spanAPI can now be used to force a transaction to start for a given span, provided it has a:serveror:consumerspan kind. For any other span kinds, it will no-op. This method is most commonly used in background job instrumentation. PR#3588Bugfix: Fix
instrumentation.rails_event_logger: falsenot disabling the instrumentationPreviously, setting
instrumentation.rails_event_loggertofalsedidn't disable theRails.eventinstrumentation as expected; it would still be installed during Rails boot. This is now fixed. PR#3564Bugfix: Normalize boolean-like values to
disabledfor instrumentation config keysPreviously, only
disabledwould turn off aninstrumentation.*config key. Now, boolean-like values such asfalse,no, oroffalso resolve todisabledand prevent the instrumentation from being installed. PR#3579Bugfix: Per-library logging supportability metrics now reflect each library's instrumentation state
Previously, the
Supportability/Logging/Ruby/{library}/{enabled|disabled}metrics reported the value of the globalapplication_logging.enabledsetting for every library, rather than each library's actual state. As a result, the metric reportedenabledeven when you had disabled logging instrumentation for a specific library or weren't using that library's gem at all. Now, each library's metric reflects whether its own logging instrumentation is enabled. PR#3571