AmazonLinux2上で動かしているアプリケーションのログをCloudWatchから見れるようにするための手順を自分用にメモ。
ざっくり言うと、EC2にCloudWatch用の権限を持っているIAMロールをアタッチした上で、エージェントをインストールすればOK。
IAMロールの作成
IAMロールの作成画面
このロールを使用するサービス
アタッチするポリシー
「CloudWatchLogsFullAccess」を選択。
ポリシー名はリンクになっていてクリックするとポリシー画面に遷移するので注意。
ロールの名前とか説明とか
あとはロール名とかロールの説明を適当に設定して、ロールの作成は完了。
ロールの割り当て
ロールの設定は以上。
エージェントのインストール
エージェントのインストール。
「awslog」ではなく「awslogs」なので注意。
$ sudo yum install awslogs
confのリージョンをバージニア北部リージョン(us-east-1)から東京リージョン(ap-northeast-1)に変更。
$ sudo vim /etc/awslogs/awscli.conf
[plugins]
cwlogs = cwlogs
[default]
region = ap-northeast-1
サービス起動。
$ sudo service awslogsd start
エージェントはデフォルトで「/var/log/messages」というログを送信するように設定されている。
そのため、サービスを起動するとそのログがAWSのコンソールから確認できるようになる。
※上三つのロググループは別のテストをしていた時の物なので関係なし。
取得するログの追加
取得対象を設定しているコンフィグファイルを修正する。
今回は[myapp]を追加した。
data_formatの設定方法は以下のサイト参照。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/AgentReference.html
$ sudo vim /etc/awslogs/awslogs.conf
~略~
[/var/log/messages]
datetime_format = %b %d %H:%M:%S
file = /var/log/messages
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/messages
[myapp]
datetime_format = %Y-%m-%d %H:%M:%S
file = ファイルのパス
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = /var/log/myapps
おわり。
もっと細かい情報はamazonの公式サイト参照(丸投げ)