AWS監視徹底ガイド!CloudWatchで始める効率的なシステム監視
システムの安定稼働を実現するためには、効率的な監視が欠かせません。AWSの監視サービスであるCloudWatchは、クラウド環境におけるシステムの状態をリアルタイムで把握し、異常検知やリソースの最適化をサポートするサービスです。
本記事では、CloudWatchの解説やAWSシステムの監視において重要なポイントを解説します。AWS監視の全体像を把握したいという方はぜひ参考にしてください。
AWS監視とは
AWS監視とは、AWS上で構築されているリソースやアプリケーションの状態やパフォーマンスを監視するプロセスです。AWSが提供するAmazon CloudWatchを利用するケースが多いですが、他のシステムを用いて監視する場合もあります。
CloudWatchを利用する場合と、オンプレミス型、サードパーティ製の監視サービスを利用する場合の違いを解説します。
オンプレミス型監視とCloudWatch監視の違い
項目 | オンプレミス型監視 | CloudWatch監視 |
環境 | 自社で構築したサーバなど | AWSクラウド |
導入 | 監視ツールを自前でインストール・設定 | AWSアカウントにサインアップするだけで利用可能 |
スケーラビリティ | システム規模に合わせてリソースを追加する必要がある | AWSのスケーラビリティを活用し、自動的にスケーリング |
コスト | 初期費用、運用費用がかかる | 使用量に応じて料金が発生 |
統合性 | AWSサービスとの連携が限定的 | AWSサービスとの連携が密接 |
セットアップ: AWSアカウントにサインアップするだけで簡単に利用開始できます。
コスト効率: 使用量に応じて料金が発生するため、コストを抑えることができます。
AWSサービスとの連携: AWSの様々なサービスと連携し、統合的な監視を実現できます。
他のクラウド監視サービスとCloudWatchの違い
CloudWatchは、AWSが提供するマネージドサービスであり、EC2、Lambda、RDSなど、ほぼすべてのAWSサービスのメトリクスを標準で収集できる点が強みです。
単にリソースのデータを取得するだけでなく、カスタムメトリクス、アラーム、ログ監視、インサイトなど、監視に必要な機能が豊富に揃っています。無料利用枠が用意されており、コストを抑えて利用可能な点も、CloudWatchを利用するメリットの一つです。
一方で、ZabbixやMackerelなどのクラウド監視サービスを利用すると、AWSに限らず、さまざまなプラットフォームやアプリケーションを監視できます。独自の監視項目やダッシュボードを作成し、柔軟にカスタマイズできる点がメリットです。
- マルチクラウド環境
- 高度な分析
- 特定の分野に特化した機能
などの用途で、サードパーティ製の監視サービスを利用すると良いでしょう。
AWS環境で監視するべき項目
ここからは、AWS上でアプリやシステムを構築する際、監視を推奨されている項目を紹介します。
システム全体のパフォーマンス
AWS環境での運用において、各リソースのパフォーマンスを適切に監視することは非常に重要です。リソースのパフォーマンスを監視することで、システムの健全性を保ち、潜在的な問題を早期に発見し、ユーザー体験の向上に繋げることができます。
具体的には、以下の項目がパフォーマンス監視でチェックするべき項目です。
- CPU使用率の監視
- ディスク使用量の監視
- アプリケーション性能監視
どんなに有益なアプリを作成しても、利用者がいなければ良いアプリとは言えません。頻繁に通信エラーが起こったり、アプリが起動するまでに時間がかかりすぎたりすると、ユーザーに使われなくなっていきます。ビジネスを継続して行うためにもAWSの各リソースを監視することが重要です。
AWSの各リソースのパフォーマンス
AWSでは多数のリソースが利用可能であり、それぞれのリソースのパフォーマンスも重要な監視項目です。特に、EC2インスタンス、RDSデータベース、S3バケット、Lambda関数などの主要なリソースについては、その使用状況とパフォーマンス指標を継続的に監視することが求められます。例えば、EC2インスタンスのCPUクレジットの使用状況やRDSのリードレプリカの遅延などは、パフォーマンスの問題が発生する前に事前に対策を講じるための重要な指標となります。
死活監視
システムが外部からアクセス可能か、正常に動作しているかを検証する監視です。Webアプリケーションであれば、レスポンスタイム、エラー率、HTTPステータスコードなどを、APIであればエンドポイントへのリクエスト数やエラー数を監視します。これにより、システム全体の可用性やパフォーマンスを把握し、ユーザーへの影響を最小限に抑えることができます。
セキュリティ監視
AWS上にある企業のデータやシステムを守るために、セキュリティの監視が重要です。セキュリティに関して、以下の項目がチェック項目です。
- ユーザー操作やAPI操作などの操作履歴を監視
- リソースの構成変更履歴を監視
- システムへの脅威状況を監視
操作履歴を監視することで、不正アクセスによる被害を最小限に抑えられます。そして、リソースの変更履歴を検知すると、逸脱した操作の検知が可能です。また、悪意のあるポートスキャンが行われていないかも、セキュリティ監視を行う上でチェックする項目となります。
コストの監視
AWSの料金は、基本的には利用した分だけ料金を支払う従量課金制です。毎月固定の月額料金を支払うサービスであれば、コストを気にする必要がありません。しかし、AWSでは想定外のコストが発生することを防ぐために、コストの監視が重要となります。
リソースの停止、起動が簡単に行える点がAWSのメリットです。使用していないリソースが動きっぱなしになり、無駄なコストが発生しないように、コストの監視を行いましょう。
主要なAWS監視ツール3選
AWSでシステムを監視する企業が採用している主な監視ツールは、以下のツールです。
- Amazon CloudWatch
- Zabbix
- Mackerel
この3ツールについて解説していきます。さらに詳しい情報や他のツールについて、こちらの記事で解説していますのであわせてご覧ください。
Amazon CloudWatch
Amazon CloudWatchは、AWSが提供する統合監視サービスであり、AWSリソースやオンプレミスのサーバーの監視が可能です。特に、EC2インスタンスやRDSデータベースなどのAWSリソースとシームレスに連携できるため、AWS環境での監視には最適です。
Zabbix
Zabbixは、オープンソースの監視ツールであり、高いカスタマイズ性と柔軟性を備えています。オンプレミスやクラウド環境、仮想化プラットフォームなど、さまざまな環境での監視が可能であり、幅広い種類のメトリクスを収集できます。
Zabbixの強みは、エージェントベースおよびエージェントレスの両方の監視が可能であること、そして強力なアラート機能を持っている点です。
Mackerel
Mackerelは、クラウド環境に最適化されたSaaS型の監視ツールで、日本国内でも多くの企業に採用されています。Mackerelは、シンプルで使いやすいUIを備えており、迅速なセットアップが可能です。サーバーやコンテナ、AWSリソースなど、幅広い対象を監視できるほか、マイクロサービスアーキテクチャにも対応しています。
AWSの監視サービス「Amazon CloudWatch」でできること
AWS監視サービスであるCloudWatchは、以下のような多岐にわたる機能を提供しています。
- CloudWatch Logs
- CloudWatch Logs Insights
- CloudWatch Alarms
- CloudWatch Dashboard
これらの機能を活用することで、システムの健全性を保ち、問題発生時には迅速に対応することが可能です。ここからはそれぞれの機能について詳しく解説します。AWSの他の監視サービスについては、こちらの記事で解説しています。合わせてご覧ください。
メトリクス
CloudWatchでは、AWSリソースやアプリケーションのメトリクスを収集・監視することができます。メトリクスとは、CPU使用率、メモリ使用量、ディスクIOなど、リソースのパフォーマンス指標を示すデータです。
CloudWatch のメトリクスの保存期間は、最大15ヶ月です。
また、メトリクスへのデータポイントの取得頻度も変更可能です。
- 1 分未満(データ保持期間は3時間)
- 1 分ごと(15日間)
- 5 分ごと(63日間)
- 1 時間ごと(15ヶ月間)
以下の4種類から選択でき、取得間隔が長くなるほど、メトリクスの保存期間も長くなります。
ログ監視
CloudWatch Logsは、AWS環境内で生成されるログデータを、耐久性の高いストレージに保存し、ローテーションを行い管理するための機能です。ログデータが一定のサイズまたは期間に達すると、自動的に新しいログファイルに切り替わる仕組みをローテーションと呼びます。
また、CloudWatch Logs Insightsの機能によって、Logsに保存したログの高速分析が可能です。
アラーム機能
CloudWatch Alarmsの機能によって、しきい値をトリガーとした監視・保守業務の自動化ができます。集められたメトリクスにしきい値を設定し、しきい値を超えた場合に、特定のアクションを起こすようなワークフローを組み込むことが可能です。
例えば、特定のメトリクスが閾値を超えた場合に、SNSを通じて通知を送信したり、オートスケーリングを実行したりすることができます。
ダッシュボード機能でログ管理
CloudWatch Dashboardは、収集したメトリクスの中で、優先度の高い情報を目的に合わせてダッシュボード上でまとめて管理できる機能です。複数のメトリクスやログデータを一つの画面で視覚化できます。
オンプレミスサーバーも監視できる
CloudWatchは、AWSリソースだけでなく、オンプレミスのサーバーやハイブリッド環境の監視もサポートしています。
AWS Systems Managerエージェントをオンプレミスサーバーにインストールし、CloudWatchエージェントを設定することで、これらのサーバーのメトリクスやログをAWS環境と同様に監視することが可能です。
ベストプラクティスなAWS監視を行う上で重要なこと
AWSの監視を行う上で、重要視するべきことについて解説します。AWS監視のベストプラクティスについては、別記事で解説していますのでこちらも合わせてご覧ください。
監視の目的を明確にする
AWS環境の監視を始める前に、監視の目的を明確に定義することが重要です。
- システム全体のパフォーマンス
- リソースの最適化
- セキュリティ確保
- コスト管理
上記項目に対して、具体的な数値目標を立てることで、監視の効果を最大限に引き出すことができます。目的が明確であれば、適切なKPIを設定し、効果的なモニタリングが可能になります。
AWSリソースの監視計画を立てる
監視を効果的に行うためには、まず監視計画を立てることが必要です。計画フェーズで以下を定義しましょう。
- 監視対象のリソース
- 監視する項目
- 使用する監視ツール・サービス
- ログを取得する頻度
- 監視データの収集方法・解析方法
- レポート作成の手順
この計画がしっかりしていると、AWSリソースの運用状況を継続的に把握でき、異常が発生した際に迅速かつ的確な対応が可能になります。計画は定期的に見直し、運用環境の変化に対応させることも重要です。
モニタリングの優先事項を決定する
全てのリソースを同じ優先度で監視することは現実的ではなく、AWSのベストプラクティスではありません。監視業務の優先事項を決定し、重要度に応じてリソースを分類することが重要です。
例えば、ビジネスに直結する重要なシステムやデータは最優先で監視し、それ以外のリソースは必要最低限の項目のみ監視を行います。これにより、リソースが限られている場合でも、最も重要なリソースに監視リソースを集中させることができます。
監視する頻度・ログの保管期間をリソースごとに決める
AWS環境では、様々なリソース(EC2インスタンス、RDSデータベース、S3バケットなど)が利用されます。各リソースの特性や重要度に応じて、適切な監視頻度とログの保管期間を設定することが重要です。
頻繁な状態変化が想定されるリソースは、1分単位や数秒単位での高頻度監視が有効です。
状態変化が比較的少ないリソースは、数時間単位や1日単位の低頻度監視で十分なケースが多いです。
監視アラート発生時の対応フローを作成
監視をするだけでは、障害やエラーの対策は不十分です。監視アラートが発生した際の対応フローを事前に作成しておくことで、問題が発生した際に迅速かつ適切に対応できます。
- アラートの重要度に応じた対応手順
- 担当者の割り当て
- エスカレーション方法
などを、あらかじめ決定し、担当者に周知しておきましょう。これにより、アラート発生時に混乱を防ぎ、組織全体が迅速に行動できる体制を整えられます。
AWSリソースの監視の設計例
Eコマースサイトの監視設計を行う想定で、おすすめの設計例を紹介します。Eコマースサイトの運営時に利用されるサービスと、監視するべき項目を以下にまとめます。
- EC2インスタンス: CPU利用率、メモリ使用量、ディスクI/O、ネットワークトラフィック
- RDSデータベース: 接続数、クエリ実行時間、IOPS、ストレージ使用量
- S3バケット: バケットサイズ、オブジェクト数、リクエスト数
- ELBロードバランサー: HTTP 5xxエラー、リクエスト数、ターゲットヘルス
- Lambda関数: 実行時間、エラー率、呼び出し回数
- CloudFront: キャッシュヒット率、リクエストレート、エラー率
CloudWatchのInsightsやAlarms機能を用いて、次のアラート設定を用いることで、迅速な異常検知が可能です。
- CPU使用率が90%を超えた場合
- ディスクI/Oがボトルネックになっている場合
- データベースの接続が拒否されている場合
- HTTP 5xxエラーが急増した場合
- Lambda関数がタイムアウトした場合
これらのアラート発報時に、lambdaとEventBridgeで修復を自動化したり、SNSサービスで担当者にメールを送ることで、運用の効率化が図れます。AWSの監視設計について、詳しくはこちらの記事でも解説しています。
まとめ
AWS環境の監視を行うには、CloudWatchは非常に有力なツールです。オンプレミス型監視と比較して、運用の手間を大幅に削減し、自動化による効率化が可能です。また、他のクラウド監視サービスと比較しても、AWSとの深い統合性と多彩な機能で、特にAWSユーザーにとっては最適な選択肢となります。CloudWatchを活用し、システム監視の効率を向上させ、ビジネスの成長を支える堅牢なインフラを構築しましょう。