CloudWatch Logsでログを管理する方法

クラウド時代になったのでログの管理もAWS上でやろう。CloudWatchは初めて触れるので公式ドキュメントを読みながら理解を深めていきます。

CloudWatch Logs では何ができるの?

What is Amazon CloudWatch Logs? - Amazon CloudWatch Logs
Describes the fundamentals, concepts, and terminology you need to know for using CloudWatch Logs to monitor, store, and access log files from Amazon Elastic Com...

CloudWatch Logsを使うとEC2インスタンスをはじめとするAWSリソースからログファイルをモニタリング、保存、アクセスできます。これまでサーバにssh接続してログファイルをgrepしていたときと比べて、次のようなメリットがあります:

  • 複数のリソースのログを1つのサービスで一元管理できる
  • CloudWatch Logsはスケールする
  • ログを表示、エラーコードやパターンで検索、特定の要素でフィルタリングできる
  • ソースによらずに一貫した時間順にみることができる

CloudWatch Logsの機能の中でも特徴的なものをさらに詳しくみてみます。

CloudWatch Logs Insights

CloudWatch Logsには Insights という機能があります。専用のクエリ言語でログデータをインタラクティブに検索・分析できる機能です。

直近の25件のログを検索する例:

fields @timestamp, @message | sort @timestamp desc | limit 25

1 時間あたりの例外の数のリストを取得する例:

filter @message like /Exception/ 
    | stats count(*) as exceptionCount by bin(1h)
    | sort exceptionCount desc

ログのモニタリング

ログデータを使ってアプリケーションやシステムをモニタリングすることができます。

例えば、

  • アプリケーションログ中のエラー数が一定の閾値を超えたら通知する
  • アプリケーションログに特定の文字列がないかモニタリングする
  • Apacheアクセスログに404ステータスの発生数をカウントする

といったことができる。これらのモニタリングがログだけで実現可能で、アプリケーションのコードに変更を加える必要がありません。

ログの保持期間

デフォルトではログを無制限に保持することができます。もちろん、ロググループごとに保持期間を設定することもできて、1日~10年の間で保持期間を選択できます。

ログデータをアーカイブする

収集したログは耐久性の高いストレージにアーカイブしておいて、あとで必要になったときに生データにアクセスすることも可能です。

CloudWatch Logs を始める方法

Getting started with CloudWatch Logs - Amazon CloudWatch Logs
Explains how to get started using CloudWatch Logs to collect and store logs from your servers.

CloudWatch Logsを使ってログ管理をはじめるには2つの選択肢があります。

  1. 統合された CloudWatch エージェントを使う(推奨
  2. 以前の CloudWatch Logs エージェントを使う

CloudWatchエージェントの使用が推奨されていて、古いエージェントはサポートされているものの移行するよう促されています。この記事でもCloudWatchエージェントを使う方法について触れます。

ちなみに、古いエージェントから新しいエージェントに移行する場合、新しいエージェントパッケージに含まれているウィザードを使うと、同じログを収集できるようにしてくれます。

CloudWatchエージェントをインストールする

Installing the CloudWatch agent - Amazon CloudWatch
Explains how to install the CloudWatch agent to collect metrics, logs, and traces from Amazon EC2 instances and on-premises servers.

CloudWatchエージェントは、Amazon Linux 2のパッケージとして使うことができます。インストール方法は簡単で、次のコマンドを実行するだけです。

sudo yum install amazon-cloudwatch-agent

IAMロールに CloudWatchAgentServerPolicy が付与されている必要があることにだけ注意します。

yumがインストールしているパッケージは下記コマンドで一覧できるのでgrepして確認しておきます。

yum list installed

他に次の方法でもダウンロードすることができます。

  • Systems Manager Run Command を使用する
  • Amazon S3 ダウンロードリンクを使用する

CloudWatchエージェントの設定ファイルを作成する

Create the CloudWatch agent configuration file - Amazon CloudWatch
Explains how to create the CloudWatch agent configuration file, either using the wizard or creating it manually.

CloudWatchエージェントを起動する前に、設定ファイルを作成する必要があります。設定ファイルは、収集するメトリクスとログを指定したJSON形式のファイルです。

設定ファイルの作成方法は、

  1. ウィザードを使って作成する
  2. 手動で作成する
  3. ウィザードを使って作ってから編集する

などがあります。設定ファイルの変更を反映するには、エージェントを再起動する必要があります

…続きは後日。

タイトルとURLをコピーしました