【AWSサービス 基礎編】Amazon CloudWatch でメトリクスとアラームを設定する

目次

概要

AWS 上でシステムを運用する際、リソースの状態やパフォーマンスを把握することは不可欠です。CPU 使用率が異常に高い、ディスク容量が逼迫している、API のエラーレートが上昇しているといった状況に気づけなければ、障害の発見や対応が遅れ、サービスに影響を与える可能性があります。

Amazon CloudWatch は、AWS リソースやアプリケーションの監視サービスです。EC2 インスタンスの CPU 使用率、RDS のデータベース接続数、Lambda 関数の実行回数など、さまざまなメトリクス(数値データ)を自動的に収集し、グラフで可視化できます。さらに、メトリクスにしきい値を設定してアラームを作成し、異常検知時に SNS 通知や Auto Scaling アクションなどを自動的にトリガーできます。

本記事では、CloudWatch の基本概念を理解し、EC2 インスタンスのメトリクス確認とアラーム設定を通じて、AWS リソースの監視方法を体験します。

CloudWatch の全体像(AWS リソース → メトリクス収集 → ダッシュボード可視化 / アラーム → SNS 通知)を示す図解を挿入
CloudWatch の全体像(AWS リソース → メトリクス収集 → ダッシュボード可視化 / アラーム → SNS 通知)を示す図解を挿入

この記事のメリット

  • CloudWatch のメトリクス画面で EC2 インスタンスの CPU 使用率やネットワーク通信量を確認する方法を習得できる
  • 名前空間・メトリクス・ディメンションといった CloudWatch の基本概念を理解できる
  • アラームを作成し、しきい値超過時に SNS トピックへ通知を送る設定を体験できる
  • CloudWatch ダッシュボードを作成し、複数のメトリクスを一画面で監視する方法を把握できる
  • 運用監視の基礎的な仕組みを理解できる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

Amazon CloudWatch とは

クラウドおさる

とひさん、今日は CloudWatch について教えてほしいです。AWS のリソースを監視するサービスっていうのはなんとなく知ってるんですけど、具体的にどんなことができるんですか?

土肥

CloudWatch は、AWS リソースとアプリケーションのモニタリングサービスだよ。メトリクスの収集・可視化、アラームによる異常検知、ログの集約・分析など、運用監視に必要な機能を統合的に提供してくれるんだ。

クラウドおさる

なるほど、監視に必要な機能がひとまとめになってるんですね。どんなユースケースがあるんですか?

土肥

主なユースケースはこんな感じだよ。

  • リソース監視(CPU 使用率、メモリ使用量、ディスク I/O の監視)
  • 異常検知と自動対応(アラームによる通知や Auto Scaling のトリガー)
  • ログの集約と分析(CloudWatch Logs によるアプリケーションログの管理)
  • ダッシュボードによる可視化(運用チーム向けの統合ビュー)
クラウドおさる

CPU が上がりすぎたら通知してくれたり、ログをまとめて分析できたりするんですね。運用には欠かせなさそうです。

土肥

そのとおり。AWS でシステムを運用するなら、CloudWatch は真っ先に押さえておきたいサービスだね。

メトリクス

クラウドおさる

さっき「メトリクス」って言葉が出てきましたけど、これは何ですか?

土肥

メトリクスは、CloudWatch に発行される時系列のデータポイントのことだよ。AWS サービスはデフォルトでさまざまなメトリクスを CloudWatch に送信してくれるんだ。

クラウドおさる

自動で送ってくれるんですね。メトリクスってどうやって区別するんですか?

土肥

メトリクスは以下の 3 つの要素で一意に識別されるよ。

要素説明例
名前空間(Namespace)メトリクスのグループ。AWS サービスごとに定義されるAWS/EC2、AWS/RDS、AWS/Lambda
メトリクス名測定対象の名前CPUUtilization、NetworkIn、StatusCheckFailed
ディメンションメトリクスを細分化するキーと値のペアInstanceId: i-0123456789abcdef0
クラウドおさる

名前空間でサービスを分けて、メトリクス名で測定対象を指定して、ディメンションでさらに細かく絞り込むんですね。

土肥

そうそう。たとえば「EC2 の、CPU 使用率の、このインスタンスのやつ」って感じで特定できるようになってるんだ。

メトリクスの保持期間と解像度

クラウドおさる

メトリクスのデータって、ずっと残るんですか?

土肥

実はデータポイントの間隔(期間)によって保持期間が決まっているんだ。

データポイントの期間保持期間
1 秒(高解像度)3 時間
60 秒(1 分)15 日間
300 秒(5 分)63 日間
3600 秒(1 時間)455 日間(15 か月)
クラウドおさる

細かいデータほど早く消えるんですね。1 秒単位だと 3 時間しか持たないんだ。

土肥

そうなんだ。ちなみに EC2 の基本モニタリングでは 5 分間隔、詳細モニタリングを有効化すると 1 分間隔でメトリクスが送信されるよ。

クラウドおさる

基本は 5 分間隔で、もっと細かく見たいときは詳細モニタリングに切り替えればいいんですね。

メトリクスの構成要素(名前空間 → メトリクス名 → ディメンション)の関係を示す図解
メトリクスの構成要素(名前空間 → メトリクス名 → ディメンション)の関係を示す図解

アラーム

クラウドおさる

メトリクスを見て異常に気づけるのはわかったんですけど、ずっと画面を見てるわけにもいかないですよね?

土肥

そこで活躍するのがアラームだよ。CloudWatch アラームは、メトリクスの値を監視して、指定したしきい値を超えたら自動でアクションを実行してくれる機能なんだ。

クラウドおさる

アラームにはどんな状態があるんですか?

土肥

アラームには 3 つの状態があるよ。

状態説明
OKメトリクスがしきい値の範囲内
ALARMメトリクスがしきい値を超過
INSUFFICIENT_DATAデータが不足しており判定できない
クラウドおさる

OK と ALARM はわかりやすいですね。INSUFFICIENT_DATA は、まだデータが集まってないときの状態ですか?

土肥

そのとおり。アラームを作成した直後はこの状態になることが多いよ。そして ALARM 状態になると、こんなアクションを実行できるんだ。

  • SNS トピックへの通知(メール送信など)
  • Auto Scaling ポリシーの実行
  • EC2 インスタンスの停止・終了・再起動
  • Systems Manager の Incident Manager への通知
クラウドおさる

メール通知だけじゃなくて、Auto Scaling を動かしたり、インスタンスを自動で止めたりもできるんですね。すごい便利です。

土肥

通知して終わりじゃなくて、自動で対処までできるのが CloudWatch アラームの強みだね。

ダッシュボード

クラウドおさる

メトリクスもアラームも個別に見るのは理解できたんですけど、まとめて一覧で見たいときはどうするんですか?

土肥

CloudWatch ダッシュボードを使うといいよ。メトリクスのグラフやアラームの状態をウィジェットとして配置して、一画面で確認できるカスタマイズ可能なビューなんだ。

クラウドおさる

自分で好きなようにレイアウトできるんですね。

土肥

そうだよ。しかも複数のリソースやリージョンのメトリクスを 1 つのダッシュボードにまとめて表示できるから、運用チームの統合モニタリング画面として活用できるんだ。

クラウドおさる

東京リージョンとバージニアリージョンのメトリクスを 1 つの画面で見られるのは助かりますね。実践で実際に作ってみるのが楽しみです。

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方を募集しています。プログラミング未経験から入社して活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

前提条件

  • リージョン: ap-northeast-1(東京)
  • EC2 インスタンスが 1 台起動済みであること
  • IAM ユーザーまたはロールに CloudWatch、EC2、SNS の操作権限があること

作成するリソース一覧

リソース種別リソース名用途
SNS トピックcloudwatch-alarm-topicアラーム通知の送信先
CloudWatch アラームhigh-cpu-alarmCPU 使用率の監視
CloudWatch ダッシュボードec2-monitoringEC2 メトリクスの可視化

ステップ1: EC2 メトリクスの確認

まず、CloudWatch で EC2 インスタンスのメトリクスを確認します。

  • AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します
  • 上部の検索バーに CloudWatch と入力し、表示された「CloudWatch」を選択します
  • 左側ナビゲーションの「メトリクス」→「すべてのメトリクス」を選択します
  • メトリクス画面の下部「参照」タブに、名前空間ごとのカード(EC2、EBS、S3 など)が表示されます。「EC2」を選択します
CloudWatch メトリクス画面(AWS 名前空間の一覧が表示されている状態)
CloudWatch メトリクス画面(AWS 名前空間の一覧が表示されている状態)
  • 「インスタンス別メトリクス」を選択します
  • 監視対象の EC2 インスタンスの CPUUtilization にチェックを入れます
  • 上部のグラフに CPU 使用率の推移が表示されます
EC2 インスタンスの CPUUtilization メトリクスのグラフ表示
EC2 インスタンスの CPUUtilization メトリクスのグラフ表示
  • グラフ上部の期間設定で「1h」「3h」「12h」などを切り替えると、表示期間を変更できます
  • 「統計」列のドロップダウンから「Average」「Maximum」「Minimum」を切り替えることで、集計方法を変更できます

ステップ2: SNS トピックの作成

アラーム通知の送信先となる SNS トピックを作成します。

  • 上部の検索バーに SNS と入力し、表示された「Simple Notification Service」を選択します
  • 左側ナビゲーションの「トピック」を選択します
  • 「トピックの作成」をクリックします
  • 以下の項目を入力します
  • タイプ: スタンダード(初期状態では FIFO が選択されているので切り替えます)
  • 名前: cloudwatch-alarm-topic
  • 表示名: CloudWatch Alarm
  • その他の項目はデフォルトのままにします
  • 「トピックの作成」をクリックします
SNS トピック作成画面(名前と表示名を入力した状態)
SNS トピック作成画面(名前と表示名を入力した状態)
  • トピックの詳細画面が表示されたら、「サブスクリプションの作成」をクリックします
  • 以下の項目を入力します
  • プロトコル: E メール
  • エンドポイント: 通知を受信するメールアドレスを入力
  • 「サブスクリプションの作成」をクリックします
SNS サブスクリプション作成画面(E メールプロトコルとエンドポイントを入力した状態)
SNS サブスクリプション作成画面(E メールプロトコルとエンドポイントを入力した状態)
  • 入力したメールアドレスに確認メールが届くので、メール内の「Confirm subscription」リンクをクリックしてサブスクリプションを確定します

ステップ3: CloudWatch アラームの作成

EC2 インスタンスの CPU 使用率が一定のしきい値を超えた場合に通知を送るアラームを作成します。

  • 上部の検索バーに CloudWatch と入力し、「CloudWatch」を選択します
  • 左側ナビゲーションの「アラーム」→「すべてのアラーム」を選択します
  • 「アラームの作成」をクリックします
  • 「メトリクスの選択」をクリックします
  • 「EC2」→「インスタンス別メトリクス」を選択します
  • 監視対象の EC2 インスタンスの CPUUtilization を選択し、「メトリクスの選択」をクリックします
メトリクスの選択画面(EC2 インスタンスの CPUUtilization を選択した状態)
メトリクスの選択画面(EC2 インスタンスの CPUUtilization を選択した状態)
  • 「メトリクスと条件の指定」画面で以下を設定します
  • 統計: 平均値
  • 期間: 5 分
  • しきい値の種類: 静的
  • アラーム条件: 以上
  • しきい値: 80(CPU 使用率が 80% 以上で発火)
メトリクスと条件の指定画面(しきい値 80% を設定した状態)
メトリクスと条件の指定画面(しきい値 80% を設定した状態)
  • 「次へ」をクリックします
  • 「アクションの設定」画面で以下を設定します
  • アラーム状態トリガー: アラーム状態
  • SNS トピックの選択: 「既存の SNS トピックを選択」を選択
  • 通知の送信先: cloudwatch-alarm-topic を選択
  • その他のアクションは設定しません
アクションの設定画面(SNS トピック cloudwatch-alarm-topic を選択した状態)
アクションの設定画面(SNS トピック cloudwatch-alarm-topic を選択した状態)
  • 「次へ」をクリックします
  • アラーム名に high-cpu-alarm と入力します
  • 「次へ」をクリックし、確認画面で内容を確認して「アラームの作成」をクリックします
  • アラーム一覧に high-cpu-alarm が表示され、状態が データ不足 になっていることを確認します(データが蓄積されると OK に変わります)
アラーム一覧画面(high-cpu-alarm が表示されている状態)
アラーム一覧画面(high-cpu-alarm が表示されている状態)

ステップ4: アラームの動作確認

アラームの動作を確認するため、EC2 インスタンスに負荷をかけて CPU 使用率を上昇させます。

  • EC2 コンソールから対象インスタンスに接続します(EC2 Instance Connect やセッションマネージャーを使用)
  • 以下のコマンドを実行して CPU に負荷をかけます
# CPU 負荷をかける(stress コマンドがない場合は yes コマンドで代替)
yes > /dev/null &
  • CloudWatch コンソールに戻り、「すべてのアラーム」を選択します
  • 数分後、high-cpu-alarm の状態が OK から アラーム状態 に変わります
アラーム一覧画面(high-cpu-alarm がアラーム状態に変化した状態)
アラーム一覧画面(high-cpu-alarm がアラーム状態に変化した状態)
  • SNS サブスクリプションで設定したメールアドレスにアラーム通知メールが届いていることを確認します
  • 負荷テストを停止します
# バックグラウンドで実行中の yes コマンドを停止
kill %1
  • 数分後、CPU 使用率がしきい値を下回ると、アラームの状態が OK に戻ります

ステップ5: ダッシュボードの作成

複数のメトリクスを 1 つの画面で監視するためのダッシュボードを作成します。

  • 左側ナビゲーションの「ダッシュボード」を選択します
  • 「ダッシュボードの作成」をクリックします
  • ダッシュボード名に ec2-monitoring と入力し、「ダッシュボードの作成」をクリックします
ダッシュボード作成ダイアログ(名前を入力した状態)
ダッシュボード作成ダイアログ(名前を入力した状態)
  • ウィジェットの追加画面が表示されます。データソースで「メトリクス」を選択し、「次へ」をクリックします
  • メトリクスの選択画面で「EC2」→「インスタンス別メトリクス」を選択し、対象インスタンスの CPUUtilization にチェックを入れます(グラフの種類は右上のドロップダウンで「線」のままにします)
  • 「ウィジェットの作成」をクリックします
ダッシュボードに CPUUtilization のウィジェットが追加された状態
ダッシュボードに CPUUtilization のウィジェットが追加された状態
  • ダッシュボード上部の「+」アイコンをクリックして、さらにウィジェットを追加します
  • 同様の手順で、以下のメトリクスのウィジェットを追加します
  • NetworkIn(ネットワーク受信バイト数)
  • NetworkOut(ネットワーク送信バイト数)
  • StatusCheckFailed(ステータスチェック失敗)
  • ウィジェットの配置をドラッグ&ドロップで調整し、右上の「保存」をクリックします(保存するまでダッシュボードの変更は確定しません)
ダッシュボード完成画面(複数のメトリクスウィジェットが配置された状態)
ダッシュボード完成画面(複数のメトリクスウィジェットが配置された状態)

まとめ

  • Amazon CloudWatch は、AWS リソースとアプリケーションのモニタリングサービスで、メトリクスの収集・可視化・アラームによる異常検知を統合的に提供します
  • メトリクス は名前空間・メトリクス名・ディメンションの 3 要素で識別される時系列データです
  • アラーム はメトリクスのしきい値を監視し、OK・ALARM・INSUFFICIENT_DATA の 3 状態を遷移します
  • アラームが ALARM 状態になると、SNS 通知や Auto Scaling アクションなどを自動実行できます
  • ダッシュボード を使うと、複数のメトリクスやアラームを 1 つの画面にまとめて監視できます
  • EC2 の基本モニタリングでは 5 分間隔、詳細モニタリングでは 1 分間隔でメトリクスが送信されます

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方を募集しています。プログラミング未経験から入社して活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次