AWS CloudWatch ve SNS Servisleri ile PagerDuty Entegrasyonu

aws
sns
cloudwatch
rds

(Fatih YARCI) #1

AWS CloudWatch ve SNS Servisleri ile PagerDuty Entegrasyonu

Bir sistem yöneticisinin en büyük sorumluluklarından biri; yönetiği servislerin durumundan/sağlığından, en doğru ve hızlı bir biçimde haberdar olmasıdır. AWS CloudWatch servisi; AWS üzerinde kullanılan tüm servisler için metrik toplamamıza olanak sağlar.

Bu yazıda AWS CloudWatch servisi ile topladığımız metrikleri, AWS SNS servisi yardımıyla PagerDuty pager servisine nasıl göndereceğimizi anlatacağım.

Örnek senaryoda; AWS RDS servisi üzerinde koşturduğumuz bir database’in anlık bağlantı sayısının belirlediğimiz bir değerin üzerine çıkması durumunda PagerDuty servisinin alarm üretmesini ve durumun normale dönmesi halinde alarmın otomatik olarak düzeltilmesini nasıl sağladığımı anlatacağım.

AWS SNS Servisi ile PagerDuty Entegrasyonu

İlk olarak PagerDuty servisi ile AWS SNS servisi entegrasyonunu tanımlıyorum. Create New Topic butonuna tıklayıp bir SNS Topic oluşturuyorum.

İsim olarak PagerDuty veriyorum. Sonrasında Create topic butonu ile SNS Topic’i oluşturuyorum.

Sonrasında oluşturduğum PagerDuty SNS Topic’ini seçip sağ üstte bulunan Actions menüsünden Subscribe to topic seçeneğine tıklıyorum.

Açılan sayfada Protocol kısmı için https’i seçiyorum. Endpoint kısmına ise PagerDuty konsolu üzerinden oluşturduğum service endpoint’ini giriyorum. Otomatik olarak bu subscribtion kabul edilecektir.

AWS CloudWatch Üzerinden Alarm Tanımlanması

CloudWatch sayfasında sol tarafta bulunan Alarms linkine tıklayıp, Create Alarms butonuna basıyorum.

Açılan ekranda, o anda ayakta olan servislerle ilgili ön tanımlı metrikler listeleniyor. RDS Metrics kısmından Per-Database Metrics linkine tıklayıp istediğim RDS instance’ı için alarm oluşturacağım.

Sol kolonda RDS Instance’ının ismi, sağ kolonda ise metrik ismi yazıyor. İstediğim instance için DatebaseConnections metriğini seçip sağ alta bulunan Next butonuna tıklıyorum.

Name kısmına alarmın ismini giriyorum ben örnekte TestDBConnections’ı kullandım. Bir altında alarmın hangi kurala göre üretiliceğini giriyorum, bağlantı sayısı 250’nin üzerine çıkması halinde AWS CloudWatch alarm üretecek. Actions kısmında ise alarm üretildiğinde veya alarm normale döndüğünde tetiklenecek olan aksiyonları tanımlıyorum. İki durum için de daha önceden oluşturmuş olduğum PagerDuty SNS Topic’ine bildirim gönderilmesini tanımlıyorum. Sağ tarafta ise gözlem periyodunun 5 dakikada bir olmasını belirliyorum. Create Alarm dediğimde CloudWatch alarmı tanımlanmış olacak ve eğer bu RDS instance’ı üzerinde bağlantı sayısı 250’nin üzerine çıkar ise CloudWatch bir alarm üretecek ve bunu SNS servisindeki PagerDuty SNS Topic’ine bildirecek, bu topic ise bunu PagerDuty servisine bildirecek ve Pager Duty servisi sizi uykunuzdan uyandıracak :). Bağlantının 250’nin altına düşmesi halinde aynı süreçler çalışacak ama bu sefer alarm çözülmüş olacak.

İleri kullanımlar ve detaylar için aşağıdaki linklere göz atabilirsiniz.

https://aws.amazon.com/tr/cloudwatch/

https://www.pagerduty.com/docs/guides/aws-cloudwatch-integration-guide/


(Serhat Can) #2

Merhaba Fatih, belki biliyorsundur ama PagerDuty’nin en büyük rakibi OpsGenie’nin kurucuları Türk ve tüm geliştirme ekibimizde Ankara’da. Bizim daha güçlü diyebileceğim AWS entegrasyonlarımız ile ilgilinen arkadaşlar da bana yazabilir veya OpsGenie üzerinden Türkçe bile yazarak müşteri destek ekibimizden daha ayrıntılı bilgi alabilir.

Daha güzeli ise 14 gün ücretsiz deneyebilirsiniz ve güçlü entegrasyonlarımızı & ürünümüzü PagerDuty ile kendiniz karşılaştırabilirsiniz.

İlgilenebileceğiniz bazı linkler:





(Fatih YARCI) #3

Merhaba Serhat, blog postumda gerçek hayattan örnekler vererek AWS servislerinin işleyen teknoloji operasyonlarına nasıl entegre edilebileceğini anlattım. Bunun rakibiniz şirketin reklamı gibi algılanması beni çok üzdü. Yazımı hazırlarken amacım kesinlikle reklam yapmak değil, AWS ile yaşadığım deneyimi diğer kullanıcılar ile paylaşmak ve yardımcı olabilmek idi. Sizler de benzer bir senaryoda Opsgenie entegrasyonunu bir blog postla anlatabillirseniz herkes için çok faydalı olacağına inanıyorum, malum bu konularda Türkçe içerik ve destek bulmak çok zor. Sevgiler.


(Serhat Can) #4

Bence güzel yazı olmuş. Reklam gibi algılamadım zaten. Sadece daha iyi bir Türk alternatifi olduğumuzu belirtmek istedim. İyi akşamlar :blush: