AWSのX-Ray(分散アプリの分析・デバッグツール)についてまとめています。
AWSのX-Rayは、分散アプリ用のトレース・デバッグツール
AWSのX-Rayは、Amazon EC2、Amazon ECS、AWS Lambda、AWS Elastic Beanstalkで実行しているアプリケーションで使用できるデバッグツール。アプリケーションにX-Ray SDKを統合して、X-Rayエージェントをインストールして実行することで動作が可能。Node.js、Java、.NET で記述されたアプリケーションに対応しています。
参考)AWS X-Ray(分散アプリケーションの分析とデバッグ)| AWS
サービスマップ(各サービスで集計された平均レイテンシーや障害発生率などを可視化)や、トレースデータなどのビジュアルツールも用意されていて、複雑な構造のアプリケーションの障害箇所を直感的に理解することができます。以下は、サービスマップの例です。
AWS X-Rayの料金
AWS X-Rayには、期限なし無料枠が設定されています。
- トレースの記録が 10 万回まで無料(月あたり)
- トレースの取得とスキャンが合わせて 100 万回まで無料(月当り)
無料枠を超える分は、TracingとInsightsでそれぞれ以下の料金がかかります。(米国東部オハイオリージョンの場合)
X-Ray Tracingの料金は以下の通り。
- トレースの記録 100 万件あたり 5.00USD (トレース 1 件あたり 0.000005 USD)
- トレースの取得 100 万件あたり 0.50USD (トレース 1 件あたり 0.0000005 USD)
- トレースのスキャン 100 万件あたり 0.50USD (トレース 1 件あたり 0.0000005 USD)
X-Ray Insightsの料金は以下の通り。
- トレースの記録 100 万件あたり 1.00USD (トレース 1 件あたり 0.000001USD)
例えば、1 時間あたり 2,000 件の受信リクエストが発生するアプリケーションで 10% のサンプリング頻度の場合、料金は以下のようになります。
- 1 か月あたりのトレース記録件数 = 1 時間あたり 2,000 リクエスト x 24 時間 x 31 日 x 10% = 148,800 トレース
- 1 か月あたりの有料トレース記録件数 = 148,800 トレース – 無料利用枠の 100,000 トレース = 48,800 トレース
- トレース記録の月額料金 = 48,800 トレース * 0.000005 USD = 0.24 USD
具体的な料金は、AWS Pricing Calculatorに必要な値を入力することで見積もることができます。
【関連記事】
▶AWSの見積もりは、AWS Pricing Calculatorで自動計算 ユースケースから流用も可能
見積もりに必要な項目は以下の通りです。
- 1 か月あたりのリクエスト数
- サンプリングレート
- 1 か月あたりのクエリ数
- クエリあたりの取得されたトレース
- X-Ray インサイトを追加するかどうか
AWS X-Rayの使い方
AWS X-Rayを使うには、AWSマネジメントコンソールの検索窓に「X-Ray」と入力して、X-Rayコンソールを開きます。
X-Rayコンソールでは、インサイト、サービスマップ、トレース、アナリティクスなどの可視化機能が呼び出せます。サンプリング頻度、暗号化、グループに関する設定もこの画面からおこなえます。
ナビゲーションペインで、「はじめに」から、アプリケーションにX-Rayをセットアップできます。サンプルアプリケーションも用意されているので、X-Rayの操作方法を確認したい場合はサンプルを選ぶと良いでしょう。
X-Rayコンソールの「インサイト」は、アカウントのトレースデータを継続的に分析し、アプリケーションの問題を特定します。アプリケーションのどこで問題が発生しているかを特定するのに役立つんですね。また、問題が時間の経過とともに変化する場合には、insight通知を受け取ることができます。
「サービスマップ」は、リクエストを処理するアカウント内の各アプリのサービスモード、リクエストの発信元のクライアントノード、リクエスト処理中にアプリケーションに使用されるウェブサービスを表すダウンストリームサービスノードが表示されます。サービスマップで緑以外の色で表示される箇所では、何かしらのエラーが起こっていることがわかります。
「トレース」では、URL、応答コード、トレースサマリーのその他のデータでトレースを検索、フィルタリングできます。
タイムラインビューにて、時系列を追って記録されたデータを追うことができるんですね。タイムラインビューからは、生のトレースデータを確認することも可能です。
AWS X-RayのBlackBeltオンラインセミナー
2020年5月26日のAWS X-Rayのブラックベルトオンラインセミナーです。アマゾンウェブサービスジャパンのソリューションアーキテクトの方が、日本語で解説する動画(54分47秒)です。YouTubeで視聴が可能です。
参考)【AWS Black Belt Online Seminar】AWS X-Ray – YouTube
セミナー当日の質問と回答、資料も公開されています。質問&回答では、ブラックベルトセミナーでしか得られない情報もあり、AWS X-Rayを詳しく知りたい方は必見。
セミナーでの質疑応答の内容や、資料も公開されています。
- beanstalk で x-Ray を有効にした場合、x-Ray メドリックはどこで確認できますか?AWS X-Ray サービス画面に入って確認しましたが、表示されてませんでした。
- 使い方として、1ヶ月間ほど X-Ray で情報収集をして、性能情報の統計や分析が可能と考えて良いでしょうか?
- X-Ray を停止せずにアプリケーション監視ツールとして使用しても大丈夫でしょうか?
- AWS 公式の hands-on 資料など、実際に手を動かして学べるようなものはありますでしょうか?
- X-Ray を利用するには X-Ray SDK の使用が必須ということでしょうか?
- AWS X-Ray SDK が組み込まれているアプリケーションにおいて、環境ごとにトレーシングの有効/無効を切り替えることはできるでしょうか。
- トレースする対象として、複数プロセス、コンポーネントが IP /ポート番号で通信する時、IP/ポート単位でトレース可能と考えて良いでしょうか?
- サンプリングルールはトレース ID 毎に適用されるのでしょうか?それともセグメント毎に適用されるのでしょうか?
- x-ray デーモン可能な OS には AWS Linux2は使用できますか?
- CloudWatch イベントから起動する Lambda でも使用できまか?
- 1) トレースIDですが、EKS に立てた Istio 環境でのマイクロサービス間にも適用できますか? 2) 全リクエストを記録することは可能ですか(リザーバサイズの設定にて)? 3) X-Rayデーモンが起動しなかった事を検知する方法はありますか(起動エラー検知をしたい場合)?
- レースは外部にエクスポートできないのでしょうか?
- Lambda や EC2 などの方法を教えていただきました。AWS Batch で組み込むにはどうすれば良いでしょうか?
リクエスト:X-Ray SDK の.NET 用のサンプルが見てみたいです。
参考)[AWS Black Belt Online Seminar] AWS X-Ray 資料及び QA 公開 | Amazon Web Services ブログ
AWS X-Rayのまとめ
- AWSのX-Rayは、Amazon EC2、Amazon ECS、AWS Lambda、AWS Elastic Beanstalkで動作するアプリケーションをトレース・デバッグするツール
- AWS XRayの料金は無料枠あり、トレースの取得、記録、スキャンの件数に課金される
- AWS XRayのブラックベルトセミナーでは、公式ドキュメントにない情報もあり、必見