こんにちは。
Cloud Automator 開発チームの山田です。
今回は、現在プレビュー版として限定公開されている AWS X-Ray を触る機会があったのでご紹介します。
AWS X-Ray とは
AWS X-Ray はアプリケーション内で発生する一連のリクエスト/レスポンスのデータ(HTTPリクエストやAPIコール等)を収集し、可視化・分析するためのサービスです。
Zipkin や Stackdriver Trace をイメージしていただければ、AWS X-Ray で何が出来るのかが何となくイメージ出来ると思います。
AWS X-Ray のUI
AWS X-Ray は、大きく サービスマップ と トレース の2つのメニューに分かれています。
サービスマップ
サービスマップは、アプリケーションから生成されたトレースデータを視覚的に表したものです。
リクエストの起点となるクライアントのノードと、各アプリケーションを表すサービスのノードで構成されます。
それぞれのノード(緑色)をクリックすると、そのノードで発生したトレースデータを一覧で表示する画面(トレース画面)に遷移します。
トレース
トレース画面では、「各リクエストにどのくらい時間がかかっているのか」「ステータスコードは何なのか」等がリクエスト毎に一覧で表示されます。
また、この一行一行を区別するためにそれぞれにトレースIDと呼ばれる一意のIDが付与されています。
トレースIDをクリックするとトレースの詳細画面に遷移します。
トレースの詳細
トレースの詳細画面では、リクエストの Start から End までの各ポイントで収集されたデータが時系列で表示されます。
各ポイントで収集されたデータはセグメントと呼ばれていて、閲覧したいセグメントをクリックすると詳細なデータが表示されます。
AWS X-Ray のフィルタ
AWS X-Ray のコンソール画面上部にはテキストボックスが用意されており、ここにフィルタと呼ばれる検索式を書くことで目的のトレースデータを素早く検索することが出来ます。
検索式の例
responsetime > 5
– レスポンス時間が5秒以上duration >= 5 AND duration <= 8
– 期間が5〜8秒service(“dynamodb")
– DynamoDBの呼び出しを含むリクエスト
AWS X-Ray へトレースデータを送信する方法
既存のアプリケーションから、AWS X-Ray へトレースデータを送信する方法はいくつかあります。
1. X-Ray SDK を利用する方法
X-Ray SDK は X-Ray デーモンにトレースデータを生成して送信するためのライブラリで、Java / Node.js / .NET の環境で利用できます。
X-Ray SDK は AWS X-Ray に直接データを送信するのではなく、サーバ上でデーモンとして動作している X-Ray デーモンにトレースデータを送信します。
X-Ray デーモンはセグメントを収集して定期的にバッチで AWS X-Ray へトレースデータをアップロードします。
Node.js の場合で言うと、Express フレームワークを使用するアプリケーション向けのライブラリが提供されており、ライブラリを経由して X-Ray デーモンへトレースデータを送信します。
2. AWS SDK を利用する方法
AWS SDK の API も用意されています。
X-Ray SDK に対応していない言語から AWS X-Ray を利用する場合は、AWS SDK の PutTraceSegments を使ってトレースデータを送信します。
この場合は、X-Ray SDK を利用する場合と違い API で直接 AWS X-Ray へトレースデータを送信します。
AWS SDK はトレースデータを JSON で送る必要があり、JSON はユーザ側で組み立てる必要があるので X-Ray SDK を利用する場合と比べると少し手間が掛るのかもしれません。
- Java – AWS SDK for Java
- JavaScript – AWS SDK for JavaScript
- .NET – AWS SDK for .NET
- Ruby – AWS SDK for Ruby
- Go – AWS SDK for Go
- PHP – AWS SDK for PHP
- Python – AWS SDK for Python (Boto)
3. AWS CLI を利用する方法
AWS CLI の put-trace-segments
や put-telemetry-records
を使ってトレースデータを送信します。
まとめ
AWS X-Ray についてざっくりとご紹介させていただきましたが、Cloud Automator ではより良いサービスをお客様へご提供するために、今回のように様々なサービスを日々検証しております。
次回は実践編として、実際に AWS SDK を使ってトレースデータを AWS X-Ray に送信する方法をご紹介します。
Cloud Automator(クラウドオートメーター) とは、バックアップや災害対策、AWS費用の削といった「ジョブ」と、AWSがガイドライン通りに運用されていることを継続的に確認する「構成レビュー」という2つのAWS運用を自動化し、AWSの利用メリットを最大限に引き出すサービスです。