AWS CloudWatch は、Amazon Cloud エコシステムのネイティブ サービスであり、Amazon Cloud 内の他のすべてのサービスをログに記録し、監視します。メトリクスまたはログ ファイルを収集および追跡し、そこから抽出されたさまざまなアクティビティに対してアラームを設定します。
アプリケーションのパフォーマンス、リソースの使用率、サービスの運用状態をシステム全体で可視化できます。また、 AWS CloudWatch を使用して、環境内の異常な動作を検出し、自動化されたアクションを実行し、問題のトラブルシューティングを行い、ログから洞察を見つけて、システムや運用をより良い方向に変更するアクションを実行することもできます。
ログを監視すると、セキュリティの脅威を検出し、潜在的な脆弱性を特定するのに役立ちます。不審なアクティビティや異常な動作を監視することで、不審なアクティビティに対応し、将来の攻撃を防ぐための措置を講じることができます。
また、ログの維持とシステムの監視は、多くの場合、コンプライアンス目的で必須の活動です。 AWS CloudWatch を使用すると、これらの要件を満たすことになります。
これらはすべて、AWS CloudWatch の利用から得られる直接的なメリットです。それでは、これらすべてを始める方法を確認してみましょう。
サービス用に AWS CloudWatch をセットアップする
セットアップはシンプルでわかりやすいものにすることも、ロギングおよびモニタリング システムのすべての側面やプロパティを微調整するのに数週間を費やしてもまだ完全に完了しないこともあります (基本的に、これを生活改善プロセスと呼びます)。
しかし、簡単に言うと、次のように始めることができます。
- すでに AWS アカウントをお持ちであると仮定して、CloudWatch コンソールに移動し、「開始する」ボタンをクリックして CloudWatch を有効にします。
- ログ グループを作成して、サービスのログの収集を開始します。ログ グループは、同じ保持、監視、およびアクセス制御設定を共有するログ ストリームのコレクションです。 CloudWatch コンソールで [ログ グループの作成] ボタンをクリックすると、ログ グループを作成できます。
- ログ ストリームを作成して、ログ イベントを同じソース (サービス) に絞り込みます。 CloudWatch コンソールで [ログ ストリームの作成] ボタンをクリックすると、ログ ストリームを作成できます。
- EC2 インスタンスからログを収集する場合は、CloudWatch エージェントをインストールします。エージェントは、インスタンス上で実行され、ログ データを CloudWatch に送信するソフトウェアです。エージェントは、AWS Systems Manager を使用するか、インスタンス上でスクリプトを実行することによってインストールできます。
- 定義された一致パターンに基づいてログからメトリクスを抽出するメトリクス フィルタを作成します。 CloudWatch コンソールで [メトリック フィルターの作成] ボタンをクリックすると、メトリック フィルターを作成できます。
- 最後に、抽出されたすべてのデータを 1 か所に収集して視覚化し、ダッシュボードを作成します。ダッシュボードは、そこに配置したメトリクスやその他のデータを表示するウィジェットのコレクションです。 CloudWatch コンソールの [ダッシュボードの作成] ボタンをクリックすると、ダッシュボードを作成できます。
AWS CloudWatch によるモニタリング
すでに述べたように、AWS Cloudwatch を使用して Amazon Cloud 内のあらゆるサービスを監視できます。このような監視がどのように行われるかをより詳しく説明するために、システムで使用する可能性が最も高い最も一般的な AWS サービスに対して監視を行う方法を次に示します。
EC2インスタンス
CPU 使用率、ネットワーク トラフィック、ディスク使用量、メモリ使用量などのメトリクスを収集することで、EC2 インスタンスを監視できます。 EC2 インスタンスのステータスを監視し、インスタンスが停止または終了したときに通知を受け取ることもできます。
EC2 インスタンスを監視するには、インスタンスに CloudWatch エージェントをインストールし、メトリクスを CloudWatch に送信するように設定します。次のステップとして、メトリクスが特定のしきい値を超えたときに警告するアラームを作成できます。
RDS データベース
データベースの CPU 使用率、メモリ使用量、ディスク使用量などのメトリクスを収集することで、Amazon RDS データベースを監視できます。データベースのステータスを監視し、データベースが停止、一時停止、または終了したときに通知を受け取ることもできます。
RDS データベースを監視するには、拡張モニタリングを有効にし、メトリクスを CloudWatch に送信するように設定します。ここでも、メトリクスがオフになったときに警告するアラームを作成できます。
ラムダ関数
Lambda の呼び出し数、期間、エラー率などのメトリクスを収集することで、AWS Lambda 関数を監視できます。関数のステータスを監視し、関数が失敗した場合に通知を受け取ることもできます。
Lambda 関数をモニタリングするには、CloudWatch Logs を有効にし、ログを CloudWatch に送信するように関数を設定する必要があります。その後、メトリック フィルターを作成してログからメトリックを抽出し、ログから抽出された情報に基づいてアクションを実行できます。
Elastic Load Balancer
Elastic Load Balancer の監視は、リクエスト数、レイテンシー、HTTP 応答コードなどのメトリクスを収集することによって行われます。ロード バランサーのステータスを監視し、ロード バランサーに障害が発生した場合に通知を受け取ることもできます。
ロードバランサーを監視するには、アクセスログを有効にし、ログを CloudWatch に送信するようにロードバランサーを設定する必要があります。次に、メトリック フィルターを作成してログからメトリックを抽出し、メトリックが定義した正常な状態から外れている場合にアラームを作成できます。
Auto Scaling グループ
グループのサイズ、CPU 使用率、ネットワーク トラフィックを収集することで、Auto Scaling グループを監視できます。グループのステータスを監視し、グループがスケールアップまたはスケールダウンしたときに通知を受け取ることもできます。
Auto Scaling グループを監視するには、詳細な監視を有効にし、メトリクスを CloudWatch に送信するように設定する必要があります。その後、メトリクスが特定のしきい値を超えたときに警告するアラームを作成できます。
Elastic Beanstalk アプリケーション
CPU 使用率やリクエスト数などのメトリクスを収集することで、AWS Elastic Beanstalk アプリケーションを監視できます。アプリケーションのステータスを監視し、アプリケーションが失敗したときに通知を受け取ることもできます。
Elastic Beanstalk アプリケーションを監視するには、拡張ヘルスレポートを有効にし、メトリクスを CloudWatch に送信するように設定する必要があります。その後、メトリクスが事前定義されたしきい値を超えたときに警告するアラームを作成できます。
CloudWatch アラームの管理
主要なメトリクスと各サービスに対して利用可能な CloudWatch アラームがあります。これらはベスト プラクティスに従って事前に構成でき、問題が発生した場合はその助けを借りてトラブルシューティングを行うことができます。
アラームを効果的に管理することで、重大な問題について警告を受け取ることができ、AWS リソースとアプリケーションの健全性とパフォーマンスを維持するために適切なアクションを実行できます。
#1. メトリクスのアラームの設定
アラームを設定するには、まず監視するメトリックを選択します。次に、しきい値と比較演算子を指定して、そのメトリックに基づいてアラームを作成します。
たとえば、CPU 使用率が 5 分間以上 80% を超えたときにトリガーされるアラームを作成できます。アラームを作成したら、アラームがトリガーされたときに実行するアクションを設定します。たとえば、特定の受信者リストに電子メールを送信したり、SMS 通知を送信したり、システム リソースをスケールアップしたりすることもできます。
#2. アラームアクションの設定
アラームアクションを設定するときは、SNS トピックへの通知の送信、AWS Lambda 関数のトリガー (Python スクリプト内で関数で実行したいことをすべて実行できます)、停止など、さまざまなオプションから選択できます。または EC2 インスタンスを終了します。
また、アラームごとに複数のアクションを設定し、アラームの重大度に応じて異なるアクションを実行することもできます。たとえば、軽度のアラームの場合は電子メール通知を送信しますが、重大なアラームの場合はインスタンスを終了します。
#3. アラームのベストプラクティス
アラームが効果的で信頼できるものになるように、ベスト プラクティスに従うことは常に良いことです。いくつかのベスト プラクティスは次のとおりです。
- 過去のデータに基づいて適切なしきい値を設定し、
- 複数のメトリクスを並行して使用して問題を検出する
- アラームを定期的にテストして、アラームが正しく動作していることを確認します。
アラームの作成が多すぎると、アラート疲労が発生し、監視システムが乱雑になり、本当に重大な問題を実際に特定することが困難になる可能性があるため、アラームを作成しすぎないようにしてください。
CloudWatch アラームで問題が発生した場合は、いくつかのトラブルシューティング手順を実行できます。
- アラーム履歴をチェックして、アラームがトリガーされたときにアクションが実行されたかどうかを確認します。
- メトリック データをチェックして、アラームをトリガーした可能性のある異常やスパイクがないかどうかを確認します。
- 問題が解決しない場合は、アラームのしきい値を調整するか、アラームにメトリクスを追加して精度を向上させることができます。
CloudWatch ダッシュボードを使用したメトリクスの分析と視覚化
ダッシュボードを介してメトリクスを分析および視覚化すると、AWS リソースとアプリケーションの健全性とパフォーマンスについての読みやすい洞察が得られます。 CloudWatch ダッシュボードは、メトリクスのカスタマイズ可能なビューを提供します。
そこにさまざまなチャート、グラフ、その他の視覚エフェクトを配置して、時間の経過に伴う傾向を示し、システムに発生する可能性のある問題を強調表示できます。最終的な目標は、ログ ファイル データから抽出し、システム状態を確認および監視したい人にとって重要な情報を、より読みやすく使いやすい形式で提供できるようにすることです。
CloudWatch ダッシュボードを作成するには、CloudWatch コンソールまたは CloudWatch API を使用できます。次に、ダッシュボードに表示したいメトリクスを表示するウィジェットをダッシュボードに追加するだけです。テキストや画像を追加して、コンテキストや追加情報を提供することもできます。
ダッシュボードを作成したら、特定のニーズに合わせてカスタマイズできます。ウィジェットのサイズ変更や再配置、表示されるデータの時間範囲の変更、注釈を追加して重要なイベントや変更を強調表示することができます。ダッシュボードを他のユーザーと共有して、同じメトリクスや視覚エフェクトを表示できるようにすることもできます。
最後に、さまざまな AWS アカウントや環境に同じダッシュボードを簡単にデプロイできます。
ログの収集と分析
ログの分析とは通常、CloudWatch の Logs Insights 機能を使用することを意味します。
CloudWatch Logs でログ データを収集したら、Logs Insights の使用を開始できます。 CloudWatch Logs Insights を使用すると、シンプルかつ強力なクエリ言語を使用してログ データをクエリおよび視覚化できます。これは SQL 選択言語に非常に似ていますが、まったく同じではありません。ただし、結果は非常に似ています。
Insights を使用すると、特定のログ イベントを検索したり、特定の基準に基づいてログ データをフィルタリングしたり、グラフや表などの視覚化を作成したりできます。これにより、アプリケーションとインフラストラクチャの動作に関する貴重な洞察がさらに得られ、問題のトラブルシューティング、パフォーマンスの最適化、セキュリティの向上に使用できます。
関連記事: AWS Logs Insights を利用して AWS サービス ログからダッシュボードのメトリクスをクエリする方法
CloudWatch Events を使用したタスクの自動化
CloudWatch に十分なログ データ情報がある場合は、それを使用して、AWS リソースやアプリケーションで発生するイベントに基づいてアクションをトリガーできます。 CloudWatch Events は、インスタンスの使用率が通常の使用ゾーンを超えるたびに EC2 インスタンスを開始または停止するなど、タスクをスケジュールおよび自動化する方法を提供します (例: 夜間にインスタンスを停止し、営業日中に再度開始する)。
CloudWatch Events でタスクを自動化するには、一致するイベント パターンとイベント発生時に実行するアクションを指定するルールを作成します。これは、CloudWatch コンソールまたは CloudWatch Events API を使用して行うことができます。次に、AWS Lambda 関数、SNS トピック、EC2 インスタンスなど、ルールの 1 つ以上のターゲットを設定します。
CloudWatch Events は、AWS サービス、カスタム アプリケーション、サードパーティ サービスなどの幅広いイベント ソースをサポートします。したがって、リソースのスケーリング、バックアップのトリガー、またはセキュリティ インシデントへの対応が必要なときは、いつでも CloudWatch Events を使用してタスクを自動化できます。
タスクを自動化すると、システムへの手動介入が減り、AWS リソースとアプリケーションが常に最適なレベルで実行されるようになります。
高度な CloudWatch 機能
AWS リソースについてより深い洞察を得るために設定できる高度な CloudWatch 機能がいくつかあります。そのうちの 1 つは、すでに述べたログの洞察です。その他の重要な高度な機能の一部を以下に示します。
- CloudWatch Contributor Insights は、リソース使用率の上位の貢献者 (EC2 インスタンスや Lambda 関数など) を特定できます。 Contributor Insights を使用すると、最もリソースを大量に消費する操作を特定し、それに応じてリソースを最適化できます。
- CloudWatch Anomaly Detection は、機械学習アルゴリズムを使用して、メトリクス内の異常な動作を自動的に検出します。異常検出を使用して、メトリクスの異常なスパイクや低下を特定し、それらに対処するための措置を講じます。
- CloudWatch Synthetics は、ユーザーの動作をシミュレートするカナリアを作成し、アプリケーションの可用性とパフォーマンスをテストできます。 Synthetics を使用して、ビジネス ユーザーが行う前に問題を積極的に調査および検出します。
- CloudWatch Logs Insights Query Acceleration は、ログクエリを最大 10 倍高速化します。 Query Acceleration を使用すると、大量のログ データを迅速かつ効率的に分析できます。
CloudWatch と AWS サービスの統合
AWS システムを構築するときは、Clodwatch の統合が常にリストの最優先事項になります。この緊密な統合によってのみ、すべてのサービスまたはシステム コンポーネントにわたるメトリクスとログを収集および監視できます。セットアップと使用も簡単で、統合はほとんどの AWS サービスにネイティブです。したがって、AWS クラウド システムでこの特典を利用しない言い訳はほとんどありません。
AWS のリソースとアプリケーションを包括的に把握し、それらの健全性、パフォーマンス、可用性を監視できるようになります。すべての情報が収集されたら、既存のデータを使用してアラームを設定し、AWS 環境で発生するイベントに基づいてタスクを自動化するだけです。
最後の言葉
AWS CloudWatch は、プロジェクトのロギング、モニタリング、システム ステータスの可視化のニーズをすべてカバーできる包括的なクラウド サービスです。
このようなコンポーネントをアーキテクチャに含めることは、まさにシステムをプロアクティブに管理し、信頼性を確保する方法となります。後のフェーズで優先順位を付けるのではなく、スプリント 1 から堅牢な監視システムの構築を開始することをお勧めします。それは後でわかるでしょう。
次に、最高の AWS 監視ツールをチェックしてください。