クラウド時代になったのでログの管理もAWS上でやろう。CloudWatchは初めて触れるので公式ドキュメントを読みながら理解を深めていきます。
CloudWatch Logs では何ができるの?
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 を始める方法
CloudWatch Logsを使ってログ管理をはじめるには2つの選択肢があります。
- 統合された CloudWatch エージェントを使う(推奨)
- 以前の CloudWatch Logs エージェントを使う
CloudWatchエージェントの使用が推奨されていて、古いエージェントはサポートされているものの移行するよう促されています。この記事でもCloudWatchエージェントを使う方法について触れます。
ちなみに、古いエージェントから新しいエージェントに移行する場合、新しいエージェントパッケージに含まれているウィザードを使うと、同じログを収集できるようにしてくれます。
CloudWatchエージェントをインストールする
CloudWatchエージェントは、Amazon Linux 2のパッケージとして使うことができます。インストール方法は簡単で、次のコマンドを実行するだけです。
sudo yum install amazon-cloudwatch-agent
IAMロールに CloudWatchAgentServerPolicy が付与されている必要があることにだけ注意します。
yumがインストールしているパッケージは下記コマンドで一覧できるのでgrepして確認しておきます。
yum list installed
他に次の方法でもダウンロードすることができます。
- Systems Manager Run Command を使用する
- Amazon S3 ダウンロードリンクを使用する
CloudWatchエージェントの設定ファイルを作成する
CloudWatchエージェントを起動する前に、設定ファイルを作成する必要があります。設定ファイルは、収集するメトリクスとログを指定したJSON形式のファイルです。
設定ファイルの作成方法は、
- ウィザードを使って作成する
- 手動で作成する
- ウィザードを使って作ってから編集する
などがあります。設定ファイルの変更を反映するには、エージェントを再起動する必要があります。
…続きは後日。