Pazar, Aralık 22, 2024

Sunucudaki Logların AWS CloudWatch Üzerine Aktarılması

amazon aws cloudwatch, amazona log gönderimi, aws üzerinden log takibi, günlük takibi

Merkezi log yönetimi oldukça zahmetli ve bir o kadarda önemli bir konudur, bu noktada mümkün olduğunca az kurulum yaparak çok iş yapmamız önemlidir. AWS alt yapısını kullanıyorsanız CloudWatch gibi güzel bir nimet dururken başka servisler kullanmak yersiz kalır.

Agent kurulumu

Şimdi sistemdeki logların aktarımı sırasında bir agent gerekiyor bize, EC2 kurulumu sırasında bu işi otomatik yapabilirsiniz veya daha sonradan sisteme dahil edebilirsiniz bu opsiyonu size AWS sunuyor.

Güvenlik yapılandırmaları tamamen size kalmış durumda, agentimizi sistemimize çekelim.

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O

Ardından indirdiğimiz dosyada gerekli adımları yapmanız gerekiyor. Bunu başarabilmek içinde uygulamayı şu şekilde çalıştırmalıyız.

sudo python3 awslogs-agent-setup.py --region eu-central-1

Gereken adımları bundan sonra siz gerektiği gibi yapabilirsiniz, gerekli olan AWS keyinizi tanımlayıp adımlara devam edin.

API anahtarının izinleri aşağıdaki gibi olmak zorunda, buna göre siz gerekli role ve access tanımını gerçekleştirin.

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

Logların CloudWatch üzerine aktarılması için /var/awslogs/etc/awslogs.conf dosyasını aşağıdaki gibi düzenleyip çıkın, size gerekli olan logları almayı unutmayın.

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

[messages]
file = /var/log/messages
log_group_name = /var/log/messages
log_stream_name = {hostname}
datetime_format = %b %d %H:%M:%S
initial_position = start_of_file
log_group_name = system-messages-logs

[access.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/nginx/access.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = nginx-access-logs

[ufw.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/ufw.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = firewall-logs

[auth.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/auth.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = ssh-auth-logs

[kern.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/kern.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = kernel-logs

[daemon.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/daemon.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = daemon-logs

[supervisord.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/supervisor/supervisord.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = supervisord-logs

[postgresql-10-main.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/postgresql/postgresql-10-main.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = postgresql-logs

[awslogs.log]
datetime_format = %b %d %H:%M:%S
file = /var/log/awslogs.log
buffer_duration = 5000
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = awslog-agent-logs

Ardından çalışan servisi yeniden başlatın işlem tamamdır.

systemctl restart awslogs