Service Mesh (ASM)では、Managed Service for OpenTelemetryにメトリクスを報告できます。Managed Service for OpenTelemetryコンソールで、呼び出し情報と、呼び出し情報に基づいて生成されたトポロジを表示できます。このトピックでは、ASMトレースデータをManaged Service for OpenTelemetryに収集する方法について説明します。
前提条件
ASMインスタンスが作成されていること。詳細については、ASMインスタンスの作成を参照してください。
Container Service for Kubernetes (ACK) クラスタがASMインスタンスに追加されていること。詳細については、ASMインスタンスへのクラスタの追加およびASMインスタンスの更新を参照してください。
Managed Service for OpenTelemetryがAlibaba Cloudアカウントで有効になっていること。このサービスの課金については、請求ルールを参照してください。
手順
ASMインスタンスのバージョンに基づいて、次の手順を実行します。
バージョンが1.17.2.35より前のASMインスタンスの場合
ASMコンソールにログインします。左側のナビゲーションペインで、 を選択します。
メッシュ管理ページで、ASMインスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。
基本情報ページで、設定をクリックします。設定の更新パネルで、トレース分析を有効にするを選択し、サンプリング率を設定し、サンプリング方法でManaged Service For Opentelemetryを有効にするを選択して、OKをクリックします。
左側のナビゲーションペインで、
を選択します。Managed Service for OpenTelemetryコンソールにリダイレクトされます。コンソールで、ASMトレースデータを確認できます。Managed Service for OpenTelemetryの詳細については、Managed Service for OpenTelemetryとはを参照してください。
この機能を使用する必要がなくなった場合は、設定の更新パネルでトレース分析を有効にするをオフにして、OKをクリックします。
バージョンが1.17.2.35以降、1.18.0.124より前のASMインスタンスの場合
ASMコンソールにログインします。左側のナビゲーションペインで、 を選択します。
メッシュ管理ページで、ASMインスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。
トレース分析ページで、Asmトレースデータをmanaged Service For Opentelemetryに収集をクリックします。送信メッセージで、OKをクリックします。
Managed Service For Opentelemetryコンソールを開くをクリックして、ASMトレースデータを表示します。
Managed Service for OpenTelemetryの詳細については、Managed Service for OpenTelemetryとはを参照してください。
この機能を使用する必要がなくなった場合は、トレース分析ページで収集を無効にするをクリックします。送信メッセージで、OKをクリックします。
バージョンが1.18.0.124以降のASMインスタンスの場合
ステップ1:OpenTelemetry Operatorをデプロイする
kubeconfigファイルの情報に基づいて、kubectlを使用してACKクラスタに接続します。次に、次のコマンドを実行して、opentelemetry-operator-system名前空間を作成します。
kubectl create namespace opentelemetry-operator-system
次のコマンドを実行して、Helmを使用してopentelemetry-operator-system名前空間にOpenTelemetry Operatorをインストールします。
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm install --namespace=opentelemetry-operator-system opentelemetry-operator open-telemetry/opentelemetry-operator \ --set "manager.collectorImage.repository=otel/opentelemetry-collector-k8s" \ --set admissionWebhooks.certManager.enabled=false \ --set admissionWebhooks.autoGenerateCert.enabled=true
次のコマンドを実行して、OpenTelemetry Operatorが正しく動作しているかどうかを確認します。
kubectl get pod -n opentelemetry-operator-system
予期される出力:
NAME READY STATUS RESTARTS AGE opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 1m
出力は、ステータスが実行中であることを示しています。これは、OpenTelemetry Operatorが正しく動作していることを意味します。
ステップ2:OpenTelemetry Collectorを作成する
次のコードブロックの内容を使用して、collector.yamlファイルを作成します。
YAMLファイルの
${ENDPOINT}
を、gRPCプロトコルをサポートする仮想プライベートクラウド(VPC)エンドポイントに置き換えます。${TOKEN}
を認証トークンに置き換えます。Managed Service for OpenTelemetryでサポートされているエンドポイントと認証トークンの取得方法については、Managed Service for OpenTelemetry を使用する準備を参照してください。kubeconfigファイルの情報に基づいてkubectlを使用してACKクラスタに接続し、次のコマンドを実行して、クラスタにOpenTelemetry Collectorをデプロイします。
kubectl apply -f collector.yaml
次のコマンドを実行して、OpenTelemetry Collectorが起動されているかどうかを確認します。
kubectl get pod -n opentelemetry-operator-system
予期される出力:
NAME READY STATUS RESTARTS AGE opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 3m default-collector-5cbb4497f4-2hjqv 1/1 Running 0 30s
出力は、OpenTelemetry Collectorが正常に起動したことを示しています。
次のコマンドを実行して、OpenTelemetry Collectorのサービスが作成されているかどうかを確認します。
kubectl get svc -n opentelemetry-operator-system
予期される出力:
opentelemetry-operator ClusterIP 172.16.138.165 <none> 8443/TCP,8080/TCP 3m opentelemetry-operator-webhook ClusterIP 172.16.127.0 <none> 443/TCP 3m default-collector ClusterIP 172.16.145.93 <none> 4317/TCP 30s default-collector-headless ClusterIP None <none> 4317/TCP 30s default-collector-monitoring ClusterIP 172.16.136.5 <none> 8888/TCP 30s
出力は、OpenTelemetry Collectorのサービスが作成されていることを示しています。
ステップ3:ASMコンソールでManaged Service for OpenTelemetryを有効にする
ASMコンソールにログインします。左側のナビゲーションペインで、 を選択します。
メッシュ管理ページで、ASMインスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。
可観測性設定ページのトレース分析設定セクションで、サンプリング率を100に設定し、送信をクリックします。
左側のナビゲーションペインで、
を選択します。Opentelemetryサービスアドレス/ドメイン名フィールドに、default-collector.opentelemetry-operator-system.svc.cluster.localと入力します。Opentelemetryサービスポートフィールドに4317と入力し、Asmトレースデータをmanaged Service For Opentelemetryに収集をクリックします。
ステップ4:テストアプリケーションをデプロイする
Bookinfoアプリケーションとsleepアプリケーションをデプロイします。詳細については、ASMインスタンスに追加されたACKクラスタへのアプリケーションのデプロイを参照してください。
ステップ5:アプリケーションにアクセスし、報告されたトレースデータを表示するおよび報告されたトレースデータの表示
次のコマンドを実行して、Productpageアプリケーションにアクセスします。
kubectl exec -it deploy/sleep -c sleep -- curl productpage:9080/productpage?u=normal
Productpageアプリケーションにアクセスした後、OpenTelemetry Collectorのログとエクスポーターによって出力された出力を表示します。
2023-11-20T08:44:27.531Z info TracesExporter {"kind": "exporter", "data_type": "traces", "name": "debug", "resource spans": 1, "spans": 3}
Application Real-Time Monitoring Service (ARMS) コンソールでトレースデータを表示します。
ARMSコンソールにログインします。
左側のナビゲーションペインで、
を選択します。ページの左上隅で、目的のリージョンを選択します。サービス名セクションで、リクエストを開始したsleepアプリケーションを選択します。sleepアプリケーションのトレースデータが右側に表示されます。
サイドカープロキシはsleepアプリケーションに挿入されます。sleepアプリケーションが他のサービスにアクセスするためのリクエストを開始すると、ASMはサイドカープロキシを出力ゲートウェイと見なします。
目的のトレースIDを見つけ、アクション列の詳細をクリックして、呼び出しの完全なトレースとレイテンシを表示します。