New Relic APMエージェントはOpenTelemetry (OTel) API をサポートするようになりました。これにより、 New Relicの強力なAPM機能への完全なアクセスを維持しながら、ベンダーOpenTelemetry API を使用してアプリケーションを計測できるようになります。 この機能によりNew Relic提供するサイト インの深さと機能を犠牲にすることなく、移植可能な計装コードを柔軟に作成できるようになります。
利点 New Relic エージェントで OpenTelemetry API サポートを使用すると、いくつかの利点があります。
ベンダーニュートラル計装 : オブザーバビリティプラットフォーム全体で動作する標準のOpenTelemetry API を使用してカスタムインストゥルメンテーションを作成します。移行は必要ありません : 現在の計装を置き換えることなく、既存のNew Relicエージェントで OTel APIサポートを有効にします段階的な導入 : 既存のNew Relic計装が引き続き機能しながら、新しいカスタムインストゥルメンテーションにはOpenTelemetry API を使用します混合モードの互換性 : New Relicエージェント、 OpenTelemetry API、または純粋なOTelエージェントを使用してインストゥルメントされたサービス間でrequestsシームレスにレースします。コミュニティ計装 : フレームワークとライブラリにネイティブのOpenTelemetry計装を活用するこの機能が提供するもの New Relic エージェントで OpenTelemetry API サポートを有効にすると、エージェントは次のことが可能になります。
OpenTelemetry API を使用して作成されたスパン、トレース、メトリクス、ログをキャプチャします OTel で生成されたテレメトリーをNew Relic APMにシームレスに統合 New Relicの組み込み計装と競合しないネイティブOpenTelemetry計装をサポート New RelicとOpenTelemetryインストゥルメントの混合サービス全体でトレースコンテキストを維持する 重要 この機能はデフォルトでは無効になっています 。エージェント設定を通じて明示的に有効にする必要があります。
サポートされている言語と機能 OpenTelemetry API サポートは、次の New Relic APM エージェントで利用できます。
言語
最小バージョン
トレースAPI
メトリクスAPI
ログAPI
スパンのリンク
スパン上のイベント
Java
[9.1.0]
Node.js
[13.13.0]
.NET
[10.49.0]
下記の注記を参照
Python
[11.5.0]
下記の注記を参照
Ruby
[10.2.0]
ヒント .NET および Python ログ: .NET エージェントは、ログ データのOpenTelemetry APIとなったログ ライブラリをすでに使用しています。 Python エージェントはすでにログ記録モジュールをサポートしています。下位互換性のため、 OpenTelemetry APIサポートを有効にしても、これらのエージェント計装ログの方法は変わりません。
混合環境でのサンプリング すべてのエージェントがトレース比率サンプリングを サポートするようになり、OpenTelemetry 標準に準拠し、混合環境全体で一貫したサンプリング ロジックが確保されます。
主な利点 :
New Relicおよび OTel-Instulment で行われたサービス全体での一貫したサンプリング決定 OTel SDKからのアップストリームトレース決定の保存 アダプティブ サンプリングの仕組み、エージェントごとのサンプリング目標、および設定オプションの詳細については、ディストリビューティッド(分散)トレーシング サンプリングを 参照してください。
サポートされている計装タイプ ネイティブ計装(自動) ネイティブのOpenTelemetry計装はそのままサポートされています。 これらの計装は、メンテナによってライブラリまたはフレームワークに直接組み込まれ、 OpenTelemetry APIサポートを有効にすると自動的に機能します。
利用可能な具体的なネイティブ計装は言語エージェントによって異なります。 各言語でどの計装がサポートされているかの詳細については、 「設定」セクションを 参照してください。
重要 既知の制限 : OpenTelemetryセマンティック規約の違いにより、一部のネイティブ計装では、 New Relicの組み込み計装とわずかに異なるスパン名またはメトリクス名が生成される場合があります (例: Elasticsearch 、 RabbitMQ)。
OpenTelemetry API を使用したカスタムインストゥルメンテーション 標準のOpenTelemetry API を使用してカスタムインストゥルメンテーションを作成できます。
トレース : OpenTelemetry Tracing API を使用してカスタム スパンを作成し、属性を追加します。メトリクス : OpenTelemetryメトリクスAPIを使用してカスタムメトリックを記録します(サポートされている場合)ログ : OpenTelemetry API使用してログを書き込みます (サポートされている場合)これらの API を自分の言語で使用する方法の詳細については、 OpenTelemetry のドキュメントを 参照してください。
OpenTelemetry APIサポートを有効にする方法 OpenTelemetry API サポートはデフォルトで無効になっています。エージェントの設定を通じて有効にします。
Javaエージェント構成 前提条件 必要な OpenTelemetry 依存関係をアプリケーションに追加します。
implementation ( platform ( "io.opentelemetry:opentelemetry-bom:1.44.1" ) )
implementation ( "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure" )
implementation ( "io.opentelemetry:opentelemetry-exporter-otlp" )
OpenTelemetry APIサポートを有効にする 1. OpenTelemetry SDKの自動構成を有効にする
次のいずれかの方法を使用します。
システムプロパティ:
$ -Dotel.java.global-autoconfigure.enabled = true
環境変数:
$ export OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED = true
2. New Relic OpenTelemetryサポートを有効にする
システムプロパティ:
$ -Dnewrelic.config.opentelemetry.enabled = true
環境変数:
$ NEW_RELIC_OPENTELEMETRY_ENABLED = true
YAML 設定 (newrelic.yml):
重要 Javaエージェント インストゥルメントは、アプリケーションによって発行されたシグナルをキャプチャするためにOpenTelemetry 、メトリクス、およびログ API を使用しました。 OpenTelemetry機能は出荷されず 、自動的に有効化もされません。 OpenTelemetry自動インストゥルメンテーションはサポートされていません。
サポートされている計装タイプ 手動計測器 OpenTelemetry 、メトリクス、またはログ API を使用したカスタムインストゥルメンテーションは、エージェントによって自動的にキャプチャされます。
ライブラリとネイティブ計装 OpenTelemetryスタンドアロン ライブラリ計装とライブラリに直接組み込まれたネイティブ計装はNew Relicエージェントで動作します。 ただし、 OpenTelemetryバイトコードベースの自動インストゥルメンテーションはNew Relicエージェントによって検出されません。
Node.jsエージェントの設定 OpenTelemetry APIサポートを有効にする newrelic.js設定ファイルでOpenTelemetry APIサポートを有効にします。
重要 Node.jsエージェントは、 OpenTelemetry計装を自動的に有効にしません 。 アプリケーションによって発行されたテレメトリーをキャプチャするために、 OpenTelemetry API のみがインストールされました。
サポートされているOpenTelemetry API OpenTelemetry サポートが有効になっている場合、Node.js エージェントは以下を完全にサポートします。
トレースAPI OpenTelemetry Tracing API を使用してカスタム スパンを作成し、属性を追加します。OpenTelemetry Node.js トレースの例を 参照してください。
メトリクスAPI メトリクスAPIは、 Node.js顧客にとって最も便利な機能です。 これにより、メトリクスの収集機能が拡張され、頻繁に要求される機能である次元メトリクスが追加されます。
OpenTelemetryメトリクスAPIを使用してカスタムメトリックを記録します。 OpenTelemetry Node.js例を 参照してください。
ログAPI JavaScript OpenTelemetry APIまだ開発中ですが、 Node.jsエージェントはそれをサポートしています。 API を使用して、New Relic に送信されるログを出力できます。
OpenTelemetry Node.js ログの例を 参照してください。
サポートされている計装タイプ 手動計装(推奨) OpenTelemetry APIを使用してアプリケーションを計測した顧客は、エージェントがそのデータを正しく処理して送信していることがわかります。
ネイティブおよびライブラリ計装(限定) OpenTelemetry計装のリストには、 Node.jsエージェントのサポートされているモジュールとかなりの重複があります。 New Relicエージェントでまだカバーされていない計装は次の可能性があります。
注意 公式のOpenTelemetryリスト以外ではOpenTelemetry計装をテストしていないため、現時点では特定のものを推奨することはできません。
既知の制限 自動計装なし : エージェントはOpenTelemetry計装を自動的に有効にしません。 顧客はOpenTelemetry API を使用してコードを手動で計測する必要があります。.NETエージェントの設定 OpenTelemetry APIサポートを有効にする 環境変数またはnewrelic.config XML 設定ファイルを使用して、 OpenTelemetry APIサポートを有効にします。
環境変数の使用:
$ NEW_RELIC_OPENTELEMETRY_ENABLED = true
newrelic.config の使用:
< openTelemetry enabled = " true " />
ヒント OpenTelemetryサポートが有効な場合、トレース とメトリクスは 両方ともデフォルトで有効になります。
ネイティブ計装をサポート OpenTelemetry APIサポートを有効にすると、.NET エージェントはOpenTelemetry -インストゥルメント化されたライブラリからテレメトリーをキャプチャできるようになります。
トレース計装 エージェントは、ネイティブOpenTelemetryトレース計装を備えたライブラリをサポートします。 OpenTelemetry Tracing APIを使用して作成されたカスタムインストゥルメンテーションもサポートされています。
メトリクス計装 メトリクスが有効な場合、エージェントはライブラリおよびフレームワークからのOpenTelemetry計装をサポートします。 OpenTelemetryメトリクスAPIを使用して作成されたカスタムインストゥルメンテーションもサポートされています。
ログ計装 .NET エージェントは、ログ データ用のOpenTelemetry APIとなるログ ライブラリをすでにインストゥルメントしていました。 OpenTelemetry API サポートを有効にする場合、ログに変更を加える必要はありません 。下位互換性のため、ログ計装は以前と同様に動作し続けます。
Pythonエージェントの構成 OpenTelemetry APIサポートを有効にする newrelic.ini設定ファイルまたは環境変数を使用してOpenTelemetry APIサポートを有効にします。
newrelic.ini の使用:
opentelemetry.enabled = true
環境変数の使用:
$ NEW_RELIC_OPENTELEMETRY_ENABLED = true
重要 OpenTelemetryサポートが有効になっている場合、エージェントはopentelemetry-apiがインストールされているかどうかを自動的に検出し、サポートされているライブラリに対してOpenTelemetry計装の使用に切り替えます。
使い方 OpenTelemetry サポートが有効になっていて、エージェントがopentelemetry-apiがインストールされていることを検出した場合:
ネイティブ計装 : ネイティブOpenTelemetry計装が組み込まれたライブラリの場合、エージェントは自動的にNew Relicのフックを無効にし、代わりにネイティブOpenTelemetry計装を使用します。
ライブラリ計装 : OpenTelemetry計装ライブラリが検出された場合、エージェントはNew Relicの計装フックの代わりにOpenTelemetry計装を自動的に使用します。
利用可能なPython計装の現在のリストについては、 公式のOpenTelemetry Python計装リストを 参照してください。
注意 一部の計装 (AWSやgRPCライブラリなど) は引き続きNew Relicの計装を使用します。 ネイティブ計装を備えた AI ライブラリは、現時点では明示的に無効になっていますが、将来のリリースでサポートされる予定です。
手動計測器 OpenTelemetry Tracing APIを使用して作成されたカスタムインストゥルメンテーションはエージェントによってキャプチャされます。
例:
from opentelemetry import trace
tracer = trace . get_tracer ( __name__ )
with tracer . start_as_current_span ( "my-custom-span" ) as span :
span . set_attribute ( "custom.attribute" , "value" )
サポートされている機能 トレースAPI ✅完全にサポートされています : OpenTelemetry Tracing API を使用してカスタム スパンを作成し、属性を追加します
メトリクスAPI ❌まだサポートされていません : OpenTelemetryメトリクスAPI Pythonエージェントで有効になっていません
ログAPI ✅すでに動作 :エージェントはすでにログ記録モジュールをサポートしています。Python でログに記録するための OpenTelemetry API はありません (SDK のみが存在します)。OpenTelemetry がログ記録用に設定するのは、ログ記録が有効かどうかと、どのエンドポイントにデータを送信するかです。
使い方 OpenTelemetry サポートが有効になっている場合:
エージェントはシステムを検索して 、 OpenTelemetry計装ライブラリがインストールされているかどうかを判断します自動切り替え : 見つかった場合、エージェントはNew Relicのフックの代わりにOpenTelemetryライブラリの計装を使用しますシームレスな統合 : OpenTelemetryスパンはNew Relicに統合されています既知の制限 メトリクスはサポートされていません : OpenTelemetryメトリクスAPIはまだ有効になっていません一部のAWSとgRPCライブラリは除外 : 引き続きNew Relic計装を使用しますAI ライブラリが無効になっています : AI ライブラリのネイティブOpenTelemetry計装は現在無効になっています含める/除外設定 : 微調整オプションは将来のリリースで計画されていますが、現在は有効化/無効化のみが機能します。Rubyエージェントの設定 OpenTelemetry APIサポートを有効にする RubyエージェントでOpenTelemetry APIサポートを有効にするには、次の内容をnewrelic.yml設定ファイルに追加します。
または、環境変数を設定します。
$ NEW_RELIC_OPENTELEMETRY_ENABLED = true
重要 OpenTelemetryサポートが有効になっている場合、エージェントはopentelemetry-apiがインストールされているかどうかを自動的に検出し、サポートされているライブラリに対してOpenTelemetry計装の使用に切り替えます。
手動計測器 OpenTelemetry Tracing APIを使用して作成されたカスタムインストゥルメンテーションはエージェントによってキャプチャされます。
例:
APP_TRACER = OpenTelemetry . tracer_provider . tracer ( 'my-app' , '1.0.0' )
APP_TRACER . in_span ( "my-custom-span" ) do | span |
span . set_attribute ( "test.attribute" , "value" )
サポートされている機能 トレースAPI ✅サポート : OpenTelemetry Tracing API を使用してカスタム スパンを作成し、属性を追加します
メトリクスAPI ❌サポートされていない : OpenTelemetryメトリクスAPI
ログAPI ❌サポートされていない API OpenTelemetry
スパリンク ❌サポートされていません : スパンリンク
Spans のイベント ❌サポートされていない : Spans 上のイベント
使い方 OpenTelemetry サポートが有効になっている場合、New Relic Ruby エージェントは次の処理を実行します。
OpenTelemetry トレース API への呼び出しをリッスンします これらの呼び出しをNew Relicデータモデルに変換します OpenTelemetry スパンを New Relic トレースに組み込む callout.information デフォルトでは、 OpenTelemetry計装はNew Relic Rubyエージェントでもインストゥルメントされたライブラリから除外されています。 これには、ネイティブにインストゥルメントされたライブラリと、 OpenTelemetry-ruby-contrib の計装パッケージを含むライブラリが含まれます。
既知の制限 限定的なAPIサポート : このリリースではAPIのみがサポートされていますメトリクスとログ : 利用できませんSpan リンクとイベント : 現在サポートされていません動作していることを確認する OpenTelemetry API サポートを有効にした後、それが機能していることを確認します。
更新されたエージェント設定を使用してアプリケーションをデプロイします。
カスタムインストゥルメンテーションを使用している場合は、コードがOpenTelemetry API を使用してスパン/メトリクスを作成していることを確認してください。
アプリケーションへのトラフィックを生成します。
New Relic APM UI を確認します。
制限事項と既知の問題 計装の制限事項 制限
説明
ライブラリ計装はサポートされていません
別個のパッケージのインストールを必要とするOpenTelemetryライブラリ 計装は、このリリースではサポートされていません。 メンテナによってライブラリに直接組み込まれたネイティブ計装のみが自動的に機能します。
Javaバイトコード計装が検出されませんでした
バイトコード操作を使用するJava OpenTelemetry自動インストゥルメンテーションは、 New Relic Javaエージェントによって検出されません。
意味上の慣習の違い 一部のOpenTelemetry計装ではNew Relicの組み込み計装とは異なるスパンとメトリクスの命名規則を使用します。
Elasticsearch : スパン名と操作名は大文字と小文字、長さが異なる場合がありますRabbitMQ : ディストリビューティッド(分散)トレーシングの動作が異なります(スパンリンクと親子関係)ヒント これらの違いは、特定のスパンまたはメトリクス名に依存する既存のダッシュボードおよびアラート条件に影響を与える可能性があります。 これらのサービスについてNew Relic計装からOpenTelemetry計装に切り替える場合は、書き込みを確認して更新してください。
エージェント固有の制限 Python : トレースAPIのみがサポートされています。 メトリクスおよびログ API は利用できませんRuby : トレースAPIのみがサポートされています。 メトリクスおよびログ API は利用できません.NET : OpenTelemetryメトリクスを有効にすると、メトリクスの取り込みコストが大幅に増加する可能性がありますトラブルシューティング OpenTelemetry スパンがトレースに表示されない OpenTelemetry API サポートを有効にしたが、トレースに OTel によって生成されたスパンが表示されない場合は、次の手順を実行します。
OpenTelemetryサポートが有効になっていることを確認する エージェント設定をチェックして、 OpenTelemetryサポートが有効になっていることを確認します。
環境変数または設定ファイルを確認する エージェントログをチェックして、OpenTelemetry サポートがアクティブであることを確認します。 設定を変更した後は、アプリケーションを再起動してください。 エージェントのバージョンを確認する OpenTelemetry API をサポートする最低限必要なエージェント バージョンを実行していることを確認します。上記のサポートされている言語の表 を参照してください。
ヘルプが必要ですか? OpenTelemetry API サポートで問題が発生している場合は、 New Relic サポート にお問い合わせください。
次は何ですか?