OpenTelemetryデータ・ソースの構成

ここでは、Application Performance Monitoring (APM)にデータをアップロードするためのOpenTelemetry (OTEL)データ・ソース(インストゥルメンテーション・ライブラリやOpenTelemetryコレクタなど)の構成について説明します。

サポートされるデータ

次のデータをAPMにアップロードできます:
  • トレース
  • メトリック
  • ログ・イベント

OTEL互換エンドポイントの使用

OpenTelemetryを使用してApplication Performance Monitoringにデータをアップロードするには、OTELデータ・アップロード・エンドポイントとして次を指定します。

ノート

データ・ソース・タイプに応じて、OTELデータ・アップロード・エンドポイントを構成ファイル、環境変数、コードまたはユーザー・インタフェースで指定できます。
  1. トレース

    トレースをApplication Performance MonitoringにアップロードするようにAPMデータ・アップロード・エンドポイントを設定します。

    トレースは、公開または非公開のデータ・キーで認証できます。

    • 公開データ・キーで認証されたトレースの場合は、次を追加します:

      https://<dataUploadEndpoint>/20200101/opentelemetry/public/v1/traces

    • プライベート・データ・キーで認証されたトレースの場合は、次を追加します:

      https://<dataUploadEndpoint>/20200101/opentelemetry/private/v1/traces

    たとえば、トレースがパブリック・データ・キーで認証されている場合、APMデータ・アップロード・エンドポイントは次のようになります:

    https://aaabbbb.example.us-phoenix-1.oci.oraclecloud.com/20200101/opentelemetry/public/v1/traces

  2. メトリック

    次のAPMデータ・アップロード・エンドポイントを追加して、メトリックをApplication Performance Monitoringにアップロードします:

    https://<dataUploadEndpoint>/20200101/opentelemetry/v1/metrics

    メトリックは常にプライベート・データ・キーで認証されます。

  3. ログ・イベント

    次のAPMデータ・アップロード・エンドポイントを追加して、メトリックをApplication Performance Monitoringにアップロードします:

    https://<dataUploadEndpoint>/20200101/opentelemetry/v1/

前述のAPMデータ・アップロード・エンドポイントは、データをレポートするためのOpenTelemetry標準を提供します。これらのコールでは、問合せパラメータは受け入れられません。データ・キーは、次のようなヘッダーとして提供されます: “Authorization”: “dataKey aaaabbbbccc”

ノート

  • 一部のOpenTelemetryクライアントでは、/v1/tracesまたは/v1/metrics接尾辞が自動的に追加されますが、それ以外の場合は追加されません。サフィクスを追加しない場合は、構成内のURLの一部として指定する必要があります。APMは、JSONおよびプロトコル・バッファ(protobuf)でエンコードされたデータをサポートします。これらはContent-Typeヘッダーで明示的に指定する必要がありますが、通常はOTELライブラリ/コレクタによって自動的に指定されます。
  • スパン・リンクはサポートされていません。

Node.jsの例

Node.jsのOpenTelemetryコードのサンプルを次に示します。boldのAPMデータ・アップロード・エンドポイントの変更点を参照してください:
const opentelemetry = require("@opentelemetry/sdk-node");
const {
 getNodeAutoInstrumentations,
} = require("@opentelemetry/auto-instrumentations-node");
const {
 OTLPTraceExporter,
} = require("@opentelemetry/exporter-trace-otlp-http");

  const sdk = new opentelemetry.NodeSDK({
traceExporter: new OTLPTraceExporter({
  url: "https://aaabbbb.example.us-phoenix-1.oci.oraclecloud.com/20200101/opentelemetry/private/v1/traces",
  headers: {"Authorization": "dataKey AAAAABBBBBCCCC"},
 }),

  instrumentations: [getNodeAutoInstrumentations()]
});

 sdk.start()
(base) [ssirajud@ssirajud node_with_opentelemetry]$

Javaエージェントの例

JavaエージェントのOpenTelemetryコードの例を次に示します。boldのAPMデータ・アップロード・エンドポイントの変更点を参照してください:
export OTEL_TRACES_EXPORTER=otlp
export OTEL_SERVICE_NAME=my-service
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="authorization=dataKey 1111aaaabbbccc"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://aaabbbb.example.us-phoenix-1.oci.oraclecloud.com/20200101/opentelemetry/private/v1/traces/
export OTEL_METRICS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=https://aaabbbb.example.us-phoenix-1.oci.oraclecloud.com/20200101/opentelemetry/v1/metrics
export OTEL_EXPORTER_OTLP_METRICS_HEADERS="authorization=dataKey 1111aaaabbbccc"
export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf

OTELコレクタの例

OpenTelemetryコレクタのサンプルを次に示します。boldのAPMデータ・アップロード・エンドポイントの変更点を参照してください:

receivers:
  otlp:
    protocols:
      http:

exporters:
  logging:
    verbosity: detailed
  otlphttp:
    endpoint: https://aaaaXXXX.apm-agt.us-ashburn-1.oci.oraclecloud.com/20200101/opentelemetry/private/v1/traces/
    headers:
      Authorization: "dataKey XXX"

processors:
  batch:

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp]
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp]