Managed Service for OpenTelemetry は、アプリケーションからトレース、メトリクス、ログデータを受信できます。データは直接レポートするか、OpenTelemetry Collector 経由で転送できます。
事前準備
-
ログデータをレポートするには、まず Simple Log Service (SLS) を有効化し、プロジェクトと Logstore を作成し、ログデータレポート用の AccessKey ペアを作成する必要があります。
-
必要なエンドポイントと認証情報を取得してください。次の表は、本トピックで使用されるすべての設定変数の一覧です。データタイプとレポート方法に応じて値を準備してください。詳細については、「事前準備」をご参照ください。
ユースケース
パラメーター
説明
例
トレースとメトリクスデータのレポート
gRPC 経由でのデータレポート
${GRPC_ENDPOINT}
Managed Service for OpenTelemetry の gRPC エンドポイントです。トレースとメトリクスデータのレポートに使用します。
サービスが Managed Service for OpenTelemetry と同じリージョンの Alibaba Cloud にデプロイされている場合は、内部エンドポイントの使用を推奨します。それ以外の場合は、パブリックエンドポイントを使用してください。
-
内部エンドポイント:http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090
-
パブリックエンドポイント:http://tracing-analysis-dc-hz.aliyuncs.com:8090
${GRPC_AUTHENTICATION_TOKEN}
gRPC 経由で Managed Service for OpenTelemetry にデータをレポートするために必要な認証トークンです。トークンの取得方法については、「事前準備」をご参照ください。
abcdef1234@abcdef****56789_abcdef1234@abcdef****56789
HTTP 経由でのデータレポート
${HTTP_TRACES_ENDPOINT}
Managed Service for OpenTelemetry の HTTP エンドポイントです。トレースデータのレポートに使用します。
サービスが Managed Service for OpenTelemetry と同じリージョンの Alibaba Cloud にデプロイされている場合は、内部エンドポイントの使用を推奨します。それ以外の場合は、パブリックエンドポイントを使用してください。
-
内部エンドポイント:http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/traces
-
パブリックエンドポイント:http://tracing-analysis-dc-hz.aliyuncs.com/adapt_***_***/api/otlp/traces
${HTTP_METRICS_ENDPOINT}
Managed Service for OpenTelemetry の HTTP エンドポイントです。メトリクスデータのレポートに使用します。
サービスが Managed Service for OpenTelemetry と同じリージョンの Alibaba Cloud にデプロイされている場合は、内部エンドポイントの使用を推奨します。それ以外の場合は、パブリックエンドポイントを使用してください。
-
内部エンドポイント:http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/metrics
-
パブリックエンドポイント:http://tracing-analysis-dc-hz.aliyuncs.com/adapt_***_***/api/otlp/metrics
ログデータのレポート
${SLS_ENDPOINT}
Simple Log Service (SLS) プロジェクトのエンドポイントです。ログデータをレポートする場合にのみ必要です。エンドポイントの取得方法については、「サービスエンドポイント」をご参照ください。
test-project.cn-hangzhou.log.aliyuncs.com
${SLS_PROJECT}
Simple Log Service (SLS) プロジェクトの名前です。ログデータをレポートする場合にのみ必要です。
test-project
${SLS_LOGSTORE}
Simple Log Service (SLS) Logstore の名前です。ログデータをレポートする場合にのみ必要です。
test-logstore
${ALIYUN_ACCESS_KEY_ID}
Alibaba Cloud アカウントの AccessKey ID です。ログデータをレポートする場合にのみ必要です。
Simple Log Service (SLS) プロジェクトへの書き込み権限のみを持つ RAM ユーザーの AccessKey ペアの使用を推奨します。AccessKey ペアは、AccessKey ID と AccessKey シークレットで構成されています。特定のプロジェクトへのデータ書き込み権限を RAM ユーザーに付与する方法については、「RAM カスタムポリシーの例」をご参照ください。AccessKey ペアの取得方法については、「AccessKey ペア」をご参照ください。
N/A
${ALIYUN_ACCESS_KEY_SECRET}
Alibaba Cloud アカウントの AccessKey シークレットです。ログデータをレポートする場合にのみ必要です。
RAM ユーザーの AccessKey ペアの使用を推奨します。
N/A
-
直接レポート
OpenTelemetry エージェントまたは SDK でエンドポイントと認証情報を設定することで、トレースとメトリクスデータを Managed Service for OpenTelemetry に直接レポートします。
オプション 1:コードで設定する
次の Java の例では、HTTP または gRPC 経由でデータをレポートするための Managed Service for OpenTelemetry のエンドポイントを設定します。完全な連携コードとデモについては、Integration Center にアクセスするか、「OpenTelemetry を使用した Java アプリケーションからのデータレポート」をご参照ください。
HTTP レポート
...
// トレースデータのレポート
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpHttpSpanExporter.builder()
.setEndpoint("${HTTP_TRACES_ENDPOINT}") // Managed Service for OpenTelemetry にトレースデータをレポートするための HTTP トレースエンドポイントを設定します。
.build()).build())
.build();
// メトリクスデータのレポート
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpHttpMetricExporter.builder()
.setEndpoint("${HTTP_METRICS_ENDPOINT}") // Managed Service for OpenTelemetry にメトリクスデータをレポートするための HTTP メトリクスエンドポイントを設定します。
.build()).build())
.build();
...
gRPC レポート
...
// トレースデータのレポート
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder()
.setEndpoint("${GRPC_ENDPOINT}") // Managed Service for OpenTelemetry にトレースデータをレポートするための gRPC エンドポイントを設定します。
.addHeader("Authentication","${GRPC_AUTHENTICATION_TOKEN}") // Managed Service for OpenTelemetry の認証トークンを設定します。
.build()).build())
.setResource(resource)
.build();
// メトリクスデータのレポート
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder()
.setEndpoint("${GRPC_ENDPOINT}") // Managed Service for OpenTelemetry にメトリクスデータをレポートするための gRPC エンドポイントを設定します。
.addHeader("Authentication", "${GRPC_AUTHENTICATION_TOKEN}") // Managed Service for OpenTelemetry の認証トークンを設定します。
.build()).build())
.setResource(resource)
.build();
...
オプション 2:環境変数で設定する
環境変数を使用してデータレポートエンドポイントを設定することもできます。次の表は、Managed Service for OpenTelemetry にデータをレポートするために必要な変数の一覧です。詳細については、「OTLP Exporter Configuration」をご参照ください。
|
環境変数 |
説明 |
例 |
|
OTEL_SERVICE_NAME |
アプリケーション名です。 |
export OTEL_SERVICE_NAME=opentelemetry-demo-service |
|
OTEL_EXPORTER_OTLP_PROTOCOL |
データをレポートするためのプロトコルです。 トレースは、 メトリクスは、 gRPC エンドポイントを選択した場合は、この変数を |
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc |
|
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT |
トレースをレポートするためのエンドポイントです。HTTP と gRPC の両方のエンドポイントをサポートしています。 「事前準備」セクションの ${GRPC_ENDPOINT} または ${HTTP_TRACES_ENDPOINT} の値を使用してください。 |
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/traces
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090 |
|
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT |
メトリクスをレポートするためのエンドポイントです。HTTP と gRPC の両方のエンドポイントをサポートしています。 「事前準備」セクションの ${GRPC_ENDPOINT} または ${HTTP_METRICS_ENDPOINT} の値を使用してください。 |
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/metrics
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090 |
|
OTEL_EXPORTER_OTLP_HEADERS |
gRPC レポートのリクエストヘッダーです。主に認証に使用します。
|
export OTEL_EXPORTER_OTLP_HEADERS=Authentication=abcdef1234@abcdef****56789_abcdef1234@abcdef****56789 |
OpenTelemetry Collector 経由でのデータ転送
Collector のエディション
-
OpenTelemetry Collector (Core):トレースとメトリクスデータをレポートします。
-
OpenTelemetry Collector (Contrib):トレース、メトリクス、ログデータをレポートします。
オプション 1: ACK マーケットプレイスからデプロイする
ACK マーケットプレイスでは、OpenTelemetry Collector (Core) エディションのみを提供しており、Contrib エディションは提供していません。ログデータを収集する必要がある場合は、別のデプロイ方法を使用してください。
ステップ 1:Collector をデプロイする
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
-
Marketplace で
opentelemetry-collectorを検索してクリックし、ページの右上隅にある [Deploy] をクリックします。 -
作成 ページで、
opentelemetry-collectorをデプロイする クラスターと名前空間を選択し、次へ をクリックします。デフォルトの名前空間はotel-collectorです。 -
パラメーター設定 ページで、
modeパラメーターをdeploymentまたはDaemonSetに設定し、OK をクリックします。
ステップ 2:Collector のパラメーターを設定する
-
クラスターリスト ページで、対象のクラスターをクリックします。
-
左側メニューで、を選択します。
-
opentelemetry-collector が配置されている名前空間を選択します。デフォルトは
otel-collectorです。 -
設定項目 ページで、opentelemetry-collector を見つけて YAML 編集 をクリックします。
-
次の YAML の例に示すように、
exporters、processors、receivers、serviceセクションを設定し、OK をクリックします。gRPC レポート
exporters: otlp: endpoint: "${GRPC_ENDPOINT}" headers: Authentication: "${GRPC_AUTHENTICATION_TOKEN}" tls: insecure: true processors: batch: {} memory_limiter: check_interval: 5s # メモリ使用量をチェックする間隔です。必要に応じて値を変更できます。 limit_percentage: 80 # パーセンテージとしての最大メモリ使用量です。必要に応じて値を変更できます。 spike_limit_percentage: 25 # スパイク時に許容される追加メモリのパーセンテージです。必要に応じて値を変更できます。 receivers: otlp: protocols: grpc: endpoint: ${env:MY_POD_IP}:4317 http: endpoint: ${env:MY_POD_IP}:4318 service: pipelines: traces: exporters: [otlp] processors: [memory_limiter, batch] receivers: [otlp] metrics: exporters: [otlp] processors: [memory_limiter, batch] receivers: [otlp]HTTP レポート
exporters: otlphttp: traces_endpoint: "${HTTP_TRACES_ENDPOINT}" metrics_endpoint: "${HTTP_METRICS_ENDPOINT}" tls: insecure: true timeout: 5s # タイムアウト期間です。デフォルト値は 5s です。必要に応じて値を変更できます。 processors: batch: {} memory_limiter: check_interval: 5s # メモリ使用量をチェックする間隔です。必要に応じて値を変更できます。 limit_percentage: 80 # パーセンテージとしての最大メモリ使用量です。必要に応じて値を変更できます。 spike_limit_percentage: 25 # スパイク時に許容される追加メモリのパーセンテージです。必要に応じて値を変更できます。 receivers: otlp: protocols: grpc: endpoint: ${env:MY_POD_IP}:4317 http: endpoint: ${env:MY_POD_IP}:4318 service: pipelines: traces: exporters: [otlphttp] processors: [memory_limiter, batch] receivers: [otlp] metrics: exporters: [otlphttp] processors: [memory_limiter, batch] receivers: [otlp] -
設定が完了したら、opentelemetry-collector Pod を手動で再起動してください。
オプション 2: Docker でデプロイする
ステップ 1:イメージをプルする
OpenTelemetry Collector (Core)
特定のイメージバージョンについては、https://hub.docker.com/r/otel/opentelemetry-collector/tags をご参照ください。
docker pull otel/opentelemetry-collector:latest
OpenTelemetry Collector (Contrib)
特定のイメージバージョンについては、https://hub.docker.com/r/otel/opentelemetry-collector-contrib/tags をご参照ください。
docker pull otel/opentelemetry-collector-contrib:latest
ステップ 2:設定ファイルを準備する
config.yaml ファイルを作成し、必要な設定を追加してください。
gRPC レポート (Core)
# config.yaml
exporters:
otlp:
endpoint: "${GRPC_ENDPOINT}"
headers:
Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
tls:
insecure: true
processors:
batch: {}
memory_limiter:
check_interval: 5s # メモリ使用量をチェックする間隔です。必要に応じて値を変更できます。
limit_percentage: 80 # パーセンテージとしての最大メモリ使用量です。必要に応じて値を変更できます。
spike_limit_percentage: 25 # スパイク時に許容される追加メモリのパーセンテージです。必要に応じて値を変更できます。
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # デフォルト値は localhost:4317 です。必要に応じて値を変更できます。
http:
endpoint: 0.0.0.0:4318 # デフォルト値は localhost:4318 です。必要に応じて値を変更できます。
service:
pipelines:
traces:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
HTTP レポート (Core)
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # タイムアウト期間です。デフォルト値は 5s です。必要に応じて値を変更できます。
processors:
batch: {}
memory_limiter:
check_interval: 5s # メモリ使用量をチェックする間隔です。必要に応じて値を変更できます。
limit_percentage: 80 # パーセンテージとしての最大メモリ使用量です。必要に応じて値を変更できます。
spike_limit_percentage: 25 # スパイク時に許容される追加メモリのパーセンテージです。必要に応じて値を変更できます。
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # デフォルト値は localhost:4317 です。必要に応じて値を変更できます。
http:
endpoint: 0.0.0.0:4318 # デフォルト値は localhost:4318 です。必要に応じて値を変更できます。
service:
pipelines:
traces:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
gRPC レポート (Contrib)
# config.yaml
exporters:
otlp:
endpoint: "${GRPC_ENDPOINT}"
headers:
Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
tls:
insecure: true
# オプション: ログエクスポーターを設定します。
alibabacloud_logservice/logs:
endpoint: "${SLS_ENDPOINT}"
project: "${SLS_PROJECT}"
logstore: "${SLS_LOGSTORE}"
access_key_id: "${ALIYUN_ACCESS_KEY_ID}"
access_key_secret: "${ALIYUN_ACCESS_KEY_SECRET}"
processors:
batch: {}
memory_limiter:
check_interval: 5s # メモリ使用量をチェックする間隔です。必要に応じて値を変更できます。
limit_percentage: 80 # パーセンテージとしての最大メモリ使用量です。必要に応じて値を変更できます。
spike_limit_percentage: 25 # スパイク時に許容される追加メモリのパーセンテージです。必要に応じて値を変更できます。
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # デフォルト値は localhost:4317 です。必要に応じて値を変更できます。
http:
endpoint: 0.0.0.0:4318 # デフォルト値は localhost:4318 です。必要に応じて値を変更できます。
service:
pipelines:
traces:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
# オプション: ログデータ処理パイプラインを設定します。
logs:
exporters: [alibabacloud_logservice/logs]
processors: [memory_limiter, batch]
receivers: [otlp]
HTTP レポート (Contrib)
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # タイムアウト期間です。デフォルト値は 5s です。必要に応じて値を変更できます。
# オプション: ログエクスポーターを設定します。
alibabacloud_logservice/logs:
endpoint: "${SLS_ENDPOINT}"
project: "${SLS_PROJECT}"
logstore: "${SLS_LOGSTORE}"
access_key_id: "${ALIYUN_ACCESS_KEY_ID}"
access_key_secret: "${ALIYUN_ACCESS_KEY_SECRET}"
processors:
batch: {}
memory_limiter:
check_interval: 5s # メモリ使用量をチェックする間隔です。必要に応じて値を変更できます。
limit_percentage: 80 # パーセンテージとしての最大メモリ使用量です。必要に応じて値を変更できます。
spike_limit_percentage: 25 # スパイク時に許容される追加メモリのパーセンテージです。必要に応じて値を変更できます。
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # デフォルト値は localhost:4317 です。必要に応じて値を変更できます。
http:
endpoint: 0.0.0.0:4318 # デフォルト値は localhost:4318 です。必要に応じて値を変更できます。
service:
pipelines:
traces:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
# オプション: ログデータ処理パイプラインを設定します。
logs:
exporters: [alibabacloud_logservice/logs]
processors: [memory_limiter, batch]
receivers: [otlp]
ステップ 3:設定ファイルのマウントと実行
OpenTelemetry Collector (Core)
docker run -v $(pwd)/config.yaml:/etc/otelcol/config.yaml otel/opentelemetry-collector:latest
OpenTelemetry Collector (Contrib)
docker run -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest