Cloudwatch’a Log ve Metrik Aktarmak

Herkese merhaba.

Bu yazımda halihazırda çalışmakta olan EC2 Instancelarımızda ki logları Cloudwatch üzerinde görüntülemek ve memory, disk kullanımı gibi metrik değerleri de Cloudwatch’a aktarmayı öğreneceğiz. Cloudwatch üzerinde EC2 Instancelara ait default metriklerde memory ve disk kullanımı gibi metrikler mevcut değil. Bu metrikleri custom olarak Cloudwatch Agent yardımıyla biz aktaracağız. Agent kurulumuna başlamadan önce Instance’a gerekli rol atamasını gerçekleştirelim.

Öncelikle IAM’e girip Roles kısmından Create role diyerek yeni rol yaratıyoruz. AWS service ve EC2 seçimini yaptıktan sonra Next diyerek policy seçme ekranına geçiş yapıyoruz.

Arama kısmına CloudWatchAgentAdminPolicy yazarak policy’i seçiyoruz. Policy içeriğinde Cloudwatch’a metrik yollama LogGroup, LogStream oluşturma ve SSM’e parametre yollama ve parametre alma gibi izinler mevcut.

Next diyerek Tag ekleme kısmına geçiyoruz. Burası opsiyonel. Tagler ile servisleri takip etmemiz ve yönetmemiz daha kolay olacağı için eklemenizi tavsiye ederim. Next diyerek en son kısma geçip rol oluşturmayı tamamlıyoruz.

Rol oluşturduk şimdi oluşturduğumuz rolü Instance’ımıza atayalım. İlgili Instance’a gelerek Actions — Security — Modify IAM role adımlarını izleyerek açılan pencereden oluşturduğumuz rolü seçerek save diyelim.

Herşey hazır. Şimdi Instance’a bağlanıp Agent kurulumunu yapabiliriz.

Aşağıda ki komutları yazarak Agent’ı kuralım.

$ wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm 
$ sudo rpm -U ./amazon-cloudwatch-agent.rpm

Agent Configuration Wizard’ını çalıştırmadan önce aşağıda ki klasör ve dosyayı da oluşturalım.

$ sudo mkdir -p /usr/share/collectd
$ sudo touch /usr/share/collectd/types.db

Şimdi Agent Configuration Wizard’ını çalıştırabiliriz

$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

Wizard’ı çalıştırınca bizden bazı bilgiler isteyecek. Ben aşağıda ki Config’i basic monitoring ve 60 saniye olacak şekilde yaptım. Ayrıca log dosyası olarakta nginx access ve error log dosyalarını belirttim. Siz istediğiniz log dosyasını belirtebilir ve ismini ona göre girebilirsiniz.

Wizard tamamlandı. Configuration dosyasını /opt/aws/amazon-cloudwatch-agent/bin/config.json dizininde bulabilirsiniz. Şimdi aşağıda ki komutla Agent kurulumunu tamamlayıp metrik ve logları Cloudwatch’a aktarmaya başlayabiliriz. Aynı zamanda bu Config’i SSM’e aktaracağı için aynı Config ile diğer Instancelarımızda da sıfırdan Agent Wizard’ı ile uğraşmadan kurulumu tamamlayabiliriz.

$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-linux -s

Config dosyası aşağıda ki gibidir.

{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/nginx/access.log",
"log_group_name": "InstanceName-AccessLog",
"log_stream_name": "{instance_id}"
},
{
"file_path": "/var/log/nginx/error.log",
"log_group_name": "InstanceName-ErrorLog",
"log_stream_name": "{instance_id}"
}
]
}
}
},
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}

SSM’e baktığımız da gönderdiğimiz parametre gelmiş görünüyor.

Şimdi Cloudwatch’a bakıp log ve metrikleri kontrol edelim.

Evet loglar ve metrikler gelmeye başladı. Log dosyasına retention period uygulayabilir ve metriklerden ihtiyaca göre istediğimiz alarmı oluşturabiliriz. Bu işlemler esnasında bir hata almanız durumda yorumlarda belirtirseniz elimden geldiğince yardımcı olmak isterim.

Herkese iyi günler iyi çalışmalar.

--

--

Medium independent DevOps publication. Join thousands of aspiring developers and DevOps enthusiasts

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store