Amazon Web Services ブログ

AWS X-Ray が、Amazon API Gateway と新しいサンプリングルール API のサポートを開始

 

同僚である Jeff は、約 2 年前、AWS re:Invent についての投稿で、初めて AWS X-Ray について紹介してくれました。AWS X-Ray は、本稼働と開発の両方の局面で、シンプルなウェブアプリから大規模で複雑な分散型マイクロサービスまで、開発者があらゆるものを分析してデバッグするのに役立ちます。X-Ray が 2017 年に一般利用可能になって以来、顧客からのフィードバックに速やかに対応し、AWS Key Management Service (KMS) による暗号化、新しい SDK や言語 (Python!) のサポート、オープンソーシングのデーモン、レイテンシーの可視化ツールなどのサービスに対する強化を継続しました。本日、新たに次の 2 つの新機能を追加します。

    • Amazon API Gateway のサポートにより、API を通じた基礎となるサービスへのリクエストの追跡と分析が容易になります。
    • また、最近 AWS X-Ray コンソールと API でサンプリングルールをコントロールするサポートも開始しました。

それでは、API の追跡を有効にする方法を確認しましょう。

X-Ray 追跡を有効にする

API Gateway にデプロイされたシンプルな API から始めます。2 つのエンドポイントを追加します。1 つはレコードを Amazon Kinesis Data Streams にプッシュするためであり、もう 1 つはシンプルな AWS Lambda 関数を呼び出すためです。次のようになります。

API をデプロイしてから、ステージ サブコンソールへ移動し、「dev」や「production」などのステージを選択します。そこで、[Logs/Tracing] タブへ移動して、[Enable X-Ray Tracing] を選択して [Save Changes] をクリックすることで、X-Ray 追跡を有効にすることができます。

追跡を有効にすると、X-Ray コンソールに移動して、新しい Sampling インターフェイスでサンプリングルールを確認することができます。

コンソール、もちろん CLI、SDK、API でルールを変更することができます。それでは、サンプリングルールについて簡単に説明しましょう。

サンプリングルール
サンプリングルールを使用すると、記録したい要求と追跡を非常にきめ細かいレベルでカスタマイズすることができます。これにより、どこで実行されるコードであっても (AWS Lambda、Amazon ECSAmazon Elastic Compute Cloud (EC2)、あるいはオンプレミスであっても)、コードの書き直しやアプリケーションの再デプロイなしで、実行中に記録するデータの量をコントロールすることができます。上記のデフォルトルールでは、1 秒ごとに最初の要求が記録され、追加の要求の 5% が記録されることが示されています。毎秒ごとに 1 回の要求をリザーバーと呼び、毎秒少なくとも 1 回の追跡が確実に記録されるようにします。追加の要求の 5% は、固定レートと呼ばれています。リザーバーと固定レートの両方が設定可能です。リザーバーのサイズを 50 に設定し、固定レートを 10% に設定した場合、1 秒あたり 100 回の要求がルールに一致すると、サンプリングされる要求の総数は 1 秒あたり 55 回の要求になります。X-Ray レコーダーが X-Ray サービスからサンプリングルールを読み取るように設定することで、X-Ray サービスはすべての分散コンピューティングでサンプリングレートとリザーバーを維持できます。この機能を有効にしたい場合は、インスタンスに X-Ray SDK とデーモンの最新バージョンをインストールするだけです。現時点では、GA SDK のみがサポートされており、Ruby や Go のサポートはまだ途中です。API Gateway や Lambda のようなサービスでは、X-Ray コンソールや API ですべてを設定することができます。この機能に関する詳細はドキュメントにありますので、時間をかけて確認することをお勧めします。

もちろん、サンプリングルールを使用してコストを管理することもできますが、ルールの動的な特性ときめ細かさは、本稼働システムのデバッグでも非常に強力です。特定の URL またはサービスが追加の監視を必要とすることがわかっている場合、それをサンプリングルールの一部として指定することができます。API、サービスタイプ、サービス名、ホスト、ARN、HTTP メソッド、セグメント属性などの個々のステージをフィルタリングできます。これにより、30,000 フィートで分散マイクロサービスを素早く調べたり、問題を特定したり、一部のルールを調整したり、本稼働の要求を深く掘り下げたりすることができます。これを使用して、トラフィックの 99 パーセンタイルで発生している問題についての洞察を深め、より良い全体的な顧客体験を提供することができます。私は何年もの間、さまざまな企業で、このようなものをサポートしようとするアドホックな計装の構築とデプロイを行ってきたことを覚えており、自分では特に成功したとは思っていません。さて、X-Ray をデプロイしてサンプリングルールを一元的に調整できるようになったので、クリスタルボールをデバッグしているように感じます。5 年前にこのツールを持っていたらと本当に思っています。

さて、十分に思い出して、ウォークスルーに戻ってみましょう。

今は、デフォルトのサンプリングルールに固執します。追跡を有効にして要求を実行しているので、約 30 秒後にサービスマップを更新して結果を確認することができます。任意のノードをクリックして追跡を直接表示するか、追跡サブコンソールにドロップしてすべての追跡を表示することができます。

そこから、トリガーされている個々の URL、ソース IP、およびその他の有用なメトリクスを確認できます。

さらに深く掘り下げたいのであれば、検索バーにいくつかのフィルタリングルールを書いて特定の追跡を見つけることができます。API Gateway セグメントには、API ID とステージのようなフィルタリングとグループ化に使用できる便利なアノテーションがいくつかあります。これは、一般的な API Gateway 追跡です。

API Gateway サポートを X-Ray に追加することで、サーバーレス環境でエンドツーエンドの本稼働のトレーサビリティが得られ、サンプリングルールにより、コードを再デプロイせずにリアルタイムで追跡を調整することができます。昨年の AWS Summit London で、Skyscanner の Ashley Sole と AWS X-Ray の使い方について話をする機会があり、これら 2 つの機能は彼が私に質問したものでした。今回のリリースで、Ashley や他の開発者にとって本稼働アプリケーションのデバッグや分析がより容易になることを願っています。

今すぐ利用可能

これら両方の機能のサポートは、現在、API Gateway と X-Ray の両方を使えるすべてのパブリックリージョンで利用できます。実際に、X-Ray は先週新しいコンソールと API を開始しましたので、おそらく既にご覧になっておられるでしょう! 今すぐ使用することができます。いつでも、お気軽に Twitter または下記のコメントでご意見をお聞かせください。

Randall