Posted at

Amazon Linux 2 LTSにCloudWatch Logsをインストール・設定する

More than 1 year has passed since last update.


IAMポリシー作成

{

"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Effect": "Allow",
"Resource": "arn:aws:logs:*:*:*"
}
]
}


IAMロール作成

作成したIAMポリシーをIAMロールに紐付ける


IAMロール割り当て

作成したIAMロールをwebサーバに割り当てる


CloudWatch Logsインストール

sudo su -

yum update -y
yum install -y awslogs

# 東京regionを設定
cp -ip /etc/awslogs/awscli.conf /etc/awslogs/awscli.conf.org
diff /etc/awslogs/awscli.conf.org /etc/awslogs/awscli.conf
# 差分の無いことを確認

vi /etc/awslogs/awscli.conf
# =====vi ここから=====
region = ap-northeast-1
# =====vi ここまで====

diff /etc/awslogs/awscli.conf.org /etc/awslogs/awscli.conf
# 編集した差分を確認

# 取得したいログファイルを設定
cp -ip /etc/awslogs/awslogs.conf /etc/awslogs/awslogs.conf.org
diff /etc/awslogs/awslogs.conf.org /etc/awslogs/awslogs.conf
vi /etc/awslogs/awslogs.conf
# =====vi ここから=====
[general]
state_file = /var/awslogs/state/agent-state

[MessagesLog]
file = /var/log/messages
log_group_name = MessagesLog
log_stream_name = {instance_id}
datetime_format = %b %d %H:%M:%S

[SecureLog]
file = /var/log/secure
log_group_name = SecureLog
log_stream_name = {instance_id}
datetime_format = %b %d %H:%M:%S
# =====vi ここまで====

diff /etc/awslogs/awslogs.conf.org /etc/awslogs/awslogs.conf
# 編集した差分を確認

mkdir -p /var/awslogs/state/
ls -ld /var/awslogs/state/
# ディレクトリが存在することを確認

# サービス起動
systemctl status awslogsd.service
systemctl start awslogsd.service
systemctl status awslogsd.service
# 起動していることを確認

# サービスの自動起動有効化
systemctl is-enabled awslogsd.service
systemctl enable awslogsd.service
systemctl is-enabled awslogsd.service
# enableであることを確認


確認

「AWSコンソソールのサービス>CloudWatch>ログ」に

ロググループ「MessagesLog」と「SecureLog」が作成されていれば成功です


参考記事

https://www.yamamanx.com/aws-cloudwatch-logs-ec2-nginx/

https://dev.classmethod.jp/cloud/aws/awslogs-amazonlinux2/