Managed Service for OpenTelemetry は、アプリケーションからのトレース、メトリック、ログデータの受信をサポートし、直接レポートと OpenTelemetry Collector 経由の転送という 2 つのレポート方法を提供します。
準備
ログデータをレポートする必要がある場合は、Simple Log Service (SLS) をアクティブ化し、プロジェクトとログストアを作成し、事前にAccessKey ペアを作成してください。
次の表にリストされている変数、データ型、およびレポート方法を参照して、必要なエンドポイントと認証情報を準備します。詳細については、「Managed Service for OpenTelemetry の使用準備」をご参照ください。
シナリオ
変数名
説明
例
トレースデータとメトリックデータのレポート
gRPC 経由のレポート
${GRPC_ENDPOINT}
Managed Service for OpenTelemetry の gRPC レポートエンドポイント。トレースデータとメトリックデータのレポートをサポートします。
サービスが Alibaba Cloud にデプロイされており、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 にデータをレポートする場合に必要な認証トークン。トークンの取得方法については、「Managed Service for OpenTelemetry の使用準備」をご参照ください。
abcdef1234@abcdef****56789_abcdef1234@abcdef****56789
HTTP 経由のレポート
${HTTP_TRACES_ENDPOINT}
Managed Service for OpenTelemetry の HTTP レポートエンドポイント。トレースデータのレポートをサポートします。
サービスが Alibaba Cloud にデプロイされており、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 レポートエンドポイント。メトリックデータのレポートをサポートします。
サービスが Alibaba Cloud にデプロイされており、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}
SLS プロジェクトのエンドポイント。この変数は、ログデータをレポートする場合にのみ必要です。エンドポイントの取得方法については、「エンドポイント」をご参照ください。
test-project.cn-hangzhou.log.aliyuncs.com
${SLS_PROJECT}
SLS プロジェクトの名前。この変数は、ログデータをレポートする場合にのみ必要です。
test-project
${SLS_LOGSTORE}
SLS ログストアの名前。この変数は、ログデータをレポートする場合にのみ必要です。
test-logstore
${ALIYUN_ACCESS_KEY_ID}
Alibaba Cloud アカウントの AccessKey ID。この変数は、ログデータをレポートする場合にのみ必要です。
SLS プロジェクトへの書き込み権限のみを持つ RAM ユーザーの AccessKey ペア (ID とシークレットを含む) を使用することをお勧めします。RAM ユーザーに特定のプロジェクトにデータを書き込む権限を付与する方法については、「カスタムポリシーを使用して RAM ユーザーに権限を付与する例」をご参照ください。AccessKey ペアの取得方法については、「AccessKey ペア」をご参照ください。
なし
${ALIYUN_ACCESS_KEY_SECRET}
Alibaba Cloud アカウントの AccessKey シークレット。この変数は、ログデータをレポートする場合にのみ必要です。
SLS プロジェクトへの書き込み権限のみを持つ RAM ユーザーの AccessKey ペア (ID とシークレットを含む) を使用することをお勧めします。
なし
直接レポート
OpenTelemetry エージェントまたは SDK のレポートエンドポイントと認証トークンを構成することにより、OpenTelemetry によって収集されたトレースデータとメトリックデータを Managed Service for OpenTelemetry サーバーに直接送信できます。
方法 1:コードでレポート設定を構成する
次の Java コード例は、HTTP および gRPC 経由でデータをレポートするために Managed Service for OpenTelemetry のエンドポイント情報を構成する方法を示しています。統合センターにアクセスするか、「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_AUTHENTICATION_TOKEN}") // トレースデータを 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_METRICS_ENDPOINT}") // トレースデータを Managed Service for OpenTelemetry にレポートするための gRPC エンドポイントを設定します。
.addHeader("Authentication", "${GRPC_AUTHENTICATION_TOKEN}") // Managed Service for OpenTelemetry の認証トークンを設定します。
.build()).build())
.setResource(resource)
.build();
...方法 2:環境変数を使用してレポート設定を構成する
OpenTelemetry は、次の表にリストされている環境変数を使用してレポートエンドポイントを構成することもサポートしています。その他の OpenTelemetry プロトコルの環境変数については、「OTLP エクスポーターの構成」をご参照ください。
環境変数名 | 説明 | 例 |
OTEL_SERVICE_NAME | アプリケーション名。 | export OTEL_SERVICE_NAME=opentelemetry-demo-service |
OTEL_EXPORTER_OTLP_PROTOCOL | レポートプロトコル。 トレースレポートは、grpc、http/protobuf、http/json プロトコルをサポートしています。 メトリックレポートは、grpc および http/protobuf プロトコルをサポートしています。 gRPC レポートエンドポイントを選択する場合は、この変数を | 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 (Core):トレースデータとメトリックデータのレポートをサポートします。
OpenTelemetry Collector (Contrib):トレースデータ、メトリックデータ、ログデータのレポートをサポートします。
ソリューション 1:ACK Marketplace を使用して ACK クラスタに OpenTelemetry Collector をデプロイするACK Marketplace を介した ACK クラスタ
ACK Marketplace は現在、OpenTelemetry Collector (Core) のみをサポートしています。ログを収集する必要がある場合は、ソリューション 2 に進んでください。
1. Collector をデプロイする
ACK コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
[マーケットプレイス] ページで、
opentelemetry-collectorを検索してクリックし、表示されるページの右上隅にある [デプロイ] をクリックします。[基本情報] ステップで、
opentelemetry-collectorをデプロイするクラスタと名前空間 (デフォルト: otel-collector) を選択し、[次へ] をクリックします。[パラメーター] ステップで、mode パラメーターを
deploymentまたはdaemonsetに設定し、[OK] をクリックします。
2. Collector パラメーターを構成する
ACK コンソールの [クラスタ] ページで、ACK クラスタをクリックします。
左側のナビゲーションウィンドウで、 を選択します。
opentelemetry-collector が配置されている名前空間 (デフォルト: otel-collector) を選択します。
[ConfigMap] ページで、opentelemetry-collector を見つけ、[アクション] 列の [YAML を編集] をクリックします。
次の YAML ファイルを参照して、exporters、processors、receivers、service の各セクションを構成し、[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 # タイムアウト期間。デフォルト値:5 秒。必要に応じて調整してください。 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 を使用して OpenTelemetry Collector をデプロイするDocker
1. イメージをプルする
OpenTelemetry Collector (Core)
イメージバージョンを指定するには、 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:latest2. 構成ファイルを準備する
config.yaml ファイルを作成し、関連パラメーターを構成します。
OpenTelemetry Collector (Core) 構成 (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 (Core) 構成 (HTTP 経由のレポート)
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # タイムアウト期間。デフォルト値:5 秒。必要に応じて調整してください。
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 # タイムアウト期間。デフォルト値:5 秒。必要に応じて調整してください。
# ログエクスポーターの構成 (オプション)
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:latestOpenTelemetry Collector (Contrib)
docker run -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest