AWS
CloudWatch
CloudWatchLogs

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


事前準備

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

image.png


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