AWS X-Ray を使ってみる 基本編

記事タイトルとURLをコピーする

こんにちは。
Cloud Automator 開発チームの山田です。

今回は、現在プレビュー版として限定公開されている AWS X-Ray を触る機会があったのでご紹介します。

AWS X-Ray とは

AWS X-Ray はアプリケーション内で発生する一連のリクエスト/レスポンスのデータ(HTTPリクエストやAPIコール等)を収集し、可視化・分析するためのサービスです。
ZipkinStackdriver 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 を利用する場合と比べると少し手間が掛るのかもしれません。

3. AWS CLI を利用する方法

AWS CLI の put-trace-segmentsput-telemetry-records を使ってトレースデータを送信します。

まとめ

AWS X-Ray についてざっくりとご紹介させていただきましたが、Cloud Automator ではより良いサービスをお客様へご提供するために、今回のように様々なサービスを日々検証しております。
次回は実践編として、実際に AWS SDK を使ってトレースデータを AWS X-Ray に送信する方法をご紹介します。

Cloud Automator(クラウドオートメーター) とは、バックアップや災害対策、AWS費用の削といった「ジョブ」と、AWSがガイドライン通りに運用されていることを継続的に確認する「構成レビュー」という2つのAWS運用を自動化し、AWSの利用メリットを最大限に引き出すサービスです。

Cloud Automator