【新機能】AWS X-Rayを試してみた #reinvent

2016.12.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大阪のガノタ市田です。 AWS re:Invent 2016で発表された新サービス「AWS X-Ray」のプレビュー申請が通ったので、早速試してみた内容をレポートしたいと思います。

AWS X-Rayとは

AWS X-Rayは簡単にいうとアプリケーションモニタリングのサービスになります。レスポンスタイムやレスポンスステータス等、アプリケーションに対するリクエストに関するデータを収集して表示、フィルタリングを行い、分析することで問題を特定することができます。

AWS X-Ray - AWS Documentation

注意点

AWS X-Rayはまだプレビュー版ですので、今後のリリースにより仕様が変更になる場合があります。 また、プレビューなので利用するには利用申請が必要です。下記のX-Rayのページから利用申請を行いましょう。

https://aws.amazon.com/jp/xray/

26-preview

使ってみた

それでは早速使ってみたいと思います。プレビューの利用申請が通ればメールが届きますので、メールにあるリンクをクリックしてコンソールにアクセスします。

01-start

今回は、既に用意されているサンプルアプリケーションを利用します。

02-sample

次の画面でサンプルアプリケーションを利用する流れの説明が表示されます。これによるとCloudFormationを利用して、ElasticBeanstalkの環境が構築されるようです。一通り内容を確認したら「Launch Sample Application」をクリックして次に進みます。

03-launch

「Next」をクリックします。

04-select

スタックの名前を指定します。今回はそのままにします。

05-datail

オプションもそのままにします。

06-option

レビューでIAMリソースの作成に関するチェックを入れて、「Create」をクリックします。

07-review

CloudFormationによる環境構築が完了したら、「Outoput」タブの「ElasitcBeanstalkEnvironmentURL」にあるURLにブラウザでアクセスします。下記の場合はhttp://52.X.X.Xになります。

09-complete

先程のURLにアクセスすると下記のようなページが表示されるので、「Start」をクリックします。 このサンプルアプリケーションでは、Startボタンを押すと自動的にアプリケーションに対するSignUPリクエストを投げる仕組みになっているようです。詳細は未確認ですが、フロントエンドのEC2に対してPOSTされた様々なメールアドレスがDynamoDBに格納されていました。 下にある「The next big thing is coming...」については、正式リリースの際に通知が届くようにする登録のようなので、必要に応じて入力してください。

10-start

これで準備完了です。リクエストが自動で投げられているので、1、2分待ってから先程のページにあった「AWS X-Ray Console」というリンクをクリックしてみます。

15-console

ログインすると「Service map」が表示されます。この図ではシステムの概要が表示されていて、サンプルアプリケーションはEC2、DynamoDB、SNSで構成されていることが分かります。

16-map1

EC2インスタンスをクリックして、トレース内容を確認できます。

17-map

18-trace

上記画面の下側にある「Trace list」の1つをクリックして詳細を見てみます。

19-list

レスポンスタイムやレスポンスコードなどが表示されます。下記の場合は、4XXのエラーであることが表示されています。

20-tracedetail

黄色い三角の注意マークをクリックすると、さらに詳細を確認できます。

21-error

DynamoDBがレスポンスコード400を返しているようです。

22-errordetail

「Exceptions」でエラーの内容を確認できました。「ConditionalCheckFailedException」のエラーであることが確認できます。

23-error-exceptions

また、X-Rayは画面の上部にある検索ボックスで、様々な形で出力をフィルタリングすることができます。例えば、レスポンスタイムが0.1秒よりも大きいものでフィルタする場合は「responsetime > 0.1」と入力します。

24-filter1

エラーコードの内容とレスポンスタイムの組み合わせなど、複数の条件を組み合わせてフィルタすることも可能です。

25-filter2

最後に

対応言語や対応サービスが広がるにつれて、AWSでアプリケーションを展開する上で欠かせないサービスになってくると思います。更に調べて紹介していきたいと思います。

以上になります。