【入門編】Amazon CloudWatchでできることとは? OSS監視ツールとも比較

AWS(Amazon Web Service)は、世界トップのシェアを誇るクラウドサービスです。近年、多くの企業がオンプレミス環境からAWSに移行し、多くのサービスやアプリケーションがAWS環境で開発されています。
しかしその反面、これまでと違った環境において、監視運用に課題を感じたことはありませんか? AWSは作って終わりではありません。AWSも従来のオンプレミス環境などと同様、適切に運用しないと安定稼働に支障をきたし、無駄なコストが発生してしまうこともあります。そこで今回は、AWSが提供する監視・運用サービス「Amazon CloudWatch」について解説します。

CloudWatchとは? 概念と機能

CloudWatchは、AWS内で動作する仮想サーバーや各サービスを監視できるサービスです。主に以下のような機能が提供され、必要なものを組み合わせて利用します。それぞれの機能がどのような特徴を持ち、どのようなことができるのか見ていきましょう。

メトリクス

「メトリクス」はCloudWatchで最も基本的な要素で、監視対象から取得するデータポイントのセットのことを指します。例えば、AWS内に立てた仮想サーバーのCPU使用率、Diskの読み書き回数、インターフェースの通信量など、仮想サーバーの監視項目として代表的なものは予め用意されており、すぐに監視を始めることができます。

メトリクスは、収集したデータポイントの中から、どのような統計を提示するかを選択することができます。これにより、意図に応じて適切な情報を得ることが可能です。

  • Minimum(最小値):指定された期間内で観測された最小値。
  • Maximum(最大値):指定された期間内で観測された最大値。
  • Sum(合計値):取得したすべての数値を加算した合計値。
  • Average(平均値):指定された期間内における平均値。具体的にはSumをSampleCountで割った数値。
  • SampleCount(カウント数):メトリクスの統計を計算する際に使用するデータポイントの数
  • pNN.NN(パーセンタイル):小数点以下最大2桁まで指定した任意のパーセンタイルの値。

データの解像度(データをどれぐらいの頻度で取得するか)についても設定が可能です。標準の解像度は1分間隔の粒度のデータですが、1秒間隔などの高解像度で取得と保存を行うことも可能です。ただし、高解像度の監視は有償で、高解像度のメトリックを頻繁に利用するほど料金は高くなります。無償の範囲については、「CloudWatchの料金」の段落で解説します。

また、取得したメトリクスのデータは、時間が経つとともに集約され、保持されるデータの粒度が粗くなります。

  • 60秒未満のデータポイントは3時間利用できます。これらのデータポイントは、高解像度のカスタム指標です。
  • 60秒(1分)のデータポイントは15日間利用できます。
  • 300秒(5分)のデータポイントは63日間利用できます。
  • 3600秒(1時間)の期間のデータポイントは、455日(15か月)利用できます。

また任意の監視項目を「カスタムメトリクス」として追加することもできます。カスタムメトリクスは、仮想サーバーのメモリ使用率や、指定したサービスのプロセス数などの監視方法が事例としてよく紹介されていますが、仮想サーバー内部のあらゆる状態を監視することが可能です。

参考:AWS「Amazon Cloud Watch ユーザーガイド」https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html(2022/3/8確認)

ログ監視機能(CloudWatch Logs)

CloudWatchエージェントをインストールすることで、使用中のすべてのシステム、アプリケーション、AWS サービスのログファイルを監視することができます。例えば、特定のキーワードやエラーコードなどを指定して検出することが可能です。また、ログをアーカイブとして保存できるため、分析にも役立ちます。

さらに、CloudWatch Logs Insightsという拡張機能では、ログデータを検索し分析することが可能です。監視・運用で何か問題や障害が発生した場合、潜在的な原因の特定に役立てることができます。

アラーム通知機能(CloudWatch Alarms)

メトリクスが特定の閾値を超えた場合、下回った場合、監視ができなくなった場合など、状況に合わせてアラームを発行することができます。アラームは、AWSのSNS(Simple Notification Service)と連携され、さまざまな方法で通知されます。Eメールでの通知はもちろんのこと、例えば他のAWSサービスと連携してチャットツールへ直接通知するなど、APIとしてさまざまなサードパーティアプリケーションとの連携が可能です。

イベント管理・自動化機能(CloudWatch Events)

メトリクスの状態が変化した時に、任意のアクションを実行するように設定できます。状態の変化以外にも、決められたイベントを時間指定で実行することも可能です。サーバー運用の経験がある方は、Windows系でいうところのタスクスケジューラー、Linux系でいうところのCronといったものが、AWS内でより高度に設定できる機能とお考えいただければイメージが湧きやすいのではないでしょうか。

また、障害を検出した時のイベントとしてAutoScalingアクションを発動させるなど、自動復旧処理として利用することも可能です。

現在、CloudWatch Eventsの拡張機能であるAmazon EventBridgeというサービスが提供されており、 他サービスとの連携機能がより強化・拡張されました。

ダッシュボード機能

ここまで紹介したメトリクス・ログ・イベントの状況を可視化し、一元的にダッシュボードへ表示することができる機能です。複数表示や絞り込みなどさまざまなカスタマイズが可能です。障害対応の時間を最小化するだけでなく、リソースの利用状況を見極めるのに効果的です。また、リソースが不足している場合に限らず、余剰にリソースを使いすぎている仮想サーバーを見つけ、コスト削減につなげることにも役立ちます。

このように、CloudWatchのさまざまな機能を活用することによって、検知から復旧までの時間を短縮しながら、リソースの状況を可視化し、運用の最適化が実現できます。CloudWatchは単なる監視サービスとしてではなく、運用の最適化ツールとして効果的に活用しましょう。

CloudWatchとオープンソース監視ツールとの比較

ここまで、AWSで利用できる監視サービスCloudWatchの機能を解説してきました。では、一般的な監視ツールとCloudWatchではどのような違いがあるのでしょうか。

一般的に有名な監視システムには、オープンソース(無償ライセンス)で利用できるZabbix(ザビックス)やNagios(ナギオス)などがあります。これらの監視システムは、オープンソースとは思えないほど多くの機能があり、オンプレミス環境、AWS環境を問わず監視することが可能です。CloudWatchと比較した時のメリット・デメリットは以下の通りです。

オープンソース監視ツールのメリット

  • オープンソースなのでソフトウェアは無償で構築できる。
  • さまざまなプロトコルを利用し監視項目(メトリック)を細かくチューニングできる。
  • AWS以外のAzure・GCP・オンプレミスなどマルチプラットフォームに対応できる。
  • 歴史が長く、昔から監視・運用業務を行なっている現場の担当が慣れている場合が多い

オープンソース監視ツールのデメリット

  • 機能や設定項目が多く、構築と運用に一定の知識やスキルを要する。
  • ソフトウェアはオープンソースだが、監視システムを構築するためのサーバーが必要となる。
  • イベント・タスクなど運用オペレーションの管理機能や自動化機能の実装の難易度が高い。
  • ログ監視に含まれるアーカイブ取得やログ分析・解析周りの機能の実装の難易度が高い。
  • AWSが提供するマネージドサービスは監視できない場合がある。

このように、特にマルチプラットフォーム環境においては、オープンソース監視システムも有効で、監視機能の充実度は引けを取りません。また、実際に監視・運用を担当する現場のメンバーがオープンソースの監視システムに慣れ親しんでおり、既に確立されている運用体制を混乱させないために既存の監視を継続利用するという選択もあるでしょう。

とはいえ、CloudWatch Logs・CloudWatch Logs Insights・CloudWatch Eventなどの機能や、ダッシュボードのような可視化機能は、オープンソース監視システム単体で実装するのは困難です。またAWS関連はドキュメント・ナレッジといった情報量が多く、運用するエンジニアにとってもCloudWatchで監視・運用するメリットは大きいと言えます。

CloudWatchの料金

AWSのサービスは基本的に従量課金です。CloudWatch及び関連する各機能も従量課金で、初期費用や最低利用料金はかかりません。また、一部恒久的な無料利用枠が設定されており、毎月以下の範囲内であれば無料で利用できます。

  • 基本モニタリングのメトリクス (5分間隔)
  • 詳細モニタリングのメトリクス 10個 (1分間隔)
  • 100万回の API リクエスト
  • 毎月最大 50 個のメトリクスに対応するダッシュボード 3個
  • 10件のアラームメトリクス
  • 5 GB のログデータ (取り込み・ストレージのアーカイブ・Logs Insights クエリによってスキャンされたデータ)

CloudWatchで関連する最小限の機能動作を確認する範囲であれば、無料枠内で十分確認することができます。しかし、CloudWatchのメリットを最大限に活かすためには、無料枠では不足する可能性があります。特にCloudWatch Logs・CloudWatch Logs Insightsについては、無料枠が5GBまでとなります。古いログデータをローテートするなどの設定を行わないと、ログが蓄積され、想定以上の請求が発生しやすいので注意が必要です。

AWSの管理機能には、請求アラート通知の機能があります。この機能も、予め設定した予算閾値に対しCloudWatchで監視しています。想定以上の費用がかかってしまわないように、この予算閾値アラートを有効化しておくことをおすすめします。また、有料枠の料金はリージョンごとに異なりますので、利用前に必ず料金を確認しましょう。

参考:AWS「Amazon CloudWatch の料金」https://aws.amazon.com/jp/cloudwatch/pricing/ (2022/3/8確認)

まとめ

AWSにおける監視運用サービスであるCloudWatchについて解説しました。CloudWatchはさまざまな機能が提供されており、AWS内での連携も柔軟に対応することができます。うまく使いこなすことで運用の自動化も可能な、大変優れたマネジメントサービスと言えるでしょう。

最適化されていないITシステム、安定しないITシステムの運用は大きなリスクであり、ITシステムが動き続けている以上、監視運用は必要なコストです。もし自社でCloudWatchを設定・運用する自信がない、インフラの構成や監視運用を最適化したい、監視障害対応が負担となっているといったお悩みがあれば、インフラ構築・監視運用のプロに相談してみるのはいかがでしょうか。