• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は参考用に提供されます。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページ を参照してください。

問題を作成する

OpenTelemetryトレース:ベストプラクティス

これらのOpenTelemetryトレーストピックをよく理解して、トレースとスパンがNewRelicに表示されるようにしてください。

必須項目

トレースデータのOpenTelemetryプロトコルに従って、スパンのstartTimeUnixNanoフィールドとendTimeUnixNanoフィールドが必要です。 startTimeUnixNanoが存在しない場合、スパンは削除され、 NrIntegrationErrorが作成されます。 endTimeUnixNanoが存在しない場合、スパンの期間は長く、負になります。

スパンイベントのtimeUnixNanoフィールドは必須です。 timeUnixNanoが存在しない場合、spanイベントはドロップされ、 NrIntegrationErrorが作成されます。

トレースデータのOpenTelemetryプロトコルに従って、スパンのtraceIdフィールドとspanIdフィールドが必要です。 traceIdまたはspanIdが存在しない場合、スパンは削除され、 NrIntegrationErrorが作成されます。

非推奨および削除されたフィールド

スパン ステータス コードはOTLP v0.6.0で廃止され、 v0.12.0で削除されました。これらのメッセージとフィールドを設定して送信するクライアントには、 UNRECOGNIZEDに設定された値が表示されます。これにより問題が発生する場合は、サポートにお問い合わせください。

サンプリング

トレースデータは、最も成熟したOpenTelemetryのデータタイプです。このため、New Relic の OpenTelemetry のユーザーエクスペリエンスは、主にトレースデータに基づいており、したがって、サンプリング戦略に影響されます。

サンプリングの設定は様々な場所で行うことができます。

  • サービス: お使いの言語のOpenTelemetry SDKをご利用ください。
  • コレクター: OpenTelemetry コレクターの独自のインスタンスを実行している場合は、テールベースのサンプリング (以下を参照) など、より高度な形式のサンプリングを実行するように構成できます。

さまざまなタイプのサンプリングを設定する方法については、こちらのドキュメントをご覧ください。

リソース属性と格納されたバイト

OpenTelemetry リソース属性は、 テレメトリを生成するエンティティの不変の表現として定義され、 attributesとして保存されます。 これらの属性が New Relic 内のトレース データにどのように適用され、保存されたバイトにどのように影響するかを理解することが重要です。OTLP ペイロードの例を使用し、結果の NRQL クエリ出力を検査することで、リソース属性の影響を観察できます。

OTLP トレース ペイロードの例

{
"resourceSpans": [
{
"resource": {
"attributes": [
{
"key": "service.name",
"value": {
"stringValue": "newrelic-otlp-service"
}
},
{
"key": "process.command_line",
"value": {
"stringValue": "/opt/java/openjdk/bin/java -javaagent:agent/opentelemetry-agent.jar"
}
}
]
},
"scopeSpans": [
{
"scope": {
"name": "newrelic-instrumentation-library",
"version": "1.0.0"
},
"spans": [
{
"attributes": [
{
"key": "message_id",
"value": {
"stringValue": "000000-aaaaaa-111111-bbbbbb"
}
}
],
"startTimeUnixNano": "1677182057000000000",
"endTimeUnixNano": "1677182059000000000",
"kind": "SPAN_KIND_INTERNAL",
"name": "example-span",
"spanId": "c469d81892057f5f",
"traceId": "aa04993b9acefbedea802f8d96e4bc58"
}
]
}
]
}
]
}

NRQLクエリの表現

{
"duration.ms": 2000.0,
"entity.guid": "OBFUSCATED",
"entity.name": "newrelic-otlp-service",
"entity.type": "SERVICE",
"entityGuid": "OBFUSCATED",
"guid": "c469d81892057f5f",
"id": "c469d81892057f5f",
"instrumentation.provider": "opentelemetry",
"message_id": "000000-aaaaaa-111111-bbbbbb",
"name": "example-span",
"newRelic.ingestPoint": "api.traces",
"newrelic.source": "api.traces.otlp",
"nr.isPrimaryEntityData": true,
"otel.library.name": "newrelic-instrumentation-library",
"otel.library.version": "1.0.0",
"process.command_line": "/opt/java/openjdk/bin/java -javaagent:agent/opentelemetry-agent.jar",
"service.name": "newrelic-otlp-service",
"span.kind": "internal",
"timestamp": 1677182057000,
"trace.id": "aa04993b9acefbedea802f8d96e4bc58",
"traceId": "aa04993b9acefbedea802f8d96e4bc58"
}

ヒント

この例は、基本的な概念を説明するための単純化された比較です。実際のバージョンは、より複雑であるため、外観が少し異なります。

リソース属性で注意すべき最も重要なことは、送信されるペイロードのサイズが NRDB に格納されているものと比べて異なる可能性があることです。すべてのリソース属性値は、OTLP ペイロードのすべてのスパンに適用されます。上記の例では、単一のスパンのみが送信されていますが、ペイロードに 100 のスパンが含まれている場合、それぞれにprocess.command_lineservice.nameが適用されます。

一部の Java ベースのアプリケーションでは、デフォルトのprocess.command_line属性が数千文字になる場合があり、その結果、請求可能なバイト数が予期せず大幅に増加する場合があります。これらのリソース属性が値を提供しない場合は 、OpenTelemetry と属性の長さに従って無効にすることができます。

Copyright © 2024 New Relic株式会社。

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