OpenTelemetryデータ・ソースの構成
ここでは、Application Performance Monitoring (APM)にデータをアップロードするためのOpenTelemetry (OTEL)データ・ソース(インストゥルメンテーション・ライブラリやOpenTelemetryコレクタなど)の構成について説明します。
サポートされるデータ
- トレース
- メトリック
- ログ・イベント
OTEL互換エンドポイントの使用
OpenTelemetryを使用してApplication Performance Monitoringにデータをアップロードするには、OTELデータ・アップロード・エンドポイントとして次を指定します。
データ・ソース・タイプに応じて、OTELデータ・アップロード・エンドポイントを構成ファイル、環境変数、コードまたはユーザー・インタフェースで指定できます。
-
トレース
トレースを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 - 公開データ・キーで認証されたトレースの場合は、次を追加します:
-
メトリック
次のAPMデータ・アップロード・エンドポイントを追加して、メトリックをApplication Performance Monitoringにアップロードします:
https://<dataUploadEndpoint>/20200101/opentelemetry/v1/metricsメトリックは常にプライベート・データ・キーで認証されます。
-
ログ・イベント
次の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の例
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エージェントの例
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/protobufOTELコレクタの例
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]