AWS CloudWatch Servisi, CloudWatch Logs ve Events

AWS CloudWatch Servisi, CloudWatch Logs ve Events

Merhaba Arkadaşlar,
Mobilhanem.com sitemizden anlattığımız Amazon Web Service derslerimize AWS CloudWatch Servisi dersi ile devam ediyoruz.AWS CloudWatch Servisini en basit şekliyle AWS’nin monitoring servisi diye düşünebiliriz. Nerdeyse diğer bütün AWS servisleriyle entegrasyonu olan CloudWatch, monitoring yanısıra alerting ve logging hizmetlerini de içermektedir.

CloudWatch servisinde bilmeniz gereken temel kavramları sırasıyla anlatmaya çalışalım.

Namespaces: Yukarda belirttiğimiz gibi CloudWatch AWS’nin birçok servisiyle birlike çalışabilmektedir ve servislerden gelen metrikler namespace parametresi ile birbirlierinden izole edilir. Böylelikle farklı servislerden gelen metriclerin yanlışlılkla birlikte kümelenmesi (aggregate) edilmesi engellenir. CloudWatch’a gelen bütün metriklerin bir namespace field’ı olmak zorundadır. Varsayılan (default) bir namespace yoktur. Örnek birkaç namespace fieldları şöyledir:

ServiceNamespace
EC2 AWS/EC2
S3 AWS/S3
Elastic Load Balancing AWS/ELB (Classic Load Balancers)
Elastic Load Balancing AWS/ApplicationELB (Application Load Balancers)

Bütün namespace’lere şu linkten ulaşabilirsiniz : Namespaces

Metrics: CloudWatch servisinin temel yapı taşı gibi düşünülebilir. Bir metric CloudWathc’a gelen ve zamana göre sıralanmış data noktalarında oluşur. Örneğin; bir EC2 instance’ı tarafından CloudWatch’a gönderilen CPU kullanımı metriği, zaman içerisinde o instance tarafından kullanılan CPU data noktalarını gösterir. Bu data noktaları (data point) AWS’nin herhangi bir servisinden veya sizin kendi uygulamalarınızdan CloudWatch’a gönderiliyor olabilir.
Metric’ler sadece yaratıldıldığı region’da kalır ve silinemezler. Fakat 15 aylık periyodlarla otomatik olarak silinir. Herbir metrik bir namespace ve bir ve birden fazla dimension ile diğer metriklerden ayırt edilir. Örnek AWS EC2 metrikleri aşağıda listelenmiştir.

 

AWS’de bulunan metrikleri şu linki takip ederek görebilirsiniz.

Dimensions: Dimension bir metriği ayırt etmek için kullanılan name/value çiftidir. Bir metriğe 10 taneye kadar dimension eklenebilir. Her mertriğin kendisini ifade eden karakteristik özellikleri vardır, dimenion’u karakteristik özellikleri belirten kategoriler olarak düşünebiliriz. Dimension; metriği tanımlayan bir parça olduğu için, metriğe yeni bir dimension eklenildiğinde aslında o metriğin yeni bir varyasyonu oluşturulmuş olur. AWS servisleri CloudWatch’a yolladıkları metriklere dimension argümanlarını otomatik olarak eklerler. Örneğin: EC2 servisi yolladığı metriklere InstanceId dimension’unu ekler ki, o instance’dan gelen metriklere kolaylıkla erişebilelim.

AWS servisleri tarafından üretilen metrikler, CloudWatch tarafından çaprazlama aggreagate edilebilir. Örneğin herhangi bir dimension belirtmeden, AWS/EC2 namespace’inde bulunan metrikler CloudWatch tarafından istatistik oluşturmak için aggregate edilir. Fakat sizin CloudWathc’a yolladığınız metrikler için bu geçerli değildir.

Dimensions: Server=Prod, Domain=Frankfurt, Unit: Count, Timestamp: 2016-10-31T12:30:00Z, Value: 105
Dimensions: Server=Prod, Domain=Rio, Unit: Count, Timestamp: 2016-10-31T12:32:00Z, Value: 95

Dimensions: Server=Beta, Domain=Frankfurt, Unit: Count, Timestamp: 2016-10-31T12:31:00Z, Value: 115
Dimensions: Server=Beta, Domain=Rio, Unit: Count, Timestamp: 2016-10-31T12:33:00Z, Value: 97

Dimensions: Server=Prod, Domain=Frankfurt, Unit: Count, Timestamp: 20161031T12:30:00Z, Value: 105

Dimensions: Server=Prod, Domain=Rio, Unit: Count, Timestamp: 20161031T12:32:00Z, Value: 95

 

Dimensions: Server=Beta, Domain=Frankfurt, Unit: Count, Timestamp: 20161031T12:31:00Z, Value: 115

Dimensions: Server=Beta, Domain=Rio, Unit: Count, Timestamp: 20161031T12:33:00Z, Value: 97

Mesela yukardaki metriklerin CloudWatch’da olduğunu varsayalım. Bunlar bizim yolladığımız custom metrikler olduğu için, CloudWathc çaprazlama aggreation yapamayacak. Yani “Server-Prod” veya “Server=Beta” dimensionları ile aggregation yapılamaz.

Statistics: Statistics’ler metriklerin spesifik zaman aralığında aggregate edilmiş halidir. Aşağıdaki tabloda kullanabileceğiniz CloudWatch statisticsleri listelenmiştir.

StatisticsDescription
Minimum Belirlenen zaman aralığında görülen en düşük değerdir.
Maximum Belirlenen zaman aralığında görülen en yüksek değerdir.
Sum Belirlenen zaman aralığındaki data pointlerinin toplanmış halidir.
Average Belirlenen zaman aralığındaki ortalamasıdır. ( Sum/Sample Count )
Sample Count Belirlenen zaman aralığındaki data pointlerinin sayısıdır
pNN.NN Yüzden belirtmek için kullanılan statistics çeşididir.

Units: Her statistics bir unit’e sahiptir. Örnek unit’ler Bytes, Seconds, Count veya Percent.

Periods: Bir statistic için verilen zaman aralığıdır. Bütün statistics’ler için bir zaman aralığı verilmelidir. Period’lar saniye cinsinde ifade edilir ve geçerli period değerleri 1, 5, 10, 30 ve 60’ın katlarıdır. Mesela 6 dakikalık periyodu 360 saniye olarak ifade edebiliriz. Bir period minimum 1 saniye maximum 1 gün (86,400 saniye) uzunluğunda olabilir.

Aggregation: AWS CloudWatch statistics’leri oluştururken belirlen periyoddaki aggreate eder. CloudWathc farklı kaynaklardan gönderilen metrikleri ayırt etmez namespace’i ve dimensionları aynı olduğu sürece. Gelen bütün metrikler sanki tek metrikmiş gibi davranılır. Böylelikler dağıtık sistemlerden gelen metrikler aggreate edilerek, sistem bazında metrikler incelenebilir.

Percentiles: A percentile data point havuzundaki bir değerin göreceli değerini gösterir. Örneğin: 95 percentile data havuzundaki % 95 pointlerin verilen değerden küçük, kalan % 5 lik pointelerin ise verilen değerden büyük olduğunu gösterir. Percentile genellikle sistemdekl anomalileri tespit etmek için kullanılır.

Alarms: Alarmlar belirlenen periodlar içerisinde bir metriği takip eder ve yine belirlenen sınırlar geçildiğinde sizin belirlediğiniz aksiyonları alırlar. SNS kullanılarak bir notification atılabilir veya Auto Scaling policy tetiklenebilir. Cloudwatch alarmları belirlediğiniz aksiyonları hemen çağırmaz. Çağrılaması için belirlediğiniz sınırların yine sizin belirlediğiniz periyod sayısınca sınırların dışında oluyor olması gerekir.

Cloudwatch events

CloudWatch Event’lerinde bilmeniz gereken temel 3 kavram vardır.

Events: Bir event AWS servislerinizdeki bir değişikliği ifade eder. Örneğin EC2 instance’larınızı başlarken “pending” durumundan “running” durumuna geçerken bir event oluşturur. AWS Cloudtrail servisi yine aynı şekilde yaptığınız bütün API isteklerinizde event’ler oluşturabilir. Bunun yanısıra kendinizde CloudWatch üzerinden uygulama levelinde eventler oluşturabilir ve CloudWatch’a publish edebilirsiniz. AWS de desteklenen bütün eventlere şu listeden erişebilirsiniz.

Targets: Eventleri işleyen birimdir ve eventler JSON formatında targetlara ulaştırılır. AWS desteklenen targetlar:

  • Amazon EC2 instances,
  • AWS Lambda functions,
  • Kinesis streams,
  • Amazon ECS tasks,
  • Step Functions state machines,
  • Amazon SNS topics,
  • Amazon SQS queues, and built-in targets

Rules: Rule gelen eventlerin hangi targetlar tarafından işleneceginin belirlendiği birimdir. Bir rule ile birden fazla target trigger edilebilir ve AWS tarafından bütün rulelar paralel olarak işlenir. Yani belirlediğiniz rulelar bir sıraya göre işlenmez. Rule ile gelen JSON eventleri değiştirilebilir ve filtrelenebilir.

Cloudwatch logs

Bir kısım AWS servislerinin logları CloudWatch Logs altında toplanır. EC2, CloudTrail, Route 53 gibi servilerden gelen loglar burada depolanıp monitor edilebilir. CloudWacth Logs’un kullanılabildiği temel alanlar:

  • EC2 instancelardan gelen loglar
  • CloudTrail eventleri
  • Lambda Functionlarında gelen loglar
  • Route 53 DNS sorgularının logları

Diğer AWS yazılarımıza buradan ulaşabilirsiniz.

0

Yorum Yap
0 Yorum yapan