AWS初心者学習⑩ ~CloudWatchについて~

今回は、CloudWatchについて書いていきたいと思います。

CloudWatchは、AWSが提供する監視機能です。
CloudWatchは、lambdaやSNSと連携させることで、運用が非常に楽になります。
私は、業務でZabbixを担当していたことがありますが、よく言えば柔軟な監視ができるのでなかな苦労しました。 なので、費用などで問題がなければ、サーバーレスであるCloudWatchの方が便利そうに感じます!

では、今回もAWSの公式サイトを参考にまとめていきたいと思います。

CloudWatch

CloudWatchでは、アプリケーションを監視し、システム全体におけるパフォーマンスの変化に対応して、リソース使用率の最適化を行い、運用上の健全性を統括的に把握するためのデータと実用的なインサイトが提供されます。CloudWatchは、ログ、メトリクス、およびイベントという形式でモニタリングデータと運用データを収集し、AWSとオンプレミスのサーバーで実行されるAWSのリソース、アプリケーション、およびサービスの統合されたビューをユーザーに提供します。CloudWatchを使用して、環境内における異常動作の検知、アラームの設定、ログとメトリクスを平行させた視覚化、自動化されたアクションの実行、問題のトラブルシューティング、およびインサイトの検出を行い、アプリケーションのスムーズな実行を維持することができます。

要するに、AWSもオンプレも、アプリもリソースもサービスも詳細に監視、分析できますよーってことです!

CloudWatchを利用するメリット

アプリケーションとインフラストラクチャ全体に対する単一プラットフォームでのオブザーバビリティ(可視性)

近代的なアプリケーションは、メトリクス、ログ、およびイベントといった形式で大量のデータを生成します。Amazon CloudWachでは、単一のプラットフォームでAWSとオンプレ両方のリソース、アプリケーション、サービスデータ情報を取得、収集可能です。データを分析するために役立ち、システム全体の可視性を確保して、問題をすばやく解決することが可能になります。

AWSおよびオンプレミスでメトリックスを収集するための最も簡単な方法

CloudWatchを使用することにより、AWSのリソースとアプリケーションのモニタリングが簡単にできます。AWSの70を超える機能を詳細に監視可能です。オンプレミスの環境でも、CloudWatchエージェントもしくはAPIを使用することで監視可能です。

運用パフォーマンスとリソース最適化の向上

CloudWatchには、事前定義された閾値、または移乗動作を識別する機械学習アルゴリズムのいずれかに基づいてアラームを設定し、アクションを自動化することが可能です。 CloudWatch Eventsを使用すれば、lambdaやSNS、CloudFormationなどのサービスでワークフローをトリガーにすることができます。

運用可視性とインサイトの取得

パフォーマンスとリソース使用率を、最適化するために必要な詳細なデータ(最大1秒に細分化されたデータ)を、長期間(最大15カ月間)保存可能です。 Metric Mathを実行すると、それら運用データを分析することができます。

ログからの実用的なインサイトの獲得

CloudWatchでは、運用上の問題を簡単にトラブルシュートできるように、ログを調査、分析、視覚化することが可能です。CloudWatch Logs Insightsでは、実行するクエリにのみ課金されます。
CloudWatchダッシュボードを使用し、ログベースのメトリクスを作成し、アラームを設定することでログと」メトリクスを相互に関連付けることが可能です。

実際のCloudWatch画面

以下の画像は、前回Lambdaの記事を書いた際に実施した、S3のCSVファイルをJSONファイルに変換するlambdaのログです。
f:id:Tk24:20191214212523p:plain 「テキストがUTF-8じゃねえ!!」って怒られてますね。。(笑)
こんな感じにlambdaが想定通りの結果にならないような場合でも、CloudWatch Logsで確認すれば原因を特定できたりします。

lambdaに関しては、特に何も設定しなくてもモニタリングタブからログを確認することができます。 f:id:Tk24:20191214212543p:plain

運用イメージ

また、実際の運用で使う際は、こんな感じのイメージだと思います。

  1. webサーバー用インスタンスをCloudWatchが監視しています。(ログやCPU使用率など) f:id:Tk24:20191214212622p:plain

  2. webサーバー用インスタンスAで障害が発生します。
    f:id:Tk24:20191214212659p:plain

  3. それをCloudWatchが検知します。
    f:id:Tk24:20191214212715p:plain

  4. webサーバー用インスタンスAで障害が発生したことをSNSに連携し、運用担当者にメールなどで連絡がいきます。 f:id:Tk24:20191214212729p:plain

その他にも、CloudWatch Eventsを使用することで「CPU使用率が90%を超えたらサーバを再起動させる」、「プロセスが落ちたことを検知したら、プロセスを再起動させる」など自動で障害対応させることも可能です。

※ログファイルの監視をする際は、対象のサーバーにCloudWatchのエージェントを入れる必要があります。

以上です。

次回はCloudTrailについて書きたいと思います。