重要
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.0
Feature: Continuous Profiling (preview)
Continuous Profiling is a new feature which is not yet generally available for use. The agent-side component code is now present in the agent but to actually use it ahead of the General Availability release, you will need to contact your New Relic sales representative to join the preview early.
Continuous Profiling repeatedly samples the Ruby call stacks of your running application and reports them to New Relic, so you can see which methods are consuming the most CPU time (or allocating the most objects) in production, without adding code to your app.
To turn it on, add the
stackprofandgoogle-protobufgems to your application'sGemfile, then setprofiling.enabledtotrue:profiling.enabled: trueWith only
profiling.enabledset, the agent samples CPU time every 10 milliseconds for the life of the process. These options let you tune that behavior:Configuration name Default Behavior profiling.enabled falseIf true, the agent collects and reports continuous profiling data.profiling.include cpuWhat to sample: cpufor CPU time, orobjectfor object allocations.profiling.sample_period 0.01Seconds between stack samples. Only used when profiling.includeiscpu. Must be between 0.000001 and 0.999999.profiling.object_allocation_interval 10000Object allocations between stack samples. Only used when profiling.includeisobject. Must be between 1000 and 999999.profiling.delay 0Milliseconds to wait before profiling starts. 0starts immediately.profiling.duration 0Milliseconds to profile before stopping automatically. 0profiles until the process exits.Feature: Add support for Dalli 5.1.1
Dalli 5.1.1 added arguments to some of the methods the agent instruments, which could raise an
ArgumentErroron multi-key operations or cause request options to be silently dropped. Now, the agent accepts and forwards a variable number of positional and keyword arguments for these methods. 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
重要
最新のエージェント バージョンが利用可能になったらすぐに更新することをお勧めします。最新バージョンにアップグレードできない場合は、エージェントを 90 日以内のバージョンに更新してください。エージェントを最新の状態に保つ方法の詳細については、こちらをご覧ください。
エージェントのリリースとサポート日については、New Relic Ruby エージェントのEOL ポリシーを参照してください。
v10.6.0
機能:HybridエージェントでSpanLinkイベントがサポートされるようになりました
OpenTelemetry APIによって作成されたスパンに、スパンリンクを関連付けることができるようになりました。リンクは、スパンの開始時に
links引数に渡すか、OpenTelemetry::Trace::Span#add_linkAPIを呼び出すことで追加できます。PR#3586機能:HybridエージェントでSpanEventイベントがサポートされるようになりました
OpenTelemetry APIによって作成されたスパンに、
OpenTelemetry::Trace::Span#add_eventAPIを介してSpanEventイベントを関連付けることができるようになりました。SpanEventイベントは、スパン上のタイムスタンプ付きアノテーションをキャプチャし、親スパンと一緒にNew Relicに送信されます。PR#3587機能:すべてのHybridエージェントスパンにスパンの種類を設定
以前は、外部リクエストセグメントまたはデータストアセグメントに変換されたOpenTelemetryスパンのみが、スパンの種類を属性として追加していました。現在、エージェントは、値が利用可能なすべてのOpenTelemetryスパンにスパンの種類を追加します。PR#3589
機能: OpenTelemetry::Tracer#start_root_spanのサポートを追加
スパンの種類が
:serverまたは:consumerである場合、OpenTelemetry::Tracer#start_root_spanAPIを使用して、指定されたスパンのトランザクションを強制的に開始できるようになりました。その他のスパンの種類については、何もしません。このメソッドは、バックグラウンドジョブの計装で最も一般的に使用されます。PR#3588バグ修正:
instrumentation.rails_event_logger: falseが計装を無効にしない問題を修正以前は、
instrumentation.rails_event_loggerをfalseに設定しても、期待どおりにRails.eventの計装が無効になりませんでした;Railsの起動中に引き続きインストールされていました。現在は修正されています。PR#3564バグ修正:計装設定キーのブール値のような値を
disabledに正規化以前は、
disabledのみがinstrumentation.*設定キーをオフにしていました。現在は、false、no、またはoffなどのブール値のような値もdisabledに解決され、計装がインストールされるのを防ぎます。PR#3579バグ修正:ライブラリごとのロギングサポートアビリティメトリクスに、各ライブラリの計装状態が反映されるようになりました
以前は、
Supportability/Logging/Ruby/{library}/{enabled|disabled}メトリクスは各ライブラリの実際の状態ではなく、すべてのライブラリに対してグローバルなapplication_logging.enabled設定の値を報告していました。その結果、特定のライブラリのロギング計装を無効にしていた場合や、そのライブラリのgemをまったく使用していなかった場合でも、メトリクスはenabledを報告していました。現在、各ライブラリのメトリクスは、自身のロギング計装が有効になっているかどうかを反映しています。PR#3571
重要
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.5.0
Feature: Add Dalli 5.0 support and fix meta protocol instrumentation
The agent now supports Dalli 5.0+, which removed
Dalli::Protocol::Binaryin favor of the meta protocol exclusively. For Dalli 3.2.0+,pipelined_getinstrumentation now correctly targetsDalli::Protocol::Base(where the method is defined) rather thanDalli::Protocol::Binary, fixing a gap whereget_multicalls went uninstrumented when using the meta protocol. For Dalli 5.0+, the agent additionally instrumentsDalli::Protocol::Meta#read_multi_req, which is invoked by Dalli's single-serverget_multioptimization. PR#3541Feature: Add active_record_use_table_name configuration option
A new configuration option,
active_record_use_table_name, uses an Active Record model's table name instead of its class name when naming metrics, spans, and transaction trace segments. This can particularly be helpful to reduce cardinality in applications using single-table inheritance. The option defaults tofalseto preserve existing behavior. PR#3540Feature: Partially redact license keys in agent logs
Previously, the agent would fully redact New Relic license keys in agent logs. Now, the first 10 characters are visible while the rest are replaced with
*. This preserves enough to troubleshoot region-related issues without exposing the secret portion of the key. PR#3547Bugfix: Fix Semantic Logger instrumentation incompatibility with
rails_semantic_loggerPreviously, an
ArgumentErrorwould be raised when an exception reachedActionDispatch::DebugExceptionswhile usingrails_semantic_logger. This has been fixed. Thank you to @jdelStrother for reporting this! PR#3548