X-Ray のセットアップ

AWS X-Ray は、開発者がマイクロサービスアーキテクチャなどを使用して構築された分散アプリケーションを、本番環境において分析およびデバッグするのに役立ちます。X-Ray を使用すると、アプリケーションとその基盤となるサービスのパフォーマンスを把握して、パフォーマンスの問題やエラーの根本原因を特定し、トラブルシューティングできます。X-Ray は、アプリケーションを通過するリクエストのエンドツーエンドのビューを提供し、アプリケーションの基礎となるコンポーネントのマップを表示します。X-Ray を使用すると、シンプルな 3 層アプリケーションから、数千のサービスで構成される複雑なマイクロサービスアプリケーションまで、開発および本番環境の両方のアプリケーションを分析できます。

x_ray

X-Ray には、アプリケーションとは別のプロセスとして実行されるエージェント (X-Ray daemon) があります。X-Ray SDK は、アプリケーションからトレースを収集し、UDP 経由でローカルエージェントに送信します。その後、エージェントは X-Ray API を使用して X-Ray サービスにトレースを送信します。本ワークショップでは、X-Ray daemon を DaemonSet として Kuberentes クラスターにデプロイします。

x_ray_architecture

IAM Roles for Service Accounts のセットアップ

X-Ray daemon が X-Ray サービスにトレースを送信するために、X-Ray daemon に X-Ray サービスへのアクセス許可を付与する必要があります。ここでは、IAM Roles for Service Accounts を利用して X-Ray daemon を実行する Pod に権限を付与します。

はじめに、以下のコマンドで EKS クラスターに OIDC ID プロバイダーを関連付けます。

eksctl utils associate-iam-oidc-provider --cluster eksworkshop-eksctl --approve

以下のようなメッセージが出力されれば、関連付けは成功しています。

2021-09-17 01:22:24 [✔]  created IAM Open ID Connect provider for cluster "eksworkshop-eksctl" in "us-west-2"

続いて、X-Ray daemon 用の ServiceAccount と IAM ロールを作成します。

eksctl create iamserviceaccount --name xray-daemon --namespace default --cluster eksworkshop-eksctl --attach-policy-arn arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess --approve --override-existing-serviceaccounts

DaemonSet のデプロイ

X-Ray daemon を実行する DaemonSet をデプロイします。このマニフェストでは、DaemonSet に加えて ClusterRoleBinding、ConfigMap、Service を宣言しています。

本ワークショップで利用するサンプルアプリケーションは X-Ray SDK をすでに利用しているため、DaemonSet をデプロイすると X-Ray でトレースデータが確認できるようになります。

cd ~/environment/codes/lab4
kubectl apply -f ./manifests/xray-k8s-daemonset.yaml

デプロイされた X-Ray daemon を確認します。DaemonSet はそれぞれのノードに Pod を配置するため、ここでは 3 つの Pod が確認できます。

kubectl get pods -L app

X-Ray コンソールでの動作確認

それでは、サンプルアプリケーションの操作を行い、実際にトレースデータを収集してみます。

以下のコマンドで取得したロードバランサーの URL からサンプルアプリケーションにアクセスし、カタログの追加やリロードなどいくつかの操作を行います。

export LB_NAME=$(kubectl get svc frontend -n workshop -o jsonpath="{.status.loadBalancer.ingress[*].hostname}") 
echo $LB_NAME

その後、マネジメントコンソールにて、ナビゲーションバー上の検索ボックスで「x-ray」と入力し、サービスの検索結果から「X-Ray」を選択します。

search_xray

左のナビゲーションメニューから「Service Map」を選択します。以下のようなマップが表示されれば、X-Ray のセットアップは正常に完了しています。

service_map