2017/8/2に開催致しました AWS Black Belt Online Seminar 「AWS X-Ray」の資料を公開いたしました。当日参加者の皆様から頂いたQAの回答と併せてご紹介致します。
Q1. アノテーションとメタデータはソースコードに作り込む部分になりますでしょうか?
アノテーションまたはメタデータとしてセグメントにデータを追加するコードを実装して頂く必要があります。以下のドキュメントはJavaでアノテーションやメタデータをセグメントに追加する手順を説明したものとなります。
http://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-java-segment.html
Q2. Pythonや Go言語で記述した Lambda Functionでは X-Ray SDKを通して提供されている機能を使用することは出来ず、AWS SDKを通して提供されている機能のみを使用できるということでしょうか。
Go言語については、AWS X-Ray SDK for Go (Beta) が提供開始されました。
https://aws.amazon.com/jp/about-aws/whats-new/2017/08/aws-x-ray-sdk-for-go-beta/
Pythonについては、AWS X-Ray SDK for Python (Beta) の提供が開始されたので、こちらをお試し頂ければと思います。
https://aws.amazon.com/jp/about-aws/whats-new/2017/08/aws-x-ray-sdk-for-python-beta/
Q3. X-Rayの対象はAWSサービスのみでしょうか?オンプレのサービスは対象にならないものでしょうか?
AWS X-RayデーモンがサポートするプラットフォームでありAWS X-Ray API に疎通可能な環境であれば、セグメントを送信しトレースを生成することが可能となります。
Q4. X-RayにCloudWatchアラート設定はできるのでしょうか?ERRORが発生したら、CloudWatchアラートを発生させるなど。
現在、AWS X-Rayのトレースデータに対する条件からAmazon CloudWatchアラームを起動することはできません。トレースデータは、マネジメントコンソールから閲覧する以外にAWS CLI やAWS SDKなどを使用して取得することが可能です。そのため、例えば定期的に取得したトレースデータに条件を設定し、場合によってなんらかのアクションを発生させるような独自のアプリケーションを作成していただくことは可能となります。
Q5. X-Ray SDKを使ってアプリケーションにコードを埋め込むという理解ですが、レイテンシが気になります。X-Ray導入前後でアプリケーションのレイテンシに影響がありますか?
AWS X-Ray SDKおよびAWS X-Rayデーモンはアプリケーションのパフォーマンスへの影響に配慮して実装されていますが、影響は0ではありません。導入される際は、パフォーマンスへの影響を事前に確認しサンプリングレートやサンプリング対象範囲の調整をしていただければと思います。
Q6. Lambda Pythonでも収集できますか?
AWS LambdaのPythonでX-ray統合を利用することが可能です。
http://docs.aws.amazon.com/xray/latest/devguide/xray-usage.html#xray-usage-languages
Q7. AWS Lambdaとの統合では、実装言語によらずトレーシングまで有効になるのでしょうか?
AWS Lambdaのマネジメントコンソールにおいて「Enable active tracing」をチェックして頂くことで各言語においてトレーシングは有効となります。
Q8. トレースは、アプリケーション側に設定するだけでしょうか。データベース側に何か組み込む必要はないという認識で合っていますでしょうか。
データベースへの通信をトレースする際にデータベース側に何か設定をして頂く必要はありません。アプリケーション側でコネクションにインターセプトを設定するなどの実装していただく必要があります。
Q9 トレースしたデータのエクスポート/インポートは可能でしょうか
BatchGetTraces APIを使用してトレースデータの取り出しが可能です。また、PutTraceSegments APIを使用してトレースデータのアップロードが可能です。
ただし、BatchGetTraces APIのレスポンスをそのままPutTraceSegments API に使用することはできません。データを加工する必要があります。APIの詳細な仕様に関しては下記ドキュメントをご参照ください。
http://docs.aws.amazon.com/xray/latest/api/Welcome.html
Q10. SQSを跨いだプロセス間の依存関係はビジュアル化できたりするものでしょうか?
AWS X-Rayでは、Amazon SQS キューを使用した非同期イベントをトレースすることが可能です。
Q11.30日経過したデータを参照したい場合、どうすればよいのでしょうか
現在は、データの保管は30日までとなっております。
Q12.東京リージョンでも使えるのでしょうか?
既に東京リージョンで一般提供を開始しております。
Q13.ECSの場合は、エージェントはインスタンスに組み込むのでしょうか、コンテナに組み込むのでしょうか
AWS X-Rayデーモンは、UDPの2000番ポート(変更可能)をリッスンし、アプリケーションから送信されるセグメントデータを待ち受けます。アプリケーションがAWS X-Rayデーモンと疎通可能であれば問題ありません。
以下のドキュメントではAWS X-Rayデーモンを実行するDockerイメージを作成する方法について説明されています。
http://docs.aws.amazon.com/xray/latest/devguide/xray-daemon-ecs.html
Q14.Pythonのサポートはいかがでしょうか?
Pythonについては、AWS X-Ray SDK for Python (Beta) が提供開始されました。
https://aws.amazon.com/jp/about-aws/whats-new/2017/08/aws-x-ray-sdk-for-python-beta/