0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWSプロフェッショナルへの道】現役エンジニアが贈るクラウド実践ガイド - 第18回 運用監視の要!CloudWatchでシステムの状態を可視化・アラート設定

Last updated at Posted at 2025-08-03

運用監視の要!CloudWatchでシステムの状態を可視化・アラート設定

こんにちは!現役クラウドエンジニアのAkrです。

【AWSプロフェッショナルへの道】現役クラウドエンジニアが贈る実践ガイド」の第18回をお届けします。前回はGitHub ActionsとAWSを連携させたモダンなCI/CDワークフローを構築し、開発の自動化について学びました。開発したアプリケーションを安定して稼働させるには、そのアプリケーションやインフラの状態を常に監視し、異常をいち早く検知することが不可欠です。

今回は、AWSの運用監視の要となるサービス、Amazon CloudWatchを徹底的に解説します。CloudWatchは、AWSリソースだけでなく、アプリケーションやオンプレミスのシステムの状態をログメトリクスという2つの側面から可視化し、異常を検知するためのアラートを発報する統合的なモニタリングサービスです。

「うちのサービス、今どういう状態なの?」「サーバーのCPUが急に上がった原因は?」「エラーが発生したらすぐに通知を受け取りたい」といった悩みを、CloudWatchがどのように解決してくれるのかを学びましょう。本記事では、CloudWatchの基本概念から、ログの収集・分析、メトリクスの可視化、アラームの設定、そしてダッシュボードの作成までを網羅的に学び、実践的な監視・運用スキルを身につけます。


1. CloudWatchとは?ログとメトリクスの役割

Amazon CloudWatchは、AWSリソースや、ユーザーが実行するアプリケーション、オンプレミスシステムから、モニタリングデータ(ログとメトリクス)を収集・追跡し、ダッシュボードで可視化したり、設定した閾値を超えた場合にアラームを通知したりするサービスです。

CloudWatchは主に以下の2つの役割を担います。

ログ (Logs)

CloudWatch Logsは、様々なソースからログデータを収集し、一元管理するサービスです。

  • ロググループ (Log Group): ログストリームの集まりです。通常、アプリケーションやサービスごとにロググループを作成します(例: /aws/lambda/my-function)。
  • ログストリーム (Log Stream): 同じソースから連続して生成されるログデータのシーケンスです。

ログは、アプリケーションのエラーメッセージやスタックトレース、リクエストの詳細など、イベント単位の詳細情報を提供します。これにより、**「何が起こったのか」**を詳細に分析できます。

メトリクス (Metrics)

CloudWatch Metricsは、時間と共に変化する数値データ(メトリクス)を収集・追跡します。

  • メトリクス (Metric): 監視対象の変数です(例: CPU使用率、リクエスト数)。
  • 名前空間 (Namespace): メトリクスのコンテナです。AWSサービスは独自の名前空間を使用します(例: AWS/EC2, AWS/Lambda)。
  • ディメンション (Dimension): メトリクスの特性を特定するキーと値のペアです。同じCPU使用率というメトリクスでも、インスタンスIDなどのディメンションで区別できます。

メトリクスは、システムのパフォーマンスや状態を俯瞰的に把握するための数値データです。これにより、**「システムが今どういう状態か」**を把握できます。


2. CloudWatch Logs: ログの収集、分析、メトリクス化

CloudWatch Logsは、アプリケーションのデバッグやトラブルシューティングに不可欠なサービスです。

2.1. ログの収集

AWSの主要なサービスは、CloudWatch Logsにログを自動的に送信します。

  • Lambda: 実行ログが/aws/lambda/関数名のロググループに自動で保存されます。
  • ECS: コンテナのログドライバーにawslogsを設定することで、CloudWatch Logsにログを送信できます。
  • EC2: CloudWatchエージェントをEC2インスタンスにインストールすることで、OSやアプリケーションのログを送信できます。
  • VPCフローログ: VPC内のネットワークトラフィックのログを送信できます。

2.2. ログの分析

CloudWatch Logsには、収集したログを分析するための便利な機能があります。

  • ログイベントの検索: ロググループ内で特定のキーワードや正規表現を使ってログイベントを検索できます。
  • CloudWatch Logs Insights: ログデータをSQLライクなクエリで分析できるサービスです。エラー率の計算や、特定のAPIコールのレイテンシー集計など、複雑な分析が可能です。

実践!Logs InsightsでLambdaのログを分析してみよう

  1. AWSマネジメントコンソールでCloudWatchに移動します。

  2. 左のナビゲーションペインから「ログ」→「Logs Insights」を選択します。

  3. 「ロググループを選択」で、Lambda関数のロググループ(例: /aws/lambda/my-simple-api-function)を選択します。

  4. 以下のクエリを実行してみましょう。

    fields @timestamp, @message
    | sort @timestamp desc
    | limit 20
    
    • fieldsで表示するフィールドを指定し、sortでソート、limitで件数を制限します。

    次に、INFOレベルのログのみを抽出するクエリを実行してみましょう。

    fields @timestamp, @message
    | filter @message like /INFO/
    | sort @timestamp desc
    | limit 20
    
    • filterで特定の条件に一致するログを絞り込めます。

2.3. ログからメトリクスを作成

ログの中に含まれる特定のパターンを抽出し、メトリクスとしてカウントすることができます。これをメトリクスフィルタと呼びます。

実践!エラーログからメトリクスを作成してみよう

  1. CloudWatchコンソールで、「ログ」→「ロググループ」を選択します。
  2. Lambda関数のロググループを選択し、「メトリクスフィルタを作成」をクリックします。
  3. フィルタパターン: ERROR
    • このパターンに一致するログイベントを抽出します。
  4. メトリクスを作成:
    • メトリクス名前空間: MyLambdaErrors
    • メトリクス名: ErrorCount
    • 「メトリクスフィルタを作成」をクリック。

これで、ログにERRORという単語が含まれるたびに、MyLambdaErrorsという名前空間のErrorCountというメトリクスが1つ増えるようになります。


3. CloudWatch Metricsとアラーム

メトリクスは、システムの健全性を数値で把握するために不可欠です。

3.1. メトリクスの可視化

AWSは、EC2のCPU使用率やLambdaの実行回数など、多くの標準メトリクスを自動的に収集しています。

実践!Lambdaのメトリクスをダッシュボードで見てみよう

  1. CloudWatchコンソールで、左のナビゲーションペインから「メトリクス」を選択します。
  2. 「すべてのメトリクス」タブで、「AWS/Lambda」→「関数名」を選択します。
  3. my-simple-api-functionInvocations(実行回数)、Errors(エラー数)、Duration(実行時間)などを選択します。
  4. グラフ上にデータが表示されることを確認します。

3.2. アラームの設定

メトリクスが設定した閾値を超えた場合に、通知を送ることができます。

実践!Lambdaのエラー数に基づいてアラームを設定してみよう

  1. CloudWatchコンソールで、「アラーム」→「アラームの作成」をクリックします。
  2. メトリクスと条件を指定:
    • 「メトリクスを選択」をクリックし、先ほど作成したカスタムメトリクスMyLambdaErrorsを選択します。
      • MyLambdaErrorsLog Group, MetricErrorCount
    • 次へ」をクリックします。
  3. メトリクスと条件の指定:
    • アラーム閾値: 静的
    • 期間: 1分
    • 以下のときにErrorCountより大きい 0 (1分間に1回でもエラーが発生したら)
    • 次へ」をクリックします。
  4. 通知:
    • SNSトピックを選択」で、「新しいトピックの作成」を選択します。
    • SNSトピック名: my-cloudwatch-alert
    • Eメールエンドポイント: 通知を受け取りたいメールアドレスを入力します。
    • : ここで入力したメールアドレスに確認メールが送信されるので、必ず購読を承認してください。
    • 次へ」をクリックします。
  5. 名前と説明の追加:
    • アラーム名: MyLambdaErrorAlarm
    • 次へ」→「アラームを作成」をクリック。

これで、Lambda関数でエラーが発生した場合、設定したメールアドレスに通知が届くようになります。


4. CloudWatch ダッシュボード

ダッシュボードは、複数のグラフやアラームの状態を一つの画面にまとめて表示し、システムの全体像を把握するために非常に便利です。

実践!ダッシュボードを作成してみよう

  1. CloudWatchコンソールで、「ダッシュボード」を選択し、「ダッシュボードを作成」をクリックします。
  2. ダッシュボード名: MyWebAppDashboard
  3. ウィジェットを追加」をクリックし、「グラフ」を選択します。
  4. メトリクスを追加する画面で、Lambda関数のInvocationsErrorsDurationなどを追加します。
  5. 「ウィジェットを追加」をクリック。
  6. 同様に「ウィジェットを追加」をクリックし、「アラームの状態」を選択して、先ほど作成したMyLambdaErrorAlarmを追加します。
  7. 保存」をクリック。

これで、Webアプリケーションの主要なメトリクスとアラームの状態を一目で確認できるダッシュボードが完成しました。


5. CloudWatchのベストプラクティス

  • ログとメトリクスの使い分け:
    • メトリクスは、システムの健全性を俯瞰的に把握するために利用します。
    • ログは、トラブル発生時に詳細な原因を究明するために利用します。
  • CloudWatchエージェントの活用: EC2インスタンスのCPUやメモリだけでなく、ディスクIO、プロセス数、カスタムログなど、より詳細なメトリクスやログを収集したい場合は、CloudWatchエージェントをインストールしましょう。
  • アラームの通知先: メール通知だけでなく、SNSトピックをトリガーにしてLambda関数を呼び出し、SlackやMicrosoft Teamsに通知を送るなどの自動化も可能です。
  • CloudWatch Events (EventBridge) の活用: AWSサービスのイベント(例: EC2インスタンスの起動)や、定期的なスケジュール(例: 毎朝9時)に基づいて、Lambda関数やEC2コマンドなどを自動実行できます。
  • コストの最適化: CloudWatch Logsの保持期間や、メトリクスの解像度(標準解像度か高解像度か)を適切に設定し、コストを最適化しましょう。

まとめ

今回は、AWSのモニタリングサービスであるAmazon CloudWatchについて、その主要な機能と実践的な使い方を学びました。

  • CloudWatchは、ログメトリクスを統合的に管理する運用監視の要です。
  • CloudWatch Logsでログを収集・分析し、CloudWatch Logs InsightsでSQLライクなクエリを実行できることを学びました。
  • CloudWatch Metricsでシステムのパフォーマンスを数値で可視化し、アラームを設定して異常を検知する仕組みを構築しました。
  • 最後に、複数のメトリクスとアラームを一つの画面にまとめるダッシュボードを作成しました。

CloudWatchを使いこなすことで、あなたは「何が起きているか分からない」という状況から解放され、システムの健全性を常に把握し、問題発生時には迅速に対応できるようになります。これは、信頼性の高いシステムを運用するために不可欠なスキルです。


この記事が皆さんのAWS学習の一助となれば幸いです。

もしこの記事が役に立ったと感じたら、ぜひ「いいね」👍をお願いします!励みになります!


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?