CloudWatch(Logs)とCloudTrailについて
はじめに
AWSが提供する監視サービスであるAmazon CloudWatchですが、これを利用することによりシステム全体の可視性を確保して、問題を素早く解決することが可能です。また、AWS CloudTrailは、AWSのAPI操作にたいする監査機能です。AWSの各種サービスはすべてAPIを使って利用します。このAPI利用履歴についてすべて保管し、監査することで、誰がいつどこから何をしたのか確認することができます。これをCloudWatch Logsに保管することで、ログに保管されたタイミングで確認でき、通知などを行うことができます。今回はこのような機能を持つAWS Cloudwatch、AWS CloudTrailの概要についてご紹介いたします。
Amazon CloudWatchとは
Amazon CloudWatch(以下、CloudWatch)は、AWSクラウドリソースとAWSで実行されるアプリケーションの監視サービスです。CloudWatchを使用することで、メトリクスの収集/ログの収集/モニタリング/アラームの設定を行えます。またEC2インスタンス/RDS/DynamoDBなどのAWSリソースを監視し、ダッシュボードにグラフを表示したり、閾値を設定してアクションを実行したりできます。
AWSリソースの監視を行うCloudWatchは、CloudWatch/CloudWatch Logs/CloudWatch Eventsという3つのサービスで構成されています。CloudWatchは、AWS上で稼働するAWSサービスのメトリクスを収集し、死活監視.性能監視/キャパシティ監視を行います。CloudWatch LogsはAWSのログ監視サービスで、AWSマネージドサービスのログやEC2インスタンス上のOS/アプリケーションのログを取得します。CloudWatch Eventsは、AWS上にあるリソースの状態の変更をトリガーとしてアクションを実行する機能を提供します。
CloudWatchを構成するサービス | 役割 | 機能 |
---|---|---|
CloudWatch | AWSのシステム監視サービス | AWSサービスのメトリクスの収集、閾値によるアラーム通知 |
CloudWatch Logs | AWSのログ管理サービス | AWSマネージドサービスのログ管理、EC2インスタンスのOS/アプリケーションのログ管理 |
CloudWatch Events | AWSリソースの状態監視サービス | AWSリソースの変更をトリガーとしてアクションを実行 |
CloudWatch
多くのAWSサービスはCloudWatchによる監視をサポートしており、対応しているAWSサービスから各サービスで定義されたメトリクス(監視対象のパフォーマンス項目、例えばCPU使用率など)が収集されます。AWSサービスがデフォルトで収集する標準メトリクス以外にも、ユーザが任意のデータを独自に収集するカスタムメトリクスも設定可能です。EC2インスタンスの場合、標準で監視可能なメトリクスと、CloudWatchエージェントをインストールすることによりEC2インスタンスのOS情報を収集できるメトリックがあります。例えばCPU使用率は標準で収集されますが、CPU詳細はCloudWatchエージェントを利用しなければ収集されません。EC2インスタンスでは、5分間隔の基本モニタリングがデフォルトで、1分間隔の詳細モニタリングは有償で、明示的に有効にする必要があります。メトリクスの解像度(メトリクスを収集する間隔)は、標準で最小で1分間隔ですが、カスタムメトリクスは標準解像度が1分間隔で、高解像度では1秒間隔で収集できます。収集したメトリクスは保存期間が定められています。短い期間で収集されたメトリクスは集約されます。CloudWatchでは、5分間隔で収集されるメトリクスを基本モニタリングメトリクス、1分間隔で収集されるメトリクスを詳細モニタリングメトリクスと呼び、基本モニタリングと10個の詳細モニタリングメトリクスが無料で利用できます。ダッシュボードによりメトリクスのグラフを表示することもできます。
CloudWatchアラーム(以下、アラーム)は、CloudWatchの通知機能です。メトリクスを監視し、閾値を設定して、アラームを通知できます。アラームは3つの状態があり、閾値を下回るOK、閾値を超えた状態を示すALARM、アラームの状態が判定できない状態を示すINSUFFICIENT_DATAがあります。請求に関するアラームもあります。
CloudWatch Logs
CloudWatch Logsとはログ収集サービスです。対応しているAWSサービスのログを収集し、保存します。ログの保存期間を指定でき、1日から10年間の保持期間を指定するか、または保持期間を無制限とするか選択します。AWSサービスでCloudWatch Logsと連携できる主要サービスは、以下の通りです。
AWSサービス | CloudWatch Logsとの連携 |
---|---|
CloudTrail | AESサービスの操作を記録。AWSマネジメントコンソール/AWS CLI/AWS SDKで実行された操作を記録 |
Route 53 | DNSクエリのログを記録 |
Lambda | Lambda関数の実行時の出力を記録 |
VPC | VPCフローログを記録 |
SNS | SNSトピックの配信ステータスを記録 |
EC2 | アプリケーションおよびシステムのログを記録 |
RDS | データベースの監査ログ/エラーログ/全般ログ/スロークエリログを記録 |
CloudWatch Events
CloudWatch Eventsは、AWSリソースの変化をトリガーとしてアクションを実行できるサービスです。CloudWatch Eventsのコンポーネントは、イベント/ターゲット/ルールです。イベントは、対象となるAWSリソースの変化を示します。イベントのソースをしては、EC2/AutoScaling/CloudTrail/AWSマネジメントコンソールへのログイン/スケジュールイベントなどがあります。ターゲットとは実行する処理です。ルールは、定義したイベントソースとターゲットへのアクションの組み合わせを示します。ターゲットには、Lambda関数、SNS、SQSなどが設定できます。
Amazon CloudTrailとは
AWS CloudTrail(以下、CloudTrail)は、AWSサービスの操作を監視し、AWSアカウントのガバナンス/コンプライアンス/運用とリスクの監査を実施するためのマネージドサービスです。CloudTrailは、ユーザーのAWSマネジメントコンソールのログイン、ユーザーが実施したAWSサービスに関する設定変更/APIを利用した操作、およびAWSサービスが実施した操作など、AWSに対するアクティビティログを記録します。標準で90日間、アクティビティを各リージョンで記録しています。証跡を有効化すると、S3バゲットにアクティビティログを保存します。また、CloudWatch Logsへの送信を有効化すると、ログをCloudWatch Logsに送信できます。AWSコンソールまたはCloudTrail API/SDKを利用し、記録されているアクティビティを確認できます。
おわりに
今回はAWS Cloudwatch、AWS CloudTrailについての概要をご紹介させていただきました。
これらは、AWSを運用監視するうえで便利なサービスとなっています。管理者の手間を大幅に省くことができますので、ぜひこの機会に導入を検討してみてはいかがでしょうか?