このトピックでは、OpenTelemetryを使用して、KubernetesクラスターからSimple Log ServiceのトレースアプリケーションにIngressトレースデータをインポートする方法について説明します。
前提条件
トレースインスタンスが作成されます。 詳細については、「トレースインスタンスの作成」をご参照ください。
ステップ1: OpenTelemetryコレクターのインストール
Kubernetesクラスターにログインします。
cert-managerをインストールします。
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.6.1/cert-manager.yaml
OpenTelemetryオペレータをデプロイします。
opentelemetry-operator.yamlファイルをダウンロードします。
wget https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
opentelemetry-operator.yamlファイルを開き、ファイル内の画像情報を置き換えます。
次の図に示すように、opentelemetry-operator.yamlファイルの
ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator
をsls-registry.cn-beijing.cr.aliyuncs.com/opentelemetry-operator/opentelemetry-operator
に置き換えます。次のコマンドを実行して設定を適用します。
kubectl apply -f opentelemetry-operator.yaml
OpenTelemetryコレクターをデプロイします。
YAMLファイルを作成します。
vim collector.yaml
YAMLファイルに次のコードを入力し、ビジネスシナリオに基づいてパラメーターを設定します。
apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel spec: image: otel/opentelemetry-collector-contrib:latest config: | receivers: otlp: protocols: grpc: http: jaeger: protocols: grpc: thrift_http: thrift_compact: thrift_binary: zipkin: exporters: alibabacloud_logservice/logs: endpoint: "cn-hangzhou.log.aliyuncs.com" project: "demo-project" logstore: "store-logs" access_key_id: "access-key-id" access_key_secret: "access-key-secret" alibabacloud_logservice/metrics: endpoint: "cn-hangzhou.log.aliyuncs.com" project: "demo-project" logstore: "store-traces-metrics" access_key_id: "access-key-id" access_key_secret: "access-key-secret" alibabacloud_logservice/traces: endpoint: "cn-hangzhou.log.aliyuncs.com" project: "demo-project" logstore: "store-traces" access_key_id: "access-key-id" access_key_secret: "access-key-secret" service: pipelines: traces: receivers: [otlp, jaeger, zipkin] exporters: [alibabacloud_logservice/traces] metrics: receivers: [otlp] exporters: [alibabacloud_logservice/metrics]
パラメーター
説明
エンドポイント
Simple Log Serviceエンドポイント。 例: cn-hangzhou.log.aliyuncs.com。 詳細については、「エンドポイント」をご参照ください。
project
トレースインスタンスを作成するときに指定するプロジェクトの名前。 詳細については、「トレースインスタンスの作成」をご参照ください。
logstore
ログストアの名前 トレースインスタンスを作成すると、Simple Log Serviceは、ログデータ、メトリックデータ、およびトレースデータを格納するために、指定されたプロジェクトに3つのログストアを自動的に生成します。 ビジネスシナリオに基づいてLogstore名を置き換えます。
trace_instance_id -logs
trace_instance_id -traces-metrics
trace_instance_id -トレース
trace_instance_idは、トレースインスタンスのidを指定します。 詳細については、「トレースインスタンスの作成」をご参照ください。
access_key_id
Simple Log Serviceへのアクセスに使用されるAccessKey ID。
Simple Log Serviceプロジェクトに対する書き込み権限のみを持つRAMユーザーのAccessKeyペアを使用することを推奨します。 AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。 指定したプロジェクトの書き込み権限をRAMユーザーに付与する方法の詳細については、「カスタムポリシーを使用してRAMユーザーに権限を付与する」をご参照ください。 AccessKeyペアを取得する方法の詳細については、「AccessKeyペア」をご参照ください。
access_key_secret
Simple Log Serviceへのアクセスに使用されるAccessKeyシークレット。
Simple Log Serviceプロジェクトに対する書き込み権限のみを持つRAMユーザーのAccessKeyペアを使用することを推奨します。
次のコマンドを実行して設定を適用します。
otel-test
は、サービスが存在する名前空間を示します。kubectl apply -f collector.yaml --namespace=otel-test
ステップ2: Ingress OpenTracingの設定
この例では、Alibaba Cloud Container Service for Kubernetes (ACK) クラスターが使用されています。
ACKコンソールにログインします。
[クラスター] ページで、管理するクラスターをクリックします。
左側のナビゲーションウィンドウで、 を選択します。
ConfigMapページで、名前空間ドロップダウンリストからkube-systemを選択します。 [ConfigMap] リストで [nginx-configuration] を見つけ、[操作] 列の [編集] をクリックします。
[編集] パネルで、次の2つのパラメーターを設定し、[OK] をクリックします。
otel-test
は、サービスが存在する名前空間を示します。 この名前空間は、ステップ4.iiiで指定した名前空間と同じである必要があります。zipkin-collector-host: otel-collector.otel-test.svc.cluster.local:9411/api/v1/spans? enable-opentracing: true
上記の設定が完了すると、OpenTelemetryはKubernetesクラスターによって生成されたIngressトレースデータをtraceにアップロードします。 トレースアプリケーションでトレースデータを表示できます。 詳細については、「トレースの詳細の表示」をご参照ください。