AWS Üzerinde CloudWatch ile Alarm Oluşturma

Onur Yıldırım
BilgeAdam Teknoloji
5 min readApr 27, 2020
https://nub8.net/benefits-of-amazon-cloudwatch/

Merhaba, bu yazımda AWS üzerinde CloudWatch ile Alarm Oluşturma konusundan bahsedeceğim.

Amazon CloudWatch nedir?

Öncelikle uygulama kısmına geçmeden CloudWatch kavramları üzerinde durmanın yararlı olacağını düşünüyorum.

Amazon CloudWatch; basitçe anlatmak gerekirse AWS dünyasının monitoring(izleme) hizmetidir.

Amazon CloudWatch hizmetini kullanarak çeşitli ölçümleri ve günlük dosyalarını toplayıp izleyebilir ve alarmlar ayarlayabilirsiniz. Örneğin, bir Amazon EC2 bulut sunucusunun CPU kullanımı, Amazon DynamoDB tablo aktarım hızı, Amazon SQS kuyruk uzunluğu, hatta AWS faturanızda yer alan ücretler için çeşitli alarmlar oluşturabilirsiniz.

Amazon CloudWatch hizmeti ile sisteminizdeki kaynakların kullanımı, uygulamaların performansı ve operasyonel durumunuza ilişkin fikir elde edebilirsiniz. Bu verileri kullanarak sorunlara hızla yanıt verebilir ve uygulamanızın sorunsuz bir şekilde çalışmasını sağlayabilirsiniz. Örneğin; aşağıdaki grafikte yer aldığı gibi CloudWatch ile EC2 sanal makinalarınızın CPU kullanımını izleyebilirsiniz.

Tüm bu ve benzeri işlemleri yapan servislere bilişim dünyasında monitoring yani izleme sistemleri adı veriliyor.

Temelde izleme sistemleri ikiye ayrılır;

Altyapı izleme sistemleri, altyapıda konumlanan cihazların altyapı özelliklerini gözlemleyen ve raporlayan sistemlerdir.

Bir diğeri de sizlerin bu cihazlar içerisinde kullandığınız uygulamaların performans ve hatalarını ya da varsayılan davranışlarını ölçen uygulama izleme sistemleridir. CloudWatch altyapı izleme sistemleri için özelleşmiştir. Kısıtlı da olsa uygulama izleme özelliklerine de sahiptir.

CloudWatch ayrıca tüm bunları izlemeniz adına bir dashboard yaratmanıza izin verir. Bu konuda belirlediğimiz metriklerde daha önceden belirlediğimiz varsayılan değerler dışına çıkıldığında bize bunu haber verecek haber sistemleri kurulmasına izin verir.

CloudWatch, Alarm özelliğini kullanarak ve SNS(Simple Notification Service) ile birlikte daha önceden belirlediğimiz bir durum gerçekleşirse bize haber verebilir. Örnek verecek olursak; yine EC2 sanal makinemizin CPU kullanımı belirlediğimiz süre boyunca belirlediğimiz değerin üzerindeyse bize bir e-posta atacak şekilde ayarlanabilir. Böylece sistemimize ait eşik değerler belirleyebilir ve bu değerlere etki eden bir durum olduğunda ilgili kişiyi bilgilendirebiliriz.

Ayrıca; CloudWatch, oluşturduğumuz alarmları, events özelliğini tetikletecek şekilde yapılandırarak sorun çözümünü otomatize etmemize imkan tanır. Örneğin; EC2 sanal makinesinin CPU kullanımı %80'i geçerse auto-scaling ile Load Balancer arkasına yeni bir sanal makine ekleme işlemini CloudWatch eventleriyle gerçekleştirebiliriz.

Şimdi bir uygulama ile daha detaylı işleyebiliriz;

CloudWatch ile Alarm Oluşturma

Buraya kadar hep EC2 makineleri üzerinden örnekler verdik, şimdi de bu konu üzerinden bir alarm oluşturalım.

İlk olarak Servisler bölümünden EC2 servisine geçiyoruz. Burada yeni bir sanal makine oluşturarak CloudWatch servisinin özelliklerini daha detaylı ele alabileceğiz.

Öncelikle Launch Instance ile yeni bir EC2 oluşturuyoruz. AMI’mizi seçiyoruz. Instance Type’ı da seçtikten sonra “Configure Instance Details” bölümünde Monitoring seçeneğini enable durumuna getiriyoruz ve instance kurulumu için diğer adımları takip ediyoruz.

Eğer biz burada monitoring özelliğini açmaz isek bu makinenin metrikleri 5 dakikada bir cloudwatch servisi tarafından okunacak ve biz değişiklikleri 5 dakikada bir göreceğiz. Aktif duruma getirdiğimiz takdirde bu süre 1 dakikaya düşecek ve daha detaylı bilgi alabileceğiz.

Sanal Makinemiz oluşurken biz CloudWatch servisini daha detaylı inceleyelim.

Dashboard kısmında Create Dashboard ile bir dashboard oluşturarak incelediğimiz durumu bu ekran üzerinden takip edebiliriz. Bir grafik oluşturmak istediğimiz için Line’ı seçiyoruz ve ilerliyoruz.

Untitled Graph bölümüne grafiğe vereceğimiz adı giriyoruz. Grafiğin alt tarafında ekleyebileceğimiz metrikler gösteriliyor ve biz burada Instance’ın CPU kullanımını görmek istediğimiz için EC2 → Per-Instance adımlarını takip ediyoruz.

Sonraki adımda makinelerin listelendiğini ve inceleyeceğimiz durumu görebiliriz. Burada yarattığımız makinenin Cpu Utilization’unu görmek istediğimiz için bu seçeneği seçiyoruz.

CreateWidget Save Dashboard adımlarını takip ettiğimizde dashboard’umuzu görebiliriz.

Fakat görsel olarak görmek bizim için yeterli olmayabilir. Biz bu grafik için eşik değerler belirleyip bu eşik değerler aşılırsa haber almak isteyebiliriz.

Soldaki menüden Alarm kısmına geçiyoruz.

CreateAlarm→ Per-Instance ile tek bir makine için yaratabiliriz ya da Across All instances’ı seçerek tüm makinelerin kombinesi %80 geçerse alarm oluştur komutunu verebiliriz. Per-Instance’ı seçerek devam ediyoruz.

Metrik ismini tanımlayalım. Burada yeniden CreateAlarm→ Per-Instance’dan devam edelim.

Burada Conditions kısmında Eşit ve daha fazlayı seçiyoruz. Yani CPU Kullanımı %80'e eşit veya daha fazla olduğunda bize bildirim gönderecek.

Additional Configuration’da yer alan datapoints to alarm kısmı ise bizim her 5 ya da 1 dakikalık aralıklarımızdır. 1 out of 2 yaptığımız takdirde 2 kez kontrol edecek yani 10 dakika boyunca devam ederse bize alarm üretecek.

Missing data treatment kısmında ise ;

Eğer CloudWatch servisi bu dataya erişemezse bunu nasıl uygulasın, ne olarak işaretlesin ? Bunun cevabını buradan veriyoruz.

1)Thread missing data as missing( Bu veriyi alamadım olarak işaretle )

2)Thread missing data as good( Herhangi bir şey yapma,alarm oluşturma)

3)Thread missing data as ignore( Önemseme,durumun ne ise ona devam et )

4)Thread missing data as bad( Veriye ulaşamadığın anda bana alarm üret, %80'i geçip geçmediği önemli değil )

Next ile devam ediyoruz.

Notification kısmında ALARM üretiyoruz.

Bir SNS(Simple Notification Service) topic olmadığı için Create New Topic ile yeni bir topic oluşturuyoruz.

Hemen alt tarafta Auto Scaling action ekleyebilirim. Yani bu makine’ nin CPU Utilization’ı %80'i geçerse gider ve Auto Scaling ile yeni makineler oluşturabilir.

Bu bölümün de hemen altında bir EC2 Action mevcut; burada örneğin, alarm oluşursa bu makineyi yeniden başlat diyebilir, durdur diyebiliriz. Bu iki konuya daha sonraki makalelerimde değineceğim.

Next’i tıklayarak sonlandırıyoruz ve bize bir onaylama maili gönderiyor,bunu onaylıyoruz.

Şimdi makinemize Stress Tool yükleyerek bunu test edelim. Makinemize bağlanarak aşağıdaki komutları çalıştırıyoruz.

#Stress Toolu yüklemek için;yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmyum install stress #Makine üzerinde stress yaratmak için;stress --cpu 80 --timeout 2000

Aşağıdaki grafikte de görüldüğü gibi makinemiz’in CPU Kullanımı %80'i geçti ve CloudWatch bize bir alarm oluşturdu. Kayıt ettiğimiz mail adreslerine bu konuyla ilgili bir bilgilendirme maili gönderdi ve böylece sorun gerçekleştiğinde ilgili kişiler müdahale etme imkanı bulmuş oldu.

Okuduğunuz için teşekkürler, bir sonraki yazımda görüşmek dileğiyle..

--

--