aws x-rayによるアプリケーションの分析とデバッグ
TRANSCRIPT
![Page 1: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/1.jpg)
アマゾン ウェブ サービス ジャパン
2017.09.26 OpsJAWS#13
AWS X-Ray によるアプリケーションの分析とデバッグ
![Page 2: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/2.jpg)
内容についての注意点
本資料では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.
![Page 3: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/3.jpg)
3
Agenda
Web アプリケーション開発における課題
X-ray とは
AWS X-Ray の概念
AWS 各サービスとの統合
デモ
まとめ
![Page 4: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/4.jpg)
4
現在の Web アプリケーションのパフォーマンスチューニングやデバッグにおける課題
![Page 5: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/5.jpg)
5
課題:モノリシック と マイクロサービス
• 分散アプリケーションはますます増加していく傾向• Web 3層アプリケーション
• マイクロサービス・アーキテクチャ
• 世界中の多種多様な Web API との連携
• etc.
• モノリシックな(単一の)アプリケーション→ 分析やデバッグは比較的単純
• 分散アプリケーション→ 分析やデバッグが複雑
• 依存/連携 しあう多くの 内部/外部 サービス群のどこにボトルネックや問題があるのか
![Page 6: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/6.jpg)
6
課題:プロダクション と 開発環境
• プロダクション環境 と 開発環境 の違い• 開発環境では動いていたのに、
プロダクション環境にデプロイしたら動かなくなった・・・• いざ、プロダクション環境にデプロイしてみたら
パフォーマンスが全然出なかった・・・• プロダクション環境で発生した障害が
開発環境では再現しない・・・
• プロダクション環境の調査は煩雑• 関連する各アプリケーションのログの収集、フォーマット変換、そして結合
• プロダクション環境を直接プロファイリングし、プロダクション環境を直接デバッグできたらどんなに楽か
![Page 7: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/7.jpg)
AWS X-Ray が解決
7
アプリケーションやその基盤サービスの実行状況をプロダクション環境において可視化することにより
パフォーマンスの問題やエラーの根本原因を特定
![Page 8: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/8.jpg)
8
X-Ray とは
![Page 9: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/9.jpg)
What is X-ray?
http://ejje.weblio.jp/content/X-ray 「英和辞典 Weblio辞書」より
![Page 10: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/10.jpg)
What is X-ray?
http://ejje.weblio.jp/content/X-ray 「英和辞典 Weblio辞書」より
レントゲン
![Page 11: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/11.jpg)
What is X-ray(レントゲン)?
人体の
分析や画像診断
![Page 12: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/12.jpg)
What is AWS X-Ray?
分散アプリケーションの
可視化と診断
![Page 13: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/13.jpg)
13
X-ray(レントゲン)
人体内部の分析や画像診断
病気や怪我を見つけ、調べる
What is AWS X-Ray?
AWS X-Ray
分散アプリケーションの可視化と診断
パフォーマンス低下やエラーを見つけ、調べる
![Page 14: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/14.jpg)
14
サービスマップ
![Page 15: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/15.jpg)
15
サービスマップ
![Page 16: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/16.jpg)
サービスマップ
各ノードの呼び出しの結果を色で分類し、割合を円グラフに
• グリーン 成功した呼び出し
• レッド 5xx errors
• イエロー 4xx errors
• パープル 429 Too Many Requests(スロットリングエラー)
平均レイテンシ (ms)
トレース数 (trace/min)
サービス名
サービスの分類
![Page 17: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/17.jpg)
サービスマップ
各ノードの呼び出しの結果を色で分類し、割合を円グラフに
• グリーン 成功した呼び出し
• レッド 5xx errors
• イエロー 4xx errors
• パープル 429 Too Many Requests(スロットリングエラー)
平均レイテンシ (ms)
トレース数 (trace/min)
サービス名
サービスの分類
![Page 18: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/18.jpg)
レイテンシの分散グラフ
• レイテンシをヒストグラムで表示
• x軸にかかった時間y軸にリクエストの割合
![Page 19: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/19.jpg)
レイテンシの分散グラフ
• レイテンシをヒストグラムで表示
• x軸にかかった時間y軸にリクエストの割合
• 任意を範囲を選択して拡大が可能
![Page 20: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/20.jpg)
レイテンシの分散グラフ
• レイテンシをヒストグラムで表示
• x軸にかかった時間y軸にリクエストの割合
• 任意を範囲を選択して拡大が可能
![Page 21: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/21.jpg)
レイテンシの分散グラフ
21
• レイテンシをヒストグラムで表示
• x軸にかかった時間y軸にリクエストの割合
• 任意を範囲を選択して拡大が可能
![Page 22: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/22.jpg)
トレースの概要
![Page 23: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/23.jpg)
トレースの詳細
![Page 24: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/24.jpg)
トレースのフィルタ
• フィルタ式を使って、特定のトレースを抽出することができる。– responsetime > 5
– duration >= 5 AND duration <= 8
– service("api.example.com") { fault = true OR responsetime > 2.5 } AND annotation.account = "12345"
![Page 25: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/25.jpg)
エラーの検出
![Page 26: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/26.jpg)
26
データ収集
![Page 27: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/27.jpg)
27
AWS X-Ray の概念 と コンポーネント
トレース 単一のリクエストに関する、サービスをまたいだ End-to-end のデータ
セグメント トレースの構成要素。個々のサービスに対応
サブセグメント セグメントの構成要素。個々のリモートコールやローカル処理に対応。
メタデータ /
アノテーションセグメントの構成要素。トレースに追加可能な任意のビジネスデータ。アノテーションはトレースデータのフィルタリングに使用可能。
![Page 28: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/28.jpg)
データ収集の動作
![Page 29: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/29.jpg)
データ収集の動作
メタデータを自動でキャプチャする機能を提供
SDKからトラフィックを受信。
データを一定時間バッファしたのち X-Ray API に送信
トレースデータを送信、フィルタ、検索するためのAPIセットを提供
![Page 30: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/30.jpg)
データ収集の動作
アプリケーション・サーバ
![Page 31: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/31.jpg)
データ収集の動作
user
アプリケーション・サーバ
![Page 32: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/32.jpg)
データ収集の動作
X-Ray SDKを使わずに、直接X-Ray APIとデータをやり取りすることも、もちろん可能
![Page 33: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/33.jpg)
アプリケーション内でのトレースの動作
![Page 34: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/34.jpg)
アプリケーションには X-Ray SDKを組み込む必要があるX-Ray SDKがリクエストを自動でキャプチャしセグメントデータを収集
アプリケーション内でのトレースの動作
user
RDB
Amazon
DynamoDB
Amazon
SNS
Web API /
Web Service
![Page 35: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/35.jpg)
36
各 AWS サービスとの統合・連携
![Page 36: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/36.jpg)
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)
![Page 37: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/37.jpg)
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
![Page 38: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/38.jpg)
39
Elastic Load Balancing との統合
• Application Load Balancer (ALB) は受信した HTTPリクエストのヘッダに対してトレース ID という値を追加する
• 例:
• アプリケーション内でこのヘッダの値を記録しておくことで、ユーザのアクセスと AWS X-Ray のトレースを紐付けて調査することも可能
![Page 39: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/39.jpg)
40
アプリケーション実行環境との統合
AWSサービス X-Ray デーモン
Amazon EC2 手動でインストール
AWS Elastic Beanstalk 自動で有効化(※)
Amazon ECS 手動でインストール
AWS Lambda 自動で有効化(※)
※ 設定を変更することで有効化されます
![Page 40: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/40.jpg)
41
アプリケーション実行環境との統合
AWSサービス X-Ray デーモン
Amazon EC2 手動でインストール
AWS Elastic Beanstalk 自動で有効化(※)
Amazon ECS 手動でインストール
AWS Lambda 自動で有効化(※)
※ 設定を変更することで有効化されます
![Page 41: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/41.jpg)
42
AWS Lambda
Lambda 関数のトレースは簡単
Lambda 関数の設定変更だけでトレースを有効化
(AWS CLI なら1行)
※ 多少のメモリ消費量の増加
![Page 42: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/42.jpg)
43
デモ
![Page 43: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/43.jpg)
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/
![Page 44: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/44.jpg)
45
ユースケース例
• 負荷試験時に AWS X-Ray を集中的に利用し、パフォーマンスのチューニングを行う
• プロダクション環境は、• 限られた重要な処理の URL については、すべての HTTP リクエス
トをトレースする設定とし、問題が起きた場合の個別調査を可能に
• それ以外はサンプリングを行い統計的にモニタリング
• ステージング環境や開発環境は、アクセスが多くはないのですべての HTTP リクエストをトレースするように設定し、問題やパフォーマンス低下を早期に発見
![Page 45: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/45.jpg)
46
注意点
• デフォルトでは、サンプリングされる• すべての HTTP リクエストをトレースする設定も可能だが、
料金とパフォーマンスそれぞれへの影響を事前に確認→ 適用する URL パスごとに設定を変えるなど
• データの完全性は保証されない• 監査やコンプライアンスのツールとしては使用不可
• 直近 30 日間のトレースデータが保存される• 過去 30 日間の追跡データに対してクエリを実行可能
![Page 46: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/46.jpg)
47
まとめ
![Page 47: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/47.jpg)
48
まとめ
本番環境のアプリケーションの問題を検出しパフォーマンスのボトルネックを可視化
分散アプリケーションの状態把握とデバックを容易に
AWS X-Ray と各種 AWS サービスとの強力なインテグレーション
![Page 48: AWS X-Rayによるアプリケーションの分析とデバッグ](https://reader031.vdocuments.net/reader031/viewer/2022021419/5a6478657f8b9a27568b45d5/html5/thumbnails/48.jpg)
49