Posted at

awslogsでログをCloudWatchに連携する方法

More than 1 year has passed since last update.

awscliやlambdaなど、いろいろなところからCloudWatchに連携できますが、Amazon Linuxにたまったログをそのまま連携したい時もあります。

そんなときはawslogsが利用できるようです。


logのputだけじゃなくgetもできるようです。



準備


EC2へのIAMロールの関連付け

ログを出力するサーバにCloudWatchにログが出力可能なロールを紐付けておきます。

とりあえずCloudWatchFullAccessを紐付けました。


いつの頃からか、後からでも紐付けできるようになりました。

awslogsはEC2以外だと利用できないのですかね。。。できたら便利なのですが。



awslogsのインストール

sudo yum install awslogs


リージョンの設定 /etc/awslogs/awscli.conf


awscli.conf

[plugins]

cwlogs = cwlogs
[default]
-region = us-east-1
+region = ap-northeast-1


出力ログの設定 /etc/awslogs/awslogs.conf

デフォルトで[/var/log/messages]が追加されています。削除してもそのままでもいいかと思いますが、とりあえず、以下を追加します。

自分用のカスタムログです。ファイル名とかそういうのはお好みで。

datetime_formatを指定することで、ログの時間とCloudWatch上の表示を一致させてくれます(過去も含む)。

指定しなかったり、ミスマッチだったりすると、過去ログの時間は、取込時になるようです(当然ですがログ内のTimestampは書き換わりません)。


awslogs.conf


[/var/log/mysystem.log]
#[2018-05-12 18:25:15.982] 流し込みたいログのTimestamp
datetime_format = %Y-%m-%d %H:%M:%S.%f
file = /var/log/mysystem.log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/mysystem.log



利用


awslogsのstart

serviceコマンドで制御できるようです。

sudo service awslogs start


awslogsの永続化

chkconfigで永続化します。

sudo chkconfig awslogs on


ログの確認

うまくいっているとCloudWatchのログに出力されています(割愛)。

いや。ほんとに便利。


参考

以下のサイトが大変参考になりました。ありがとうございます。