Amazon CloudWatchは最近、アプリケーション、OS、カスタムログのためのログファイルの監視とストレージを追加した。また、Windows Server向けに幅広いログのサポートを拡張した。
Amazon CloudWatchはAWSクラウドリソースを監視し、"リソースの使用、アプリケーションの性能、運用状態を視覚的に確認できる"。EC2インスタンス、DynamoDBのテーブル、RDS DBインスタンスなどほとんどのリソースタイプで使え、アプリケーションやサービスのメトリクスを収集し、追跡することもできる。
ユーザはカスタムアラートを作成し、閾値を設定して、アラームの変化を捉えて、通知を受け取ったり、自動アクションを起こしたりさせることができる。注目すべきはAuto Scalingを使ってユーザが定義した条件でEC2を動的に拡大したり縮小したりできる(詳細は以前の記事を参照)。
Amazon CloudWatchはアプリケーション、オペレーティングシステム、カスタムログを監視し、保存する。"永続的ストレージ"の保持期間は、デフォルトで不定であり、最小で1日まで短くできる。期間、値、パターン、構成可能なフィルタでログを監視できる。検知はCloudWatchのメトリクスで確認でき、アラームを設定できる。例えば、特定の文字列("NullReferenceException"というような)やログデータの特定の位置に特定の文字列が発生した回数(例えば、Apacheのアクセスログの"404"ステータスコード)のような条件で監視できる。
フィルタによるログ監視と警告に注力しているのは、他のLogging as a Service (LaaS)との大きな違いだ。 LaaSのほとんどはリアルタイム検索を提供している。CloudWatchのログはAWS Management Consoleでストリーミングで見ることができるが、ログのリアルタイム検索はまだ提供されていない(AWSチームによれば検討中)。
CloudWatchのログ監視を理解するには次の4つの概念を把握する必要がある。
- ログイベント – アプリケーションや監視対象のリソースが記録したレコード
- ログストリーム – ログイベントの流れ
- ログルグープ – ログストリームのグループ。保持しているログ、監視、アクセスコントロールの設定を共有する。
- メトリクスフィルタ – 記録されたイベントからメトリクスを抽出し、CloudWatchのデータポイントに変換する方法を定義する。
メトリクスフィルタはログイベントを文字列や期間、値、CloudWatchで計測した発生回数で検索して、アクション可能なインサイトを提供する。フィルタはメトリクス名、名前空間、値、フィルタパターンで構成されており、期間や値で抽出をするだけでなく、ApacheのHTTPの転送バイトのようなスペースで区切ったログイベントから値を抽出できる。文字列("=, != and *")と数値(">, <, >=, <=, =, and !=")には条件演算子とワイルドカードを使って、値の抽出ができる。
フィルタはCloudWatchのコンソールで作成、検証できる。また、PutMetricFilterのAPI経由で作成し、TestMetricFilterで50のログイベントメッセージのサンプルを使って検証することもできる。次の例ではmAWS CLIを使ってフィルタを作成し、"4*"というワイルドカードを使って4xxのHTTPステータスコードをすべてカウントし、"$size"変数を使ってApacheのログの転送バイトを抽出している。
% aws logs put-metric-filter \ --log-group-name MyApp/access.log \ --filter-name BytesTransferred \ --filter-pattern '[ip, id, user, timestamp, request, status_code=4*, size]' \ --metric-transformations \ metricName=BytesTransferred,metricNamespace=YourNamespace,metricValue=$size
ログイベントはAWS CLI経由、またはAWS SDKのAPIを使って取得できる。ログイベントはLinuxとWindowsのCloudWatchログエージェントでも収集できる。エージェントはアプリケーションやOSのログを追跡し処理するように構成できる。エージェントはデフォルトで5秒に一度、ログを転送する。
Linuxの場合は、ログエージェントはPythonベースのエージェントであり、EC2のユーザデータ経由で配置できる。また、コマンドラインでセットアップすることもできる。このブログ記事にはインストールと構成について書いてある。CloudWatchログはAmazonのアプリケーションマネジメントサービス、Amazon Elastic Beanstalk、AWS CloudFormation、AWS OpsWorksに統合されている。
Windowsの場合は、エージェントはEC2Configサービスに統合されており、Windowsのイベントログやパフォーマンスカウンタ(PCW)、イベントトレーシング(ETW)ログ、 IISリクエストログ、その他のカスタムログファイルに基づいたログ送信をサポートする。mた、CloudWatchメトリクスを性能カウンタとして利用できるようにしている。このブログ記事では、構成の方法を説明しています。
Amazon CloudWatch Logsは現時点では、us-east-1、us-west-2、eu-west-1で利用可能。ただし、他のリージョンのログも収集はできる。CloudWatchのドキュメントには開発者ガイド、CloudWatchとCloudWatch LogsのAPIリファレンス、CloudWatch Logsエージェントのリファレンス、AWS CLIリファレンスのCloudWatch Logsの章が含まれている。Amazon CloudWatchフォーラムでサポートを受けられる。価格は従量課金。AWSはCloudWatchの無料枠を提供している。