Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AWS X-Rayによるアプリケーションの分析とデバッグ

3,071 views

Published on

2017.09.26 OpsJAWS #13

Published in: Technology
  • Be the first to comment

AWS X-Rayによるアプリケーションの分析とデバッグ

  1. 1. アマゾン ウェブ サービス ジャパン 2017.09.26 OpsJAWS#13 AWS X-Ray による アプリケーションの分析とデバッグ
  2. 2. 内容についての注意点 本資料では2017年9月26日時点のサービス内容および価格についてご説明しています。最新の情報は AWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。 • 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価格に相違が あった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。 • 価格は税抜表記となっています。日本居住者のお客様が東京リージョンを使用する場合、別途消費税 をご請求させていただきます。 AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.
  3. 3. 3 Agenda Web アプリケーション開発における課題 X-ray とは AWS X-Ray の概念 AWS 各サービスとの統合 デモ まとめ
  4. 4. 4 現在の Web アプリケーションの パフォーマンスチューニングや デバッグにおける課題
  5. 5. 5 課題:モノリシック と マイクロサービス • 分散アプリケーションはますます増加していく傾向 • Web 3層アプリケーション • マイクロサービス・アーキテクチャ • 世界中の多種多様な Web API との連携 • etc. • モノリシックな(単一の)アプリケーション → 分析やデバッグは比較的単純 • 分散アプリケーション → 分析やデバッグが複雑 • 依存/連携 しあう多くの 内部/外部 サービス群のどこにボトルネックや問題があるのか
  6. 6. 6 課題:プロダクション と 開発環境 • プロダクション環境 と 開発環境 の違い • 開発環境では動いていたのに、 プロダクション環境にデプロイしたら動かなくなった・・・ • いざ、プロダクション環境にデプロイしてみたら パフォーマンスが全然出なかった・・・ • プロダクション環境で発生した障害が 開発環境では再現しない・・・ • プロダクション環境の調査は煩雑 • 関連する各アプリケーションのログの収集、フォーマット変換、そして結合 • プロダクション環境を直接プロファイリングし、 プロダクション環境を直接デバッグできたらどんなに楽か
  7. 7. AWS X-Ray が解決 7 アプリケーションやその基盤サービスの実行状況を プロダクション環境において可視化することにより パフォーマンスの問題やエラーの根本原因を特定
  8. 8. 8 X-Ray とは
  9. 9. What is X-ray? http://ejje.weblio.jp/content/X-ray 「英和辞典 Weblio辞書」より
  10. 10. What is X-ray? http://ejje.weblio.jp/content/X-ray 「英和辞典 Weblio辞書」より レントゲン
  11. 11. What is X-ray(レントゲン)? 人体の 分析や画像診断
  12. 12. What is AWS X-Ray? 分散アプリケーションの 可視化と診断
  13. 13. 13 X-ray(レントゲン) 人体内部の 分析や画像診断 病気や怪我を 見つけ、調べる What is AWS X-Ray? AWS X-Ray 分散アプリケーションの 可視化と診断 パフォーマンス低下やエラーを 見つけ、調べる
  14. 14. 14 サービスマップ
  15. 15. 15 サービスマップ
  16. 16. サービスマップ 各ノードの呼び出しの結果を 色で分類し、割合を円グラフに • グリーン 成功した呼び出し • レッド 5xx errors • イエロー 4xx errors • パープル 429 Too Many Requests (スロットリングエラー) 平均レイテンシ (ms) トレース数 (trace/min) サービス名 サービスの分類
  17. 17. サービスマップ 各ノードの呼び出しの結果を 色で分類し、割合を円グラフに • グリーン 成功した呼び出し • レッド 5xx errors • イエロー 4xx errors • パープル 429 Too Many Requests (スロットリングエラー) 平均レイテンシ (ms) トレース数 (trace/min) サービス名 サービスの分類
  18. 18. レイテンシの分散グラフ • レイテンシを ヒストグラムで表示 • x軸にかかった時間 y軸にリクエストの割合
  19. 19. レイテンシの分散グラフ • レイテンシを ヒストグラムで表示 • x軸にかかった時間 y軸にリクエストの割合 • 任意を範囲を選択して 拡大が可能
  20. 20. レイテンシの分散グラフ • レイテンシを ヒストグラムで表示 • x軸にかかった時間 y軸にリクエストの割合 • 任意を範囲を選択して 拡大が可能
  21. 21. レイテンシの分散グラフ 21 • レイテンシを ヒストグラムで表示 • x軸にかかった時間 y軸にリクエストの割合 • 任意を範囲を選択して 拡大が可能
  22. 22. トレースの概要
  23. 23. トレースの詳細
  24. 24. トレースのフィルタ • フィルタ式を使って、特定のトレースを抽出することができる。 – responsetime > 5 – duration >= 5 AND duration <= 8 – service("api.example.com") { fault = true OR responsetime > 2.5 } AND annotation.account = "12345"
  25. 25. エラーの検出
  26. 26. 26 データ収集
  27. 27. 27 AWS X-Ray の概念 と コンポーネント トレース 単一のリクエストに関する、サービスをまたいだ End-to-end のデータ セグメント トレースの構成要素。個々のサービスに対応 サブセグメント セグメントの構成要素。個々のリモートコールやローカル処理に対応。 メタデータ / アノテーション セグメントの構成要素。トレースに追加可能な任意のビジネスデータ。 アノテーションはトレースデータのフィルタリングに使用可能。
  28. 28. データ収集の動作
  29. 29. データ収集の動作 メタデータを自動で キャプチャする機能を提供 SDK からトラフィックを受信。 データを一定時間バッファし たのち X-Ray API に送信 トレースデータを送信、 フィルタ、検索するため のAPIセットを提供
  30. 30. データ収集の動作 アプリケーション・サーバ
  31. 31. データ収集の動作 user アプリケーション・サーバ
  32. 32. データ収集の動作 X-Ray SDKを使わずに、直接X-Ray APIと データをやり取りすることも、もちろん可能
  33. 33. アプリケーション内でのトレースの動作
  34. 34. アプリケーションには X-Ray SDKを組み込む必要がある X-Ray SDK がリクエストを自動でキャプチャしセグメントデータを収集 アプリケーション内でのトレースの動作 user RDB Amazon DynamoDB Amazon SNS Web API / Web Service
  35. 35. 36 各 AWS サービスとの統合・連携
  36. 36. 37 AWS X-Ray SDK がサポートする言語 Java Node.js C# ・.NET対応 AWS X-Ray SDKを利用 ・Windows Serverの.NET: メッセージハンドラをHTTPに設定 ・AWS X-Ray SDK for Javaを利用 ・tomcat: サーブレットフィルタをデプロイ記述子 (web.xml) に追加 ・Spring Boot: サーブレットフィルタを WebConfig クラスに追加 ・他サーブレット系フレームワークでは、同様にサーブレットフィルタを追加 ・X-Ray SDK for Node.js を利用 ・Express:アプリケーションサーバーで SDK をミドルウェアとして追加 http://docs.aws.amazon.com/xray/latest/devguide/xray-usage.html#xray-usage-languages Python ・ https://aws.amazon.com/jp/about-aws/whats-new/2017/08/aws-x-ray-sdk-for-python-beta/ ・現在は Beta ・boto3, botocore, requests, django(>=1.10), sqlite3, mysql-connector New!(2017.08.08) Go ・https://aws.amazon.com/jp/about-aws/whats-new/2017/08/aws-x-ray-sdk-for-go-beta/ ・現在は Beta ・Go 1.7 以上が必要。 AWS SDK for Go 1.10.0 以上に依存(コンパイル及びランタイム時)。 New!(2017.08.30)
  37. 37. 38 AWS X-Ray SDK for java で サポートされるトレース・ターゲット 各種 AWS サービスへのアクセス • Amazon DynamoDB, Amazon SQS, Amazon S3, etc. RDB へのクエリ • MySQL, PostgreSQL 外部への HTTP リクエスト • Apache HttpComponents の DefaultHttpClient, HttpClientBuilder の実装を提供 その他、サブセグメントデータを手動作成すること により任意のターゲットをトレース可能 ※ 各 X-Ray SDK によって実装されている内容は異なります http://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-java.html
  38. 38. 39 Elastic Load Balancing との統合 • Application Load Balancer (ALB) は受信した HTTP リクエストのヘッダに対してトレース ID という値を 追加する • 例: • アプリケーション内でこのヘッダの値を記録しておくこ とで、ユーザのアクセスと AWS X-Ray のトレースを 紐付けて調査することも可能
  39. 39. 40 アプリケーション実行環境との統合 AWSサービス X-Ray デーモン Amazon EC2 手動でインストール AWS Elastic Beanstalk 自動で有効化(※) Amazon ECS 手動でインストール AWS Lambda 自動で有効化(※) ※ 設定を変更することで有効化されます
  40. 40. 41 アプリケーション実行環境との統合 AWSサービス X-Ray デーモン Amazon EC2 手動でインストール AWS Elastic Beanstalk 自動で有効化(※) Amazon ECS 手動でインストール AWS Lambda 自動で有効化(※) ※ 設定を変更することで有効化されます
  41. 41. 42 AWS Lambda Lambda 関数のトレースは簡単 Lambda 関数の設定変更 だけでトレースを有効化 (AWS CLI なら1行) ※ 多少のメモリ消費量の増加
  42. 42. 43 デモ
  43. 43. 44 料金体系 1. トレースの記録 • 100 万件あたり 5 USD (1 件あたり 0.000005 USD) • 無料利用枠:10万件/月 2. トレースの取得とスキャン • 100 万回あたり 0.5 USD (1 件あたり 0.0000005 USD) • 無料利用枠:100万回/月 ※ 無料利用枠は永続的 • 「アカウント作成後1年以内」などの制限はなく 毎月上記の無料利用枠が適用 https://aws.amazon.com/jp/xray/pricing/
  44. 44. 45 ユースケース例 • 負荷試験時に AWS X-Ray を集中的に利用し、 パフォーマンスのチューニングを行う • プロダクション環境は、 • 限られた重要な処理の URL については、すべての HTTP リクエス トをトレースする設定とし、問題が起きた場合の個別調査を可能に • それ以外はサンプリングを行い統計的にモニタリング • ステージング環境や開発環境は、アクセスが多くはないので すべての HTTP リクエストをトレースするように設定し、 問題やパフォーマンス低下を早期に発見
  45. 45. 46 注意点 • デフォルトでは、サンプリングされる • すべての HTTP リクエストをトレースする設定も可能だが、 料金とパフォーマンスそれぞれへの影響を事前に確認 → 適用する URL パスごとに設定を変えるなど • データの完全性は保証されない • 監査やコンプライアンスのツールとしては使用不可 • 直近 30 日間のトレースデータが保存される • 過去 30 日間の追跡データに対してクエリを実行可能
  46. 46. 47 まとめ
  47. 47. 48 まとめ 本番環境のアプリケーションの問題を検出し パフォーマンスのボトルネックを可視化 分散アプリケーションの状態把握とデバックを容易に AWS X-Ray と各種 AWS サービスとの 強力なインテグレーション
  48. 48. 49

×