AWS TRAINING COURSE
---LESSON 14---

さまざまなAWSサービスの
品質を支える運用監視の要
Amazon CloudWatch

この連載ではこれまでに、コンピューティングやデータベース、ストレージ、ネットワークなど各種システム開発に役立つさまざまなAWSのサービスを紹介してきました。読者の皆さまはこれらを活用して、AWSでシステムを提供する準備がそろそろ整ってきたところかと思いますが、忘れてはいけないのは運用監視です。今回は安定したシステム運用を実現する「Amazon CloudWatch」を紹介します。

何をどのレベルで提供するのか
運用監視を行う目的とは

講師:
アマゾン ウェブ サービス ジャパン
パートナーアライアンス統括本部
ISV パートナー本部
櫻谷広人氏

 今回の記事を担当するAWSジャパンの櫻谷です。今回のテーマは運用監視ですが、まずは運用監視を行う目的を確認しましょう。システムはユーザーに対して何らかの価値を提供します。例えばEC サイトであれば「商品を購入できる」、メールアプリケーションであれば「メールが送受信できる」といった具合です。

 サービス提供者にはこれらの価値をユーザーと合意したレベルで常に提供し続ける責務があります。メールを送ることができなければ、そのシステムに価値はありませんし、ユーザーも使わなくなるでしょう。

 また「ユーザーと合意したレベルで」という観点も重要です。これはサービスレベルアグリーメント(SLA)と呼ばれる概念で、システムの品質に関する考え方です。メールアプリケーションの場合、重要なメールが相手に届くまでに2日も3日もかかるようでは意味がありません。

 何を品質とするかはシステムの特性によってさまざまですが、ユーザーが期待する合理的なレベルを維持する必要があります。まずは自分たちのシステムで「何をどのくらいのレベルで提供することを目指すか」について考えてみてください。

まずはモニタリングで状況を把握
障害復旧までを統一的に支援

 システムが正常に動き続ける保証はどこにもありません。サーバーの停止、ネットワークの不調、ディスクの容量不足、アプリケーションのバグなど、障害となり得る要因は至るところに存在し、それらがいつ生じるのか予測することは容易ではありません。だからこそ、常に変化するシステムの状況を把握し、適切な対策を講じる準備が必要なのです。

 まずは現在の状況を把握できるようにしましょう。状況が分からなければ障害が起きたことにも気付けませんし、適切な復旧のアクションを取ることもできません。このシステムの状況を把握するための取り組みをモニタリング(監視)といいます。

「Amazon CloudWatch」はモニタリングをはじめ、システム運用を手助けする豊富な機能を提供するAWSサービスです。データの収集から可視化、異常検知、アラート、問題のトラブルシューティング、修復アクションの実行までをサポートする統一的な運用プラットフォームとして利用できます。

 多くの他のAWSサービスとネイティブに統合されているため、簡単な設定ですぐに使い始めることができます。それではAmazon CloudWatchの主な機能を紹介しましょう。

●CloudWatch Logs
 アプリケーションのログや他のAWSサービスからのログを集約し、それを保存、表示、検索できる機能です。何か問題が起きた際にはこれらのログを調査し、原因の特定に役立てることができます。保存したログをインタラクティブにクエリできる「CloudWatch Logs Insights」という機能も提供されており、障害の際はリアルタイムにログが検索でき、素早く原因を特定して迅速な復旧を可能にします。

●CloudWatch Metrics
 メトリクスはシステムのパフォーマンスや健全性を測るために重要なデータです。多くの AWSサービスはデフォルトで各種メトリクスを発行しています。例えばAmazon EC2インスタンスではCPU使用率やディスクの使用状況を、Application Load Balancerでは受信したリクエスト数やエラーのステータスコードを返したレスポンスの数などです。

「CloudWatch Metrics」を利用することで、アプリケーションから任意のカスタムメトリクスを発行することができます。これらのデータポイントはCloudWatch Metrics に蓄積され、グラフによって特定の期間の状態の変化を把握することができるため、モニタリングやトラブルシューティングに役立ちます。

●CloudWatch Alarms
 メトリクスからシステムの異常な振る舞いを見つけるために、24時間365日ずっと人の目でグラフを監視し続けるのは現実的ではありません。そこで「CloudWatch Alarms」で自動化することができます。

 CloudWatch AlarmsはCloudWatch Metricsと組み合わせて使用する機能で、メトリクスが一定の閾値を超えた場合に任意のアクションを実行させることができます。

「Amazon Simple Notification Service」(SNS)との連携を設定すれば、異常検知からメールまたはSMSによる通知、AWS Lambda関数を実行して修復アクションの実行まで全て自動化することができます。

 根本的な原因の特定や再発防止は後からログやメトリクスを頼りにじっくりと行い、迅速さが求められる一時対応はこのような自動化の仕組みを取り入れることで運用の負担を大幅に軽減できます。

●CloudWatch Events
 毎日定時でのバッチ処理の実行や、特定のイベントに依存したビジネスロジックの実行などは 「CloudWatch Events」 という機能を活用することができます。また同様の API をベースにしたより機能が豊富な「Amazon EventBridge」 というサービスも提供されているのでそちらもご覧ください。何も設定を行わずともデフォルトでAWS のサービスからのイベントは発行されているので、任意のアクションを設定するだけですぐにイベントドリブンなワークフローを構成することができます。

 この他にもWebサイトやAPIエンドポイントの合成監視の機能を提供する「CloudWatch Synthetics」、フィーチャーフラグの管理やA/Bテストの実施をサポートする「CloudWatch Evidently」など、運用監視の負担を軽減する機能が豊富に提供されています。