• ログイン今すぐ開始

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

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

問題を作成する

Rubyエージェント7.xから8.xへの移行ガイド

概要

このガイドでは、Rubyエージェントの7.xシリーズと8.xシリーズの主な変更点、アップグレード時に発生する可能性のある問題、およびバージョン8.xへの移行を成功させる方法について説明します。

主な変更点は以下の通りです。

詳細は、8.0のマイルストーン をご覧ください。

add_method_tracer API メソッドの変更

メトリック名のパラメータにProcsを指定すると、文字列が補間されなくなる

add_method_tracerの 2 番目の引数は、トレースされたメソッドへの呼び出しを記録するために使用されるメトリックの名前です。

これまでは、この文字列にRubyスタイルの補間を行うことで、メトリック名にメソッド受信側の変数を含めることができました。例えば

# old (<= 7.2)
add_method_tracer :foo, 'metric_#{args[0]}'

8.0では、この文字列は補間されなくなりました。上記の動作を維持するには、代わりに Proc を渡してください。

# new (8.0+)
add_method_tracer :foo, -> (*args) { "metric_#{args[0]}" } # note the double-quotes

add_method_tracerに渡される Proc のアリティは、元のトレースされたメソッドのアリティと一致する (または互換性のあるスプラットを使用する) 必要があることに注意してください。

:code_header および:code_footerパラメータは Procs のみを受け入れます

メトリック名と同様に、 add_method_tracerに対する:code_headerおよび:code_footerオプションは、以前はメソッド レシーバーのコンテキストで補間される文字列として指定されていました。

Ruby エージェント 8.0 では、上記の例のように、 :code_header:code_footerは Procs として指定された場合にのみ呼び出されます。

メソッドごとに 1 回add_method_tracerを呼び出します

同じメソッドでadd_method_tracerを複数回呼び出すと、そのメソッドに対して以前に定義されたメソッド トレーサが上書きされます。トレースされたメソッドごとにadd_method_tracer行が 1 つだけある必要があります。

以前は、エージェントは、複数の指標を同じメソッドに追加することを許可していましたが、そのような指標ごとにadd_method_tracerを 1 回呼び出す必要がありました。これは引き続き実行できますが、メトリック名をadd_method_tracerの 2 番目の引数として文字列またはプロシージャの配列として渡す必要があります。

# old
add_method_tracer :foo, 'metric1'
add_method_tracer :foo, 'metric2', push_scope: false
add_method_tracer :foo, 'metric3', push_scope: false
# new
add_method_tracer :foo, ['metric1', 'metric2', 'metric3']

push_scope: falseが指定されていない限り、最初のメトリック名はスコープ メトリックとして作成されることに注意してください。次の名前付き指標は対象外になります。トレースされた各メソッドには、スコープ メトリックが 1 つしかありません。

ヒント

古いバージョンの Mocha では、更新されたadd_method_tracerで問題が発生する可能性があります。Mocha バージョン 1.2.0 ではこのバグが修正されているため、エージェントのバージョンをアップグレードした後にテスト スイートで次のようなエラーが発生した場合:

NoMethodError: super: no superclass method 'instance_method' for <ExampleClass>

Mocha バージョン < 1.2.0がインストールされている場合は、Mocha バージョンを1.2.0以上に増やしてみてください。

このエラーは、テスト環境でMochaのメソッドを呼び出した場合にのみ発生します。しかし、トラブルシューティングの際には、アプリケーションの機能を確認することをお勧めします。

Distributed Tracingはデフォルトで有効です。

distributed_tracing.enabledのデフォルトの構成オプションは、バージョン 8.0 以降では true に設定されています。分散トレースを無効にするには、この構成オプションをnewrelic.ymlで false に設定します。

distributed_tracing:
enabled: false

クロスアプリケーショントレースは非推奨

Cross Application Tracing は、8.0では非推奨となっており、将来のリリースで削除される予定です。

ヒント

分散トレースとクロスアプリケーショントレースを同時に使用することはできません。両方の設定オプションが有効な場合は、分散トレースのみが使用されます。

クロスアプリケーショントレースを継続して使用するには、newrelic.ymlで分散型トレースとクロスアプリケーショントレースの両方の設定を更新する必要があります。

cross_application_tracing:
enabled: true
distributed_tracing:
enabled: false

非推奨のAPIメソッドとレガシー・インスツルメンテーションの削除

以下のメソッドは、以前は非推奨でしたが、現在は削除されています。

削除

置き換え

disable_transaction_tracing API メソッド

disable_all_tracingまたはignore_transaction API メソッド

External.start_segment API メソッド

Tracer#start_external_request_segment API メソッド

Transaction.wrap API メソッド

Tracer#in_transaction API メソッド

Mongo< 2.1 instrumentation

Mongo 2.1以上へのアップグレード

Excon< 0.19.0 instrumentation

Excon 0.19.0以上へのアップグレード

Copyright © 2023 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.