OpenTelemetry 、トレース テレメトリを記録するためのAPI 、スパン データをエクスポートするためのSDK 、アプリケーション境界を越えてトレースするためのコンテキスト トレースなど、豊富なトレース エコシステムを提供します。
このページでは、New Relic が New Relic OTLP エンドポイント経由で受信した OpenTelemetry スパンをどのように処理するかについて説明します。 OpenTelemetryをNew Relicに送信するには、OTLP エンドポイント経由でNew Relic OpenTelemetryにデータをエクスポートするように Trace ソースを設定する必要があります。 次のページを参照してください。
- エンドポイント設定の要件については、 New Relic OTLP エンドポイントを参照してください。
- OpenTelemetryを使用してサービスを構成する手順については、 OpenTelemetry APM監視」を参照してください。
OTLPスパンマッピング
New Relic は OTLP スパンをSpanデータ型にマッピングします。 次の表は、 トレース プロトコル メッセージ定義のフィールドがどのように解釈されるかを示しています。
OTLPプロトフィールド | New Relic |
|---|---|
| 各キー値は |
|
|
|
|
| 各キー値は |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 各キー値は |
|
|
| 各イベントは |
|
|
|
|
| 各キー値は、 |
|
|
|
|
|
|
|
|
表の脚注
[1]リソース属性、スコープ属性、スパン属性、および最上位のスパンフィールドで競合が発生した場合、優先順位(最高から最低)は、最上位のSpan.*フィールド> Span.attributes > ScopeSpans.InstrumentationScope.attributes > ResourceSpans.Resource.attributesとなります。
OTLP New Relicエンドポイントでサポートされるプロパティ タイプ の詳細については「OTLP プロパティ タイプ」を、プロパティに対して実行される検証の詳細については 「OTLP プロパティ制限」を 参照してください。
スパンのリンク
New Relic は OpenTelemetryスパン リンクをサポートしており、これにより直接の親子関係のないスパン間の因果関係を作成できます。スパン リンクは、メッセージキュー、イベント ストリーム、バッチ処理システムなどの非同期境界を越えて分割されるディストリビューティッド(分散)トレーシングを理解するために不可欠です。
スパンリンクを使用する場合
次のシナリオで span リンクを使用します。
- Message queue producers and consumers: AWS SQS、RabbitMQ、Kafka などのキューからのメッセージを処理するときに、消費スパンを生成スパンにリンクします。
- Fan-in patterns: 複数のプロデューサー トレースを、その出力を集約する単一のコンシューマー トレースにリンクします。
- Batch processing: バッチ処理されたメッセージを個々の元のトレースに返すリンク スパン。
- Long-running workflows: 通常のトレース期間の制限を超えるワークフロー ステップにまたがる接続。
スパンリンクの実装
OpenTelemetryメーターにスパン リンクを実装するには、次の手順を実行する必要があります。
- 受信メッセージまたはイベントからトレースコンテキストを抽出する
- 消費者で新しいスパンを開始するときにスパン リンクを作成します。
- トレースコンテキストがメッセージングインフラストラクチャを通じて伝播されることを確認する
次の例は、さまざまな言語で span リンクを実装する方法を示しています。
スパンリンクのベストプラクティス
スパン リンクを実装する場合は、次のベストプラクティスに従ってください。
Always propagate trace context: W3Ct レースコンテキスト (
traceparentおよびtracestateヘッダー) がメッセージ ヘッダーまたはメタデータに含まれていることを確認してください。Validate span context: スパン リンクを作成する前に、抽出されたスパン コンテキストが有効かどうかを常に確認します。無効なコンテキストではリンクを作成しないでください。
Use appropriate span kinds: メッセージ公開スパンの種類を
PRODUCERに設定し、メッセージ処理スパンの種類をCONSUMER設定します。Add messaging attributes: コンテキストを提供するために、メッセージング システムのセマンティック規則 (
messaging.system、messaging.destination、messaging.operationなど) を含めます。Consider sampling: リンクされたトレースは両方ともサンプリングしないと New Relic に表示されません。スパン リンクを使用する重要なワークフローのサンプリング戦略を調整します。
Handle batch processing carefully: バッチ処理されたメッセージを処理する場合、追跡可能性を維持するために、メッセージごとに個別のスパン リンクを作成します。
New Relicでスパンリンクを表示する
ダッシュボードにスパン リンクを実装したら、 New Relic UIでそれらを表示および操作できます。
- トレースのトレース詳細ページに移動します。
- フィルターバーのスパンリンクバッジを探します。これはリンクのあるスパンの数を示します。
- リンクのあるスパンを選択すると、スパンの詳細ペインのSpan linksタブが表示されます。
- リンクされたトレースをクリックすると、関連するトレース間を移動できます。
UI でのスパン リンクの使用の詳細については、 「スパン リンクについて」を参照してください。