EC2(Amazon Linux) に構築したアプリのログを CloudWatch に転送する


事前準備

EC2 から CloudWatch へアクセスできるように、EC2 に適用されているロールに CloudWatchLogsFullAccess を追加する。

awslogs のインストール

  • EC2 に SSH 接続
  • awslogs をインストール
    
    >sudo yum install awslogs -y
    

awslogs の設定変更

念のため既存設定をバックアップしておく


>cd /etc/awslogs/
>sudo cp awscli.conf awscli.conf.org
>sudo cp awslogs.conf awslogs.conf.org

awscli.conf の編集


>sudo vi awscli.conf

リージョン変更(おそらく転送先の CloudWatch のリージョンのこと)
  region = ap-northeast-1

終わったら、上書き保存する

awslogs.conf の編集

CloudWatch Logs エージェントのリファレンス - Amazon CloudWatch ログ
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/AgentReference.html


>sudo vi awslogs.conf

末尾のほうのセクションごと以下に書き換える。
元々存在する [/var/log/message] のセクションごと上書きして、以下のような設定にする。

例)ログファイルごと
[/logs/MyApp/MyAppLogin]
datetime_format = %Y-%m-%d %H:%M:%S
file = /logs/MyApp/MyAppLogin.log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /logs/MyApp/MyAppLogin

例)ログファイルまとめて
[/logs/MyApp]       
datetime_format = %Y-%m-%d %H:%M:%S     
file = /logs/MyApp/MyApp*.log       
buffer_duration = 5000      
log_stream_name = {instance_id}     
initial_position = start_of_file        
log_group_name = /logs/MyApp        

それぞれ以下のような意味
[]  セクション名(CloudWatch Logs のロググループ名とあわせておくとよさげ)
datetime_format = ログの日時フォーマット
file = ログファイルパス
buffer_duration = バッファ(おそらくこの時間分貯めて、送信している?)
log_stream_name = ロググループ内のストリーム名
initial_position = 初期ポジション(特に変える必要はないかな、、)
log _group_name = CloudWatch Logs のロググループ名

編集が終わったら、上書き保存する。

awslogs サービス制御


>sudo /etc/init.d/awslogs start
Starting awslogs:                                          [  OK  ]

>sudo chkconfig awslogs on
>sudo chkconfig --list | grep awslogs
awslogs         0:off   1:off   2:on    3:on    4:on    5:on    6:off

料金例

調べた時の料金です。(参考)
リージョン:ap-north-east1

サービス  料金 補足
S3 0.025 $/GB 標準ストレージ、最初の 50 TB/月
CloudWatch Logs 0.760 $/GB 取り込み GB あたり
CloudWatch Logs 0.033 $/GB GB あたりのアーカイブ
  • アーカイブ料金は S3 とそこまで大差ない
  • 取込料金が若干かかるので、ログ量が膨大な場合は料金に注意が必要

参考資料

AmazonLinux2のシスログをCloudWatch Logs に転送させてみた | Developers.IO
https://dev.classmethod.jp/cloud/aws/awslogs-amazonlinux2/

Amazon CloudWatch Logsを試してみる | 株式会社ビヨンド
https://beyondjapan.com/blog/2016/07/amazon-cloudwatch-logs