LoginSignup
4
2

More than 5 years have passed since last update.

API GatewayがX-Rayをサポートしたのでやってみる

Last updated at Posted at 2018-09-09

はじめに

API GatewayでX-Rayによるパフォーマンスモニタリングが可能になりました。

これまでもLambdaの性能解析は可能でしたが、これによりAPI Gateway-Lambdaで構成されるような
典型的なサーバーレスアプリケーションが End to End でモニタリングできるようになりるました。

やってみる

エンドポイントタイプは、地域、エッジ最適化、プライベート全てに対応しています。
また2つのTraceモードが用意されています。

  • Passive

Traceが有効になっていない場合のデフォルトの設定。
既にTraceされているサービスからAPIが呼び出された場合は記録する。

  • Active

設定したサンプリングルールに基づき、APIの呼び出しを自動的にサンプリングする。

トレースの有効化

ステージエディターの ログ/トレース タブで X-Ray トレースの有効化 に
チェックを入れるだけです。
変更の保存で有効化されます。ステージの再デプロイは不要でした。

image.png

CLIで既存のAPIのトレースを有効化する場合は以下のような感じです。

$ aws apigateway update-stage --rest-api-id {rest-api-id} --stage-name {stage-name} \
--patch-operations op=replace,path=/tracingEnabled,value=true

必要に応じてサンプリングルールの設定を行います。

image.png

ここでは新たにルールを作成しませんので、
デフォルトで用意されているサンプリングルールが適用されます。
デフォルトのサンプリングアルゴリズムは
1秒あたり1リクエストを記録し(リザーバーサイズ)、リザーバーサイズを超えた分は
リクエスト全体の5パーセントがその制限を超えてサンプリングされます。(固定レート)

トレースの確認

DynamoDBに対してGetItemを行うシンプルなAPIを用意しました。
Lambda経由でGetItemを行うリソースとAWSサービスプロキシでAPI Gatewayから
直接DynamoDBにGetItemを行うリソースを追加しています。
(Lambda関数ではxray-sdk利用し、DynamoDBの処理時間を取得しています。)

Service Mapを確認すると、API Gatewayから始まる全体的なトレースが記録されています。
API Gatewayのトレースを確認すると、レスポンスステータスの割合が確認できます。

image.png

更にトレースの表示で個別のトレースを確認していきます。
レスポンスが403であるリクエストが確認できます。

image.png

個別のトレースでエラー原因が確認できます。
リソースポリシーで許可しているIPアドレスの範囲外からアクセスしたためです。

image.png

サービスプロキシによるDynamoDBアクセス。

image.png

API Gateway-Lambda-DynamoDBのトレースビュー

image.png

API~バックエンドサービスの全体のパフォーマンスやエラーを
より簡単に分析できるようになりましたね。

以上です。
参考になれば幸いです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2