No.483
【AmazonLinux2023】システムログのCloudWatch連携【AWS】
AL2023ではCloudWatch周りがいろいろ変わってる
Amazon Linux 2(以下AL2)までは awslogs パッケージで CloudWatch との連携がサクッとできたのだが、Amazon Linx 2023(以下AL2023)では変更されている。
パッケージ名や設定ファイルも変わっているので注意しよう。(正確には前から amazon-cloudwatch-agent パッケージはあったが)
また、システムのログも標準では journald だけとなっており、 /var/log/ 以下にファイルが作成されなくなっている。
こちらは rsyslog パッケージをインストールすればファイルとして出力されるようになる。CloudWatch との連携では必要になるのでインストールしておこう。
rsysylog と amazon-cloudwatch-agent パッケージ
AL2023では amazon-cloudwatch-agent パッケージを利用する。あわせて使用する rsyslog パッケージも合わせてインストールしよう。
yum install rsyslog amazon-cloudwatch-agent
systemctl start rsyslog
systemctl enable rsyslog
systemctl start amazon-cloudwatch-agent
systemctl enable amazon-cloudwatch-agent
amazon-cloudwatch-agent の設定はウィザードを使って作成する手順が紹介されいている。
ウィザードを使用して CloudWatch エージェント設定ファイルを作成する
しかし、はっきり言って面倒くさい。
ログの転送程度なら手動で書いた方が絶対早い。ファイル名は /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json 固定で、記述形式は json 形式だ。
例えば /var/log/message を転送するなら下記のように書けば良い。保持期間は無期限(-1)にしてあるが、そこは適宜変更すること。
vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/messages",
"log_group_name": "/var/log/messages",
"log_stream_name": "{instance_id}",
"retention_in_days": -1
}
]
}
}
}
}
ファイル作成後の再起動を忘れずに。
なお、記述にミスがあると再起動が失敗してしまう。必ず起動したことを確認しよう。