目次
CloudWatchとは?
CloudWatchとは、AWSの提供するサービスやアプリケーションの監視・ログ収集・アラーティングツールです。
CloudWatchは、EC2, ECS, Lambda, RDS, VPC, CloudTrail, CloudFront, Elastic BeanstalkなどのCPU利用率やネットワークトラフィック、ディスク利用率などを監視し、アプリケーションログ、APIコール、アプリケーションイベント独自で定義したパフォーマンスログなどを収集します。
上記の情報はダッシュボードに表示され、アラートや通知を設定することができます。
加えて、AWS Lambdaなどのサービスと統合する事で、特定のイベントに応じた自動化処理を行うこともできます。
CloudWatchと類似したサービスとしてCloudTrailがあります。
CloudWatchがAWSリソースのパフォーマンス(CPU使用率やメモリ使用料、ネットワークトラフィック等)や状態をモニタリングするツールなのに対し、CloudTrailはAWSアカウントにて実行されたアクティビティに関するログを収集するサービスとなります。
料金
CloudWatchは一部無料ですが、一部有料となります。
以下4つの観点で料金が決定します。
- メトリクス:EC2、AWS Lambda、Amazon RDS、Elastic Load Balancingなどの基本的なメトリクス(CPU使用率など)は無料となります。但し、高度なメトリクスやメトリクスの収集頻度を上げる場合は課金が発生します。
- ダッシュボード:ダッシュボードタブにて、監視対象のメトリクスを視覚化することができます。無料枠内であれば、5つまでのダッシュボードを作成できます。
- アラーム設定:CloudWatchアラームを使用して、特定のメトリクスに対して閾値を設定し、閾値を超えた場合にアラート発火する事ができます。アラームを1000件まで無料枠にて設定できます。
- ログの保持:1GBのログデータを1か月間無料で保存できます。1GBを超過した場合は1GB辺り0.03ドル程度となり、保存期間が長くなればなるほど料金が安くなります。
ユースケース
主なユースケースとして、ログ収集、ログ分析、サービス監視、アラートなどが挙げられます。
- ログ収集:CloudWatch Logsを使用する事で、アプリ及びシステム等のログを収集する事が出来ます。CloudWatch Logs Insightsを使用する事で、ログデータの検索、分析、ダッシュボードの作成も可能です。ログの保存期間はメトリクスデータの場合デフォルトで15日、ログデータの場合、1日~10000日までの範囲で設定可能です。保存期間を長くすると、料金は増加します。
- ログ分析:CloudWatch Logs Insightを利用してログデータにクエリを実行し、必要な情報を抽出したり、分析したりする事が可能です。
- サービス監視:EC2インスタンス、RDSインスタンスなどを監視し、CPU利用率やネットワークトラフィック、ディスク使用率などのログを収集できます。また、CloudWatchエージェントを利用する事でオンプレのログ収集も可能です。
- アラート:CloudWatchAlermを利用する事で事前定義したCPU利用率やディスク利用率、ネットワークトラフィックに応じてアラートを発火させる事が出来ます。アラートはLambdaやSNSなどと統合し、処理の自動化も行う事が可能です。
メリット/デメリット
以下のメリット/デメリットがあります。
● メリット:
- リソースの問題への迅速な対応:リアルタイムでアプリケーション及びサービスを監視できます。これにより、問題が発生した場合には迅速に対処できます。
- 処理の自動化:LambdaやSNSと組み合わせる事で、アラートが発生したタイミングで自動的に処理を実行する事が可能です。
● デメリット:
- 複雑なアプリケーションへの対応が不可能:複数のアプリケーションやサービスが相互に依存する場合など、複雑な構成になる場合は、より高度な監視ツールが必要になる場合があります。
- カスタマイズの制限:AWS CloudWatchは、設定のカスタマイズが制限されています。より高度な監視ツールが必要な場合は、別のツールを検討する必要があります。
ハンズオン
ハンズオンでは、テスト用のEC2インスタンスを作成し、そのインスタンスに関して以下を行います。
- メトリクスの確認
- アラームの設定
- ログの収集
※当ページでは2023年3月現在のCloudWatchについて解説します。クラウドサービスは頻繁にアップデートが施されるため、仕様が若干変わる可能性があります。
ログイン
まずは、AWS公式ページからAzureにログインしましょう。
EC2の作成
CloudWatchでの監視対象となる”test-cw-ec2″というEC2インスタンスをAmazon Linuxにて作成します。EC2インスタンスの詳細な作成手順に関しては、【AWS】EC2とは?徹底解説!をご参照下さい。
CloudWatchへのアクセス
CloudWatchはAWSアカウントを作成すると自動的にデプロイされます。
検索バーにて”CloudWatch”と入力し、”CloudWatch”を押下します。
CloudWatchには複数のタブが存在します。頻繁に使うのは、アラーム・ログ・メトリクスです。
- アラーム:設定したアラームについて確認します。
- ログ:収集したログを確認します。
- メトリクス:収集したメトリクスを確認します。
メトリクスの確認
CloudWatchはAWSアカウントを作成すると自動的にデプロイされます。
検索バーにて”CloudWatch”と入力し、”CloudWatch”を押下します。
遷移先にて、”すべてのメトリクス”タブを押下します。
参照タブ配下のEC2 > ・自動ダッシュボードを表示を押下します。
EC2を作成し数分経過すると、以下の様なEC2に関するメトリクスが表示されます。
CPU利用率やディスクの読み取り/書き取り、ネットワークのインバウンドトラフィック/アウトバウンドトラフィック、ディスク使用率などが表示されます。
アラームの設定
アラームを設定するにはアラーム状態のタブに移動し、”アラームの作成”を押下します。
メトリクスと条件の指定
まず対象とするメトリクスを指定する必要があります。今回は作成したテスト用EC2のアラームを設定したいので、”メトリクスの選択”を押下した後、EC2のメトリクスを設定します。
EC2を選択します。
“インスタンス別メトリクス”を押下します。
次に、先程作成した”test-cw-ec2″の何に関するメトリクスに対してアラートを付与するかを指定します。今回はCPU利用率とします。選択したら、”メトリクスの選択”を押下します。
メトリクス を選択したら、メトリクスに関して設定を行います。
- メトリクス名:任意のメトリクス名を付与します。今回はデフォルトのままにします。
- InstanceID:作成したEC2のインスタンスIDを指定します。メトリクスを指定すると自動で値が入力されるので変更不要です。
- 統計:収集したデータの集計方法を指定します。平均値や合計、最小値、最大値など様々な選択肢があります。今回は”平均値”を設定します。
- 期間:収集したメトリクスデータを集計する間隔を指定します。デフォルトでは5分となっています。間隔が短いほど素早く問題を特定できますが、5分より短い期間を選択するとコストが増加します。
続いて条件について設定します。
- しきい値の種類:以下の2種類があります。今回は”静的”を指定します。
- 静的:指定した値を基にアラートを出します。
- 異常検出:機械学習モデルによりメトリクスの異常なパターンを検出する機能です。
- CPUUtilizationが次の時…:条件を指定します。今回はアラートを発生させる為に”以下”を選択します。
- …よりも:しきい値を設定します。今回はアラートを発生させる為に”10″とします。
上記の設定が完了したら”次へ”を押下します。
アクションの設定
通知の設定では、通知先やアラームのトリガー条件を指定します。
- アラーム状態トリガー:アラートをトリガーする条件を指定します。以下の3つのオプションがあります。
- アラーム状態:メトリクスが指定したしきい値の範囲外となっている場合にアラームを出します。
- OK:メトリクスがしきい値を超えていない場合にアラームが”OK”という状態となります。システムの健全性を継続的に監視する際に利用します。
- データ不足:期限内に十分なメトリクスデータが収集されない場合に、アラームをデータ不足状態にします。
- 次のSNSトピックに通知を送信:通知を受信するSNS(Simple Notification Service)を定義します。今回は”test-cw-topic”という新しいトピックを作成します。
- 通知の送信先:通知を受けるメールアドレスを登録します。
Auto Scalingアクションでは、Auto ScalingがCloudWatchアラームに基づいて起動する自動アクションを定義します。今回は不要なので割愛します。
EC2アクションは、CloudWatchのアラームに基づいてEC2に対するアクション(インスタンスの停止・削除など)を定義します。今回は不要なので割愛します。
System Managerアクションでは、CloudWatchアラームがトリガーされた時にAWS Systems Managerを使用して実行するアクションを定義します。
上記の設定が完了したら”次へ”を押下します。
名前と説明を追加
名前と説明では、アラーム名を付与します。今回は”test-cw-alarm”とします。
上記が完了したら”次へ”を押下し、遷移先で、”アラームの作成”を押下します。
アラームを作成した段階で、指定したメールアドレスに以下の様なSNSへの登録確認メールが届きます。”Confirm subscription”を押下し、メール通知を有効化しましょう。
数分後、アラートメールが届けば正しく設定が出来ています。
ログの収集
ログの収集を行うには以下の4ステップを踏む必要があります。
- IAMロール(cloudwatchagentserverpolicyロール)を作成する
- IAMロールをEC2に付与
- EC2へのCloudWatch Logsエージェントのインストール
IAMロールの作成
検索バーより、”IAM”と入力し、”IAM”を押下します。
IAMにてロールタブより、”ロールを作成”を押下します。
信頼されたエンティティにて”AWSのサービス”を、ユースケースにて”EC2″を指定し、”次へ”を押下します。
許可を追加にて、”CloudWatchAgentServerPolicy”を選択し、”次へ”を押下します。
名前、確認、および作成にて、”test-cw-role”と命名し、作成します。
IAMロールをEC2に付与
EC2のインスタンスタブより、作成した”test-cw-ec2″を選択し、アクション>セキュリティより”IAMロールを変更”を押下します。
先程作成した”test-cw-role”を選択し、”IAMロールの更新”を押下します。
EC2へのCloudWatch Logsエージェントのインストール
EC2へのエージェントインストールを行います。
EC2へSSH接続をし、”sudo yum install awslogs”のコマンドを実施します。
次に/etc/awslogsのディレクトリに移動します。
awscil.confファイル開き、regionをCloudWatchがデプロイされているリージョン(ap-northeast-1)へ変更します。
次に”sudo service awslogsd start”コマンドを実施します。
続いて、”sudo systemctl enable awslogsd”コマンドを実施します。
CloudWatchのロググループタブに行くと、新しいロググループが作成されています。作成されたロググループを押下します。
ログストリームを押下します。
以下の様にEC2のログイベントが確認できます。
関連記事