Managed Service for OpenTelemetry は、アプリケーションからトレース、メトリック、ログデータを受信できます。直接レポートと、OpenTelemetry Collector を介した転送の 2 つのレポート方法をサポートしています。
レポート方法の選択
テレメトリーデータは、Managed Service for OpenTelemetry に直接レポートするか、OpenTelemetry Collector を介して転送できます。レポートするテレメトリーデータの種類に基づいて、方法を選択してください。
| レポート方法 | サポートするデータタイプ |
| 直接レポート | トレースとメトリック |
| OpenTelemetry Collector (Core) | トレースとメトリック |
| OpenTelemetry Collector (Contrib) | トレース、メトリック、ログ |
ログデータは、OpenTelemetry Collector (Contrib) を介して Simple Log Service (SLS) に転送されます。ログデータをレポートする場合は、Contrib エディションで Collector 転送方式を使用してください。
OpenTelemetry Collector を介してデータを転送する場合は、デプロイオプションを選択します。OpenTelemetry Collector には 2 つのエディションがあります:
OpenTelemetry Collector (Core):トレースおよびメトリックデータのレポートをサポートします。
OpenTelemetry Collector (Contrib):トレース、メトリック、ログデータのレポートをサポートします。次の表では、このトピックで説明するデプロイオプションを比較します。
| デプロイオプション | サポートするエディション | サポートするデータタイプ |
| ACK Marketplace から ACK クラスターへのデプロイ | OpenTelemetry Collector (Core) | トレースとメトリック |
| Docker を使用したデプロイ | OpenTelemetry Collector (Core) および OpenTelemetry Collector (Contrib) | トレースとメトリック (Core)。トレース、メトリック、ログ (Contrib)。 |
| その他のインストールおよびデプロイ方法 | 「その他のインストールおよびデプロイ方法」をご参照ください。 | 方法によって異なります |
事前準備
ログデータをレポートするには、まず Simple Log Service (SLS) を有効化し、プロジェクトと Logstore を作成し、ログデータレポート用の AccessKey ペアを作成してください。
エンドポイントと認証情報を取得してください。次の表に、このトピックで使用されるすべての設定変数の一覧を示します。このトピックのコードと設定例では、
${VAR}形式のプレースホルダーを、準備した実際の値に置き換える必要があります。レポートするデータの種類と使用するレポート方法に基づいて、シナリオで必要なエンドポイントと認証情報を準備してください。詳細については、「Managed Service for OpenTelemetry の使用開始」をご参照ください。
| ユースケース | 変数 | 説明 | 例 |
| gRPC を介したトレースおよびメトリックデータのレポート | ${GRPC_ENDPOINT} | Managed Service for OpenTelemetry の gRPC エンドポイントで、トレースおよびメトリックデータのレポートをサポートします。サービスがエンドポイントリージョンと同じリージョンの Alibaba Cloud 上で実行される場合は、Alibaba Cloud 内部エンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。 |
|
| gRPC を介したトレースおよびメトリックデータのレポート | ${GRPC_AUTHENTICATION_TOKEN} | gRPC を介して Managed Service for OpenTelemetry にデータをレポートするために必要な認証トークンです。トークンの取得方法については、「Managed Service for OpenTelemetry の使用開始」をご参照ください。 | abcdef1234@abcdef****56789_abcdef1234@abcdef****56789 |
| HTTP を介したトレースおよびメトリックデータのレポート | ${HTTP_TRACES_ENDPOINT} | Managed Service for OpenTelemetry の HTTP エンドポイントで、トレースデータのレポートをサポートします。サービスがエンドポイントリージョンと同じリージョンの Alibaba Cloud 上で実行される場合は、Alibaba Cloud 内部エンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。 |
|
| HTTP を介したトレースおよびメトリックデータのレポート | ${HTTP_METRICS_ENDPOINT} | Managed Service for OpenTelemetry の HTTP エンドポイントで、メトリックデータのレポートをサポートします。サービスがエンドポイントリージョンと同じリージョンの Alibaba Cloud 上で実行される場合は、Alibaba Cloud 内部エンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。 |
|
| ログデータのレポート | ${SLS_ENDPOINT} | SLS プロジェクトのエンドポイントです。ログデータをレポートする場合にのみ必要です。エンドポイントの取得手順については、「エンドポイント」をご参照ください。 | test-project.cn-hangzhou.log.aliyuncs.com |
| ログデータのレポート | ${SLS_PROJECT} | SLS プロジェクトの名前です。ログデータをレポートする場合にのみ必要です。 | test-project |
| ログデータのレポート | ${SLS_LOGSTORE} | SLS Logstore の名前です。ログデータをレポートする場合にのみ必要です。 | test-logstore |
| ログデータのレポート | ${ALIYUN_ACCESS_KEY_ID} | Alibaba Cloud アカウントの AccessKey ID です。ログデータをレポートする場合にのみ必要です。SLS プロジェクトに対する書き込み権限のみを持つ Resource Access Management (RAM) ユーザーの AccessKey ペア (AccessKey ID と AccessKey Secret で構成) を使用することを推奨します。RAM ユーザーに特定のプロジェクトへのデータ書き込み権限を付与する方法については、「RAM カスタムポリシーの例」をご参照ください。AccessKey ペアの取得方法については、「AccessKey ペア」をご参照ください。 | N/A |
| ログデータのレポート | ${ALIYUN_ACCESS_KEY_SECRET} | Alibaba Cloud アカウントの AccessKey Secret です。ログデータをレポートする場合にのみ必要です。SLS プロジェクトに対する書き込み権限のみを持つ RAM ユーザーの AccessKey ペアを使用することを推奨します。 | N/A |
直接レポート
OpenTelemetry Agent または SDK でレポートエンドポイントと認証情報を設定し、OpenTelemetry が収集したトレースおよびメトリックデータを Managed Service for OpenTelemetry サーバーに直接送信します。
オプション 1:コードでのレポート設定 (Java の例)
次の Java コード例は、HTTP または gRPC 経由のレポートに対応した Managed Service for OpenTelemetry のエンドポイントを設定する方法を示しています。完全な連携コードとデモについては、連携センターにアクセスするか、「OpenTelemetry を使用して Java アプリケーションからトレースデータをレポートする」をご参照ください。
HTTP レポート
...
// トレースデータのレポート
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpHttpSpanExporter.builder()
.setEndpoint("${HTTP_TRACES_ENDPOINT}") // HTTP トレースエンドポイントを設定して、トレースデータを Managed Service for OpenTelemetry にレポートします。
.build()).build())
.build();
// メトリックデータのレポート
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpHttpMetricExporter.builder()
.setEndpoint("${HTTP_METRICS_ENDPOINT}") // HTTP メトリックエンドポイントを設定して、メトリックデータを Managed Service for OpenTelemetry にレポートします。
.build()).build())
.build();
...gRPC レポート
...
// トレースデータのレポート
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder()
.setEndpoint("${GRPC_ENDPOINT}") // gRPC エンドポイントを設定して、トレースデータを Managed Service for OpenTelemetry にレポートします。
.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}") // gRPC エンドポイントを設定して、メトリックデータを Managed Service for OpenTelemetry にレポートします。
.addHeader("Authentication", "${GRPC_AUTHENTICATION_TOKEN}") // Managed Service for OpenTelemetry の認証トークンを設定します。
.build()).build())
.setResource(resource)
.build();
...オプション 2:環境変数によるレポート設定
OpenTelemetry は、環境変数によるデータレポートエンドポイントの設定もサポートしています。次の表に、Managed Service for OpenTelemetry にデータをレポートするために必要な環境変数の一覧を示します。OpenTelemetry OTLP のその他の環境変数については、「OTLP エクスポーターの設定」をご参照ください。
| 環境変数 | 説明 | 例 |
| OTEL_SERVICE_NAME | アプリケーション名。 | export OTEL_SERVICE_NAME=opentelemetry-demo-service |
| OTEL_EXPORTER_OTLP_PROTOCOL | レポートプロトコル。トレースは grpc、http/protobuf、http/json をサポートします。メトリックは grpc と http/protobuf をサポートします。gRPC エンドポイントを選択した場合は、この変数を grpc に設定します。それ以外の場合は、http/protobuf または http/json を使用します。 | export OTEL_EXPORTER_OTLP_PROTOCOL=grpc |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | トレースのレポートエンドポイント。HTTP と gRPC の両方のエンドポイントがサポートされています。「事前準備」で取得した ${GRPC_ENDPOINT} または ${HTTP_TRACES_ENDPOINT} の値を使用します。 |
|
| OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | メトリックのレポートエンドポイント。HTTP と gRPC の両方のエンドポイントがサポートされています。「事前準備」で取得した ${GRPC_ENDPOINT} または ${HTTP_METRICS_ENDPOINT} の値を使用します。 |
|
| OTEL_EXPORTER_OTLP_HEADERS | gRPC レポート用のリクエストヘッダーで、主に認証に使用されます。Authentication=${GRPC_AUTHENTICATION_TOKEN} の形式を使用します。ここで、${GRPC_AUTHENTICATION_TOKEN} は 「事前準備」で取得した認証トークンです。 | export OTEL_EXPORTER_OTLP_HEADERS=Authentication=abcdef1234@abcdef****56789_abcdef1234@abcdef****56789 |
OpenTelemetry Collector を介したデータ転送
OpenTelemetry Collector は、アプリケーションからトレース、メトリック、ログデータを受信し、エクスポーターの設定に基づいて Managed Service for OpenTelemetry にデータを転送します。
オプション 1:ACK Marketplace から ACK クラスターへのデプロイ
このオプションでは、コレクターを ACK Marketplace から Container Service for Kubernetes (ACK) クラスターにデプロイします。ACK Marketplace は現在、OpenTelemetry Collector (Core) エディションのみを提供しており、Contrib エディションは提供していません。ログデータを収集するには、他のいずれかのデプロイ方法を使用してください。
ステップ 1:コレクターのデプロイ
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
Marketplace で
opentelemetry-collectorを検索してクリックし、ページの右上隅にある [Deploy] をクリックします。作成 ページで、
opentelemetry-collectorをデプロイするクラスターと名前空間を選択します。デフォルトの名前空間は otel-collector です。次に、次へ をクリックします。パラメーター設定 ページで、mode パラメーターを
deploymentまたはdaemonsetに設定し、OK をクリックします。
ステップ 2:コレクターパラメーターの設定
クラスターリスト ページで、ターゲットクラスターをクリックします。
左側メニューで、 を選択します。
opentelemetry-collector がデプロイされている名前空間を選択します。デフォルトの名前空間は otel-collector です。
設定項目 ページで opentelemetry-collector を見つけ、YAML 編集 をクリックします。
次の YAML コンテンツに基づいてエクスポーター、プロセッサー、レシーバー、およびサービスセクションを設定し、OK をクリックします。
opentelemetry-collector 設定項目 (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]opentelemetry-collector 設定項目 (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 を手動で再起動してください。
オプション 2:Docker を使用したデプロイ
このオプションでは、コレクターを Docker コンテナとして実行します。Core エディションと Contrib エディションの両方が利用可能です。
ステップ 1:イメージのプル
opentelemetry-collector
イメージのバージョンを指定するには、https://hub.docker.com/r/otel/opentelemetry-collector/tags にアクセスしてください。
docker pull otel/opentelemetry-collector:latestopentelemetry-collector-contrib
イメージのバージョンを指定するには、https://hub.docker.com/r/otel/opentelemetry-collector-contrib/tags にアクセスしてください。
docker pull otel/opentelemetry-collector-contrib:latestステップ 2:設定ファイルの準備
config.yaml ファイルを作成し、関連するパラメーターを設定します。次の例では、${VAR} 形式のプレースホルダーを、「事前準備」で準備した値に置き換える必要があります。これらのプレースホルダーは、コレクターが実行時に環境変数から解決する ${env:MY_POD_IP} などのコレクターネイティブの ${env:...} 展開構文とは異なります。
opentelemetry-collector 設定項目 (gRPC レポート)
# 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]opentelemetry-collector 設定項目 (HTTP レポート)
# 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]opentelemetry-collector-contrib 設定項目 (gRPC レポート)
# 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]opentelemetry-collector-contrib 設定項目 (HTTP レポート)
# 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:カスタム設定ファイルをマウントしてコレクターを実行
-p フラグはレシーバーポートを公開し、アプリケーションがコレクターにデータを送信できるようにします。設定ファイルのレシーバーエンドポイントに合わせてポートマッピングを調整してください。
opentelemetry-collector
docker run -p 4317:4317 -p 4318:4318 -v $(pwd)/config.yaml:/etc/otelcol/config.yaml otel/opentelemetry-collector:latestopentelemetry-collector-contrib
docker run -p 4317:4317 -p 4318:4318 -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latestその他のデプロイ方法については、「その他のインストールおよびデプロイ方法」をご参照ください。