OpenTelemetry をすでにご存知で、セットアップを開始したいとお考えですか?クイックスタートをご覧ください。
New Relicアカウントをまだお持ちでない場合は、New Relicアカウントを新たに作成します。永久無料です。
OpenTelemetryに入門したばかりの方は、ここではこの点を探ってみましょう。
OpenTelemetryのメリット
OpenTelemetry は、安全でベンダーニュートラルな 仕様 をサービスインスツルメンテーションのために提供しており、New Relic などのお好みのバックエンドにデータをエクスポートすることができます。OpenTelemetry は、サービスの遠隔測定データを収集して転送する方法を標準化するために、単一の API とライブラリを提供しています。
OpenTelemetryプロジェクトを構成するコンポーネントは以下の通りです。
- すべてのプロジェクトで一貫性を持たせるための、オブザーバビリティの中核となる柱の仕様。New Relic は、これらすべての シグナル: トレース、メトリクス、ログをサポートしています(詳細は以下の を参照 )。
- 仕様書に基づいたインターフェースや実装を含むAPI Java、Python、Go、Erlangなどの言語専用に作成されたSDK(APIの参照実装)。
- ベンダーに依存しない実装で、処理やエクスポートを行うコレクターです。
- 任意のバックエンドにデータを送ることができるエクスポーター
OpenTelemetryの各コンポーネントが連携することで、遠隔測定データを取得する上でいくつかの明確な利点が生まれます。
機能 | 説明 |
---|---|
ユビキタス計測機器 | 単一のオープンスタンダードな計測器は、世界中のエンジニアが貢献することで、より良いカバレッジと柔軟性を提供します。 |
将来性 | インストゥルメンテーションがライブラリやフレームワークに組み込まれ、より多くのベンダーがこのオープンスタンダードをサポートするようになれば、インストゥルメンテーションを変更する必要はなくなると確信できます。 |
新しい技術への対応 | 新しい技術が登場した場合、貢献者はOpenTelemetryへの統合を構築したり、ソースコードに直接インスツルメンテーションを追加することができ、エンドユーザーはこれらの新しい技術を容易にモニターすることができます。 |
シンプルな選択 | どのインスツルメンテーション・オプションを使用するか(プロプライエタリなオプションか、他のオープン・スタンダードのいずれか)を決める必要はありません。 |
クロスプラットフォーム対応 | OpenTelemetryは、様々な言語やバックエンドをサポートしています。OpenTelemetryは、既存の機器を変更することなく、テレメトリをキャプチャしてバックエンドに送信するための、ベンダーニュートラルなパスを表しています。 |
効率化された観測性 | ベンダーは、独自のエージェントやコレクターを開発する必要がないため、単一の規格に対するサポートやテストが容易になります。 |
高次元 | OpenTelemetryは次元メトリクスを使用しているため、AWSリージョン、Kubernetesクラスタ、サービスバージョンなど、データのより多くの側面でフィルタリングやファセットをかけることができます。また、次元メトリクスは、発生から報告までの時間短縮にもつながります。 |
OpenTelemetryのインスツルメンテーションとNew Relicのエージェントのどちらを使うべきでしょうか?
OpenTelemetry を検討する際には、テレメトリデータを取得する New Relic APM エージェントにも注目してみてください。
ご想像のとおり、OpenTelemetry エージェントや SDK から利用できる機能と New Relic APM エージェントから利用できる機能には、多くの重複があります。これは、分散型トレースの遠隔測定データに興味がある場合に特に当てはまります。何を必要としているかによって、選択が変わってきます。
New RelicとOpenTelemetryの両方のインスツルメンテーションを検討したり、 CNCF Slackチャンネル で相談して、何が最適なのかを決めることをお勧めします。
OpenTelemetry:進行中の作業
OpenTelemetryはまだ始まったばかりの規格なので、利用可能なものによって選択が影響を受ける可能性があります。仕様の現状については、 OpenTelemetryサイト で確認することができます。
言語固有の OpenTelemetry API や SDK の現状はさまざまで、中にはまだプレアルファ版の言語もあり、サービスをインストゥルメントする方法が記載されていない場合もあります。ほとんどの言語では、New Relic へのデータのエクスポートを開始するのに十分なトレースの実装があります。 各言語のOpenTelemetry仕様準拠の状況をまとめたGitHub の表をご覧ください。
OpenTelemetryが成熟するにつれ、New Relicは新しいOpenTelemetryのデータモデルをサポートし、お客様にキュレーションされたUI体験を提供していきます。
ニューレリックのAPMエージェント [#apm-agents]
一般的に、New Relic の APM エージェントは、サービスのテレメトリデータをより多く収集することができ、幅広い設定オプションと豊富な自動計測機能を提供しています。
OpenTelemetryとNew Relicの連携について [#how-it-works]
次の表は、各テレメトリ信号でサポートされている機能を示しています。これらについて質問があったり、サポートされていないユースケースがある場合は、 CNCF Slackチャンネル で私たちに連絡してください。また、今後の更新のためにこのページを見てください。
重要
New Relic の exporters for OpenTelemetry は現在非推奨となっており、OTLP を使用して New Relic にデータをエクスポートすることが推奨されています。
トレース
New Relic では、OTLP によるトレース信号の取り込みをサポートしています。上流の仕様の成熟度は 安定しています 。
OpenTelemetry のトレースとスパンは New Relic のトレースとスパンと互換性があります。OpenTelemetry のスパンには、オプションで属性(名前と値のペア)やリソース属性が含まれており、これらはディメンションに直接マッピングされ、クエリ時にスパンデータのファセットやフィルタリングに使用することができます。OpenTelemetry のスパンのメタデータ(例えば、 name
, kind
, trace_id
)も NewRelic のスパンのディメンションに直接マッピングされます。現時点では、New Relic はスパンのリンクや配列属性をサポートしていません。
詳細は、 ベストプラクティス ガイドの「トレース」セクションをご覧ください。
機能 | サポート対象 |
---|---|
✅ | |
❌ | |
❌ |
メトリクス
New Relic では、メトリックシグナルの OTLP インジェストをサポートしています。上流の仕様の成熟度は experimental であることに注意してください。私たちは、アップストリームの変更に対応する予定です。
ここでは、私たちがサポートしているOpenTelemetryのデータタイプとその関連マッピングを紹介します。詳細は、 ベストプラクティス ガイドの「Metrics」のセクションをご覧ください。
メトリックタイプ | サポート対象 |
---|---|
デルタ・サムズ | ✅ |
積算金額 | ✅ |
ゲージ | ✅ |
デルタ・ヒストグラム | ✅ |
概要 | ✅ |
累積ヒストグラム | ❌ |
模範例 | ❌ |
❌ |
ログ
New Relic では、OTLP によるログシグナルの取り込みをサポートしています。なお、アップストリームの仕様の成熟度は experimental です。私たちは、アップストリームの変化に対応していきます。
OpenTelemetry のログは New Relic のログと互換性があります。OpenTelemetry のログには、オプションで属性(名前と値のペア)やリソース属性が含まれており、これらはディメンションに直接マッピングされ、クエリ時にログデータのファセットやフィルタリングに使用することができます。OpenTelemetry ログのメタデータ(例えば、 name
, severity_text
, trace_id
)も NewRelic ログのディメンションに直接マッピングされます。NewRelic は現在、配列を除くすべての OpenTelemetry ログメッセージタイプをサポートしています。
詳しくは、 ベストプラクティス ガイドの「ログ」のセクションをご覧ください。
機能 | サポート対象 | 説明 |
---|---|---|
ログ・レコード・ボディ | ✅ | サポートされるタイプ:string, boolean, int, double, bytes |
ログレコードの属性 | ✅ | サポートされるタイプ:string, boolean, int, double, bytes |
LogRecordのフィールド | ✅ | 例:name, severity_text, trace_id |
配列メッセージ | ❌ | |
配列の属性 | ❌ |
次のステップ
OpenTelemetry quick start に従って操作を開始してください。
また、New Relic にエクスポートしたデータを最大限に活用するために、 ベストプラクティス ガイドを確認してください。