2&>1

AWSとかGCPとかGolangとかとか

Cloudwatch logをちゃんとやってみた

今更で恐縮です。

有用性は認識しつつもちゃんとしたことnないシリーズです。

インストールと実行

yum install -y awslogs
systemctl restart awslogsd
systemctl enable awslogsd

configを修正

cd /etc/awslogs
vi awscli.conf

regionを変更

region = us-east-1

region = ap-northeast-1

[plugins]
cwlogs = cwlogs
[default]
region = ap-northeast-1

cloudwatchへ送りたいログの設定

設定ファイルは以下

/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

[HttpdAccessLog]
datetime_format = %d/%b/%Y:%H/%M/%S
file = /var/log/httpd/access_log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /HttpdAccessLog

[/var/log/audit/audit.log]
file = /var/log/audit/audit.log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/audit/audit.log

[HttpdErrorLog]
datetime_format = %d/%b/%Y:%H/%M/%S
file = /var/log/httpd/error_log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /HttpdErrorLog

[SecureLog]
datetime_format = %d/%b/%Y:%H/%M/%S
file = /var/log/secure
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = /SecureLog

各設定はそれぞれ上から 1.ログの時間フォーマット(正しいフォーマットだと時間も表示できる) 2.ログイベントのバッチ期間(単位ms) 3.ロググループ内のストリーム名(インスタンス単位となるもの) 4.ログの読み込み位置(start or end) 5.ロググループ名

こんな感じでcloudwatchlogに出力される ロググループ一覧 f:id:piyojir0:20190507232648j:plain

ロググループ内のストリーム一覧 f:id:piyojir0:20190507232704j:plain

ストリームの中身 f:id:piyojir0:20190507232719j:plain

[追記(2019/05/09)] インスタンスに「Cloudwatchlog」のロールを割り当てましょう

まとめ

これでインスタンスSSHしなくてもログが確認できて楽できます!!

このままではずっとcloudwatchへログが吐き出され続けで溜まって行くだけです。

見づらくなってくるのである程度のログはS3へアーカイブしましょう。

その手順は別で。