Amazon Web Services ブログ
Amazon CloudWatch と AWS X-Ray を使用して MTTR を低減する
サーバーレス環境でマイクロサービスベースのワークロードを実行しているお客様は、必要なデータが数百または数千のコンポーネントに分散されている場合があるため、インシデントのトラブルシューティングに問題を抱えることがよくあります。このブログ投稿では、Amazon CloudWatch ServiceLens (※訳注)と AWS X-Ray を使用してサーバーレスワークロードの平均解決時間 (MTTR、障害からの復旧や障害の影響の軽減にかかる平均時間) を短縮する方法について説明します。モニタリング戦略の成功にはオブザーバビリティの 3 つの柱 (メトリクス、ログ、トレース) のすべてが必要です。それが成功すれば、1 つのビューからそれらの 3 つの柱を元に洞察を得ることができます。
※訳注:CloudWatch ServiceLens マップと X-Ray サービスマップは 2023年11月に CloudWatch コンソール内で X-Ray トレースマップに統合されました。
依存関係の理解
CloudWatch ServiceLens は、分散環境を可視化してサービス間の依存関係を理解するのに役立ちます。メトリクス、ログ、トレースがひとつのサービスマップ (※訳注:現 トレースマップ) にまとめられるため、コンポーネント間の統合に焦点を当てること、および問題が発生した際にそれを正確に特定することができます。リソースやインストルメント (計装) されたアプリケーションは有向グラフ上にノードとして表示され、ノード間のエッジはそれらの間で発生するトランザクションを表します。問題が発生しているノードにはエラーの種類に応じて色付きのアウトラインが表示されます。これは、アーキテクチャ内で障害の発生しているポイントや現在アラーム状態にあるポイントを強調表示するのに役立ちます。
デフォルトでは、各ノードのサイズやノード間のエッジは受信しているリクエストの数を表します。これを変更するには歯車アイコンを選択して [設定 (Preferences)] ダイアログボックスを開き、サイズ設定の基準となる代替メトリクス ([レイテンシー (Latency)] など) を選択します。ノードを選択するとパネルが開き、時間の経過に伴うレイテンシー、リクエスト、障害を示す追加メトリクスや、ログ、トレース、およびより詳細なダッシュボードへのリンクが表示されます。
このパネルには、そのリソースに関連するアラートも表示されます。以下の画像では、DynamoDB テーブルに対する 2 つのアラートが現在アラーム状態にあることがわかります。
サービスマップ (※訳注:現 トレースマップ) に戻って、障害が発生しているノードの 1 つに注目し、[接続を表示 (View connections)] を選択してその特定のリソースに対するすべての受信リクエストおよび送信リクエストに焦点を当ててみましょう。あるいは、X-Ray グループを使用してサービスグラフ内のノードのサブセットに焦点を当てることもできます。さらに詳しく知りたい場合は、グループとそのユースケースに関する過去のブログ記事をご覧ください。
上の画像から、バックエンドの PetSearch マイクロサービスにリクエストを送っているノードは 3 つあり、そのうちの 2 つでのみ問題が発生していることがわかります。これらのエッジのうち 1 つを選択すると、そのパスに沿ったトラフィックについて要約した [応答時間分布グラフ (Response time distribution graph)] を含むパネルが表示されます。レイテンシーについてのトラブルシューティングを行う場合には、応答時間が遅いことを示すグラフの一部を強調表示して、[フィルタリングされたトレースを表示 (View filtered traces)] ボタンを押し、選択された時間枠内のトレースのリストを取得できます。この場合、フロントエンドの PetSite サービスからの 24% のエラー率の方が気になるので、[24% Faults (5xx)] の横にあるチェックボックスを選択して [フィルタリングされたトレースを表示 (View filtered traces)] を押します。
これにより新しいページが表示されます。必要に応じてクエリをさらに絞り込むことができます。テーブルから最初のトレースを選択すると、[トレースの詳細 (Trace details)] ページが表示されます。
[セグメントのタイムライン (Segment Timeline)] を使用すると、分散システム全体で何が起こったのかや、各レスポンスのステータスやリクエストへの応答にかかった時間を明確に把握できます。タイムラインからセグメントを選択すると、詳細情報を含むパネルが表示されます。[例外 (Exceptions)] タブでは、障害の根本原因が認可エラーにつながる権限の問題であることを確認できます。このページには、そのトレースに関連するすべてのサービスのログメッセージの相関リストも表示されるため、複数の異なるロググループのログを 1 か所で確認することができます。
AWS X-Ray との統合
ServiceLens は、X-Ray からのトレースを使用してサービスマップ (※訳注:現 トレースマップ) を構築し、サービス間の依存関係を把握します。キャプチャしたいインタラクションによってはワークロードのインストルメント化が必要になる場合もありますが、多くの AWS サービスは (インストルメント化不要で) すぐに使用可能な X-Ray 統合をサポートしており、オプトインするだけで使用できます。X-Ray 統合に関する全リストについては AWS X-Ray と他の AWS サービスとの統合をご覧ください。
AWS Lambda 関数で X-Ray を有効にするには
- AWS Lambda コンソールを開きます
- リストから関数を選択します
- [設定 (Configuration)] タブを選択し、[モニタリングおよび運用ツール (Monitoring and operations tools)] を選択します
- [その他の監視ツール (Additional monitoring tools)] の [編集 (Edit)] を選択し、[AWS X-Ray] の [アクティブトレース (Active tracing)] を切り替えます
Lambda 関数のアクティブトレースを有効にするページでは、[拡張モニタリング (Enhanced monitoring)] という見出しで CloudWatch Lambda Insights を有効にするオプションも表示されます。この機能はシステムレベルのメトリクスを収集、集計および要約するために使用されます。詳細については、AWS Lambda エラーをモニタリングする方法について詳しく説明した過去のブログ記事をご覧ください。
まとめ
この記事では、CloudWatch ServiceLens と AWS X-Ray を使用して分散ワークロードをモニタリングおよび観察する方法について、サービス間の統合に焦点を当てて説明しました。問題についてのアラートを受け取った際には、ServiceLens は関連するトレースの掘り下げに役立ちます。それにより、障害についての診断を行い、通常の業務に戻るための計画に取り掛かることができるようになります。
モニタリングとオブザーバビリティについて、もっと知りたいですか?AWS オブザーバビリティベストプラクティスと AWS ネイティブツールを使用して AWS Lambda ワークロードをモニタリングするためのガイドをご覧ください。AWS ネイティブツールもしくはマネージドオープンソースツールを使用したガイド付きハンズオン体験については、One Observability Workshop をご覧ください。
著者について
翻訳はテクニカルアカウントマネージャーの堀沢が担当しました。原文は こちらです。