AWS 第37回『押さえておきたいCloudWatchの基本機能』

こんにちは、DIS AWS推進チームです。

運用監視には欠かせないAWSのサービス「CloudWatch」の基本的な機能をご紹介します。
CloudWatchは、AWSリソースやアプリケーションのパフォーマンス、可用性などに関する情報をリアルタイムで収集、分析、可視化するサービスです。
今回はEC2の監視にフォーカスを当てて紹介していきます。

CloudWatchの機能

以下の図はCloudWatchの概要を示したものです。サービスやシステムを監視し、取得した内容に応じてアクションを設定することができます。本コラムでは図中央の「CloudWatch Metrics」「CloudWatch Logs」を中心にご紹介します。

メトリクスとは

メトリクスは時間間隔で計測された利用状況などのデータを数値で表現したもので、サーバーやシステムの状況把握に利用されます。CloudWatch Metricsには大きく分けて2種類のメトリクスが存在します。

標準メトリクス

デフォルトでCloudWatchに取得されるメトリクスです。AWSサービスの利用を開始すると自動で取得されます。メトリクス取得の間隔は5分です。EC2の場合、CPUUtilization(CPU使用率)やNetworkIn/NetworkOut(インスタンスへの受信/送信トラフィック)などのメトリクスが標準メトリクスに該当します。その他の標準メトリクスは公式ページをご確認ください。

カスタムメトリクス

標準メトリクスでは取得できないメトリクスは全てカスタムメトリクスとなります。CloudWatchエージェントやCLI、APIを通して内部システム全体のメトリクスを収集することができます。EC2の場合、mem_used_percent(使用中のメモリの割合)やdisk_used_percent(ディスクの利用割合)などのメトリクスがカスタムメトリクスに該当します。
標準メトリクス、カスタムメトリクスのどちらも数クリックで以下のようにグラフ化して確認することができます。

CloudWatchアラームの活用

取得したメトリクスに閾値を設定してCloudWatchアラームを作成すると、状態が変わったときのアラームアクションを指定することができます。メトリクスアラームには以下の3種類があります。2つ以上のアラームを組み合わせた複合アラームを作成することも可能です。

メトリクスアラームの状態

CloudWatch アラームの送信先にはEC2、Lambda、SNS、Auto Scaling、Systems ManagerでのOpsItem作成・インシデント作成の操作が選択可能です。例えば、CPU利用量が閾値を上回った場合にSNSと連携して管理者に通知を発報することが可能です。EventBridgeを介すことでより様々なサービスと連携することもできます。

各サービスのアラームの推奨事項も公開されているため、閾値の設定に迷った際は参考にしてみてください。

作成したアラームの状況はダッシュボードから確認することもできます。今回はCPU使用率が30%を超えた時にアラート状態になるアラームを作成してみました。作成方法は本コラムでは割愛しますが、目視でアラームの状態も確認できて便利ですね。

◆平常時

◆アラート時

ログ収集

ログを取得するとシステムで何が起こっているのかを確認したり、ふるまいを解析したりするのに活用することができます。
CloudWatch Logsでは下図のようにログがディレクトリ階層で保持されます。ロググループはCloudWatchエージェントの設定によって単位を変更することができるため、ミドルウェア単位やアプリケーション単位でのログの集約が可能です。

実際のログイベントはタイムスタンプとログメッセージで構成されています。下図はELBのヘルスチェックのログの例です。ログメッセージからイベントの内容を把握することができます。

料金

今回紹介したCloudWatch機能の主な料金体系は以下の通りです。

その他料金の詳細については料金ページをご確認ください。

料金例

ウェブアプリケーションのアクセスログを使用し、3つのメトリクスを 30日間 モニタリングする場合の料金を試算してみました。前提条件は以下です。
・ログデータ(スタンダード):1GB/日
・メトリクスの種類:標準メトリクス
・ログ保存(アーカイブ):6GB/月
※無料枠を考慮しない

<取り込まれたログの月額料金>
取り込まれたログデータの合計 1GB × 30日 = 30GB
0.76USD × 30GB = 22.8USD

<モニタリングの月額料金>
標準メトリクス3個の場合
3個 × 0USD = 0USD

<アーカイブされたログの月額料金(データが6GBに圧縮される場合)>
0.033USD × 6GB = 0.198USD

<CloudWatchの月額料金>
22.8USD + 0USD + 0.198USD = 22.998USD

まとめ

AWSの監視サービス、CloudWatchをご紹介しました。今回は割愛させていただきましたが、簡単にメトリクスやアラームのダッシュボードを作成できたり、独自のクエリ言語でのログの検索・分析も対応していたりと幅広く活用いただけるサービスです。導入時には初期費用が掛からず、必要な情報のみを取得して従量課金ですぐにご利用いただくことができます。CloudWatchを活用して問題の早期発見やパフォーマンス改善に役立て、クラウドビジネスを加速させましょう!

参考URL

最後までお読みくださりありがとうございました。

--Let's Enjoy Amazon Web Services!

マルチクラウドの記事