2026-02-18

AWS CloudWatch Synthetics: Canary Kullanım Rehberi

A
<p>Uygulamalarınızın çalıştığından emin olmak için sadece sunucu metriklerine bakmak yeterli değildir. Kullanıcılarınızın deneyimini simüle ederek, olası sorunları onlar fark etmeden önce tespit etmeniz gerekir. İşte <strong>AWS CloudWatch Synthetics</strong> tam olarak bunu sağlar.</p> <div class="toc"> <h3>İçindekiler</h3> <ul> <li><a href="#nedir">CloudWatch Synthetics Nedir?</a></li> <li><a href="#canary-turleri">Canary Türleri</a></li> <li><a href="#nasil-calisir">Nasıl Çalışır?</a></li> <li><a href="#adim-adim-kurulum">Adım Adım Kurulum</a></li> <li><a href="#ornek-kod">Örnek Canary Kodu</a></li> <li><a href="#izleme-ve-alarm">İzleme ve Alarm</a></li> <li><a href="#sss">Sıkça Sorulan Sorular (SSS)</a></li> </ul> </div> <h2 id="nedir">CloudWatch Synthetics Nedir?</h2> <p>AWS CloudWatch Synthetics, uygulamalarınızın uç noktalarını (endpoints) ve API'lerini izlemenizi sağlayan yönetilen bir servistir. Bu servis, <strong>Canary</strong> (Kanarya) adı verilen yapılandırılabilir script'ler kullanarak, uygulamanızda belirli aralıklarla testler çalıştırır. Canary'ler, Node.js veya Python tabanlı script'lerdir ve uygulamanızın trafiğini, kullanıcı davranışlarını taklit ederek (headless browser kullanarak) izler.</p> <h2 id="canary-turleri">Canary Türleri</h2> <p>CloudWatch Synthetics, farklı ihtiyaçlar için çeşitli Canary türleri (blueprints) sunar:</p> <ul> <li><strong>Heartbeat Monitor:</strong> Belirli bir URL'nin erişilebilir olup olmadığını, gecikme süresini ve ekran görüntüsünü kontrol eder. En temel izleme türüdür.</li> <li><strong>API Canary:</strong> REST API'lerinizi (GET, POST, PUT vb.) test etmek için kullanılır. Yanıt sürelerini ve dönen verinin doğruluğunu kontrol eder.</li> <li><strong>Broken Link Checker:</strong> Web sitenizdeki kırık linkleri tarar.</li> <li><strong>Visual Monitoring:</strong> Sayfanın görsel olarak değişip değişmediğini kontrol eder (Visual regression testing).</li> <li><strong>GUI Workflow Builder:</strong> Kod yazmadan, tıklama ve gezinme senaryoları oluşturmanızı sağlar.</li> </ul> <h2 id="nasil-calisir">Nasıl Çalışır?</h2> <p>Canary'ler, arka planda AWS Lambda fonksiyonları üzerinde çalışır. Sizin belirlediğiniz sıklıkta (örneğin her 5 dakikada bir) tetiklenirler. Headless Chrome (Puppeteer) veya Selenium kullanarak web sayfanıza gider, butonlara tıklar, formları doldurur veya API istekleri atarlar. Her çalışmanın sonucunda başarı/başarısızlık durumu, ekran görüntüleri (screenshot), HAR dosyaları (ağ istekleri) ve loglar CloudWatch ve S3'e kaydedilir.</p> <h2 id="adim-adim-kurulum">Adım Adım Kurulum</h2> <p>Basit bir Heartbeat Canary oluşturmak için aşağıdaki adımları izleyebilirsiniz:</p> <ol> <li><strong>CloudWatch Konsoluna Gidin:</strong> AWS Yönetim Konsolu'nda CloudWatch servisini açın ve sol menüden "Synthetics Canaries" seçeneğine tıklayın.</li> <li><strong>Canary Oluşturun:</strong> "Create Canary" butonuna basın.</li> <li><strong>Blueprint Seçin:</strong> "Heartbeat Monitoring" seçeneğini işaretleyin.</li> <li><strong>Yapılandırma:</strong> <ul> <li><strong>Name:</strong> Canary'nize bir isim verin (örn: <code>my-app-monitor</code>).</li> <li><strong>Application URL:</strong> İzlemek istediğiniz URL'i girin.</li> </ul> </li> <li><strong>Schedule (Zamanlama):</strong> Testin ne sıklıkla çalışacağını belirleyin (örn: 5 dakika).</li> <li><strong>Data Storage:</strong> Test sonuçlarının (ekran görüntüleri, loglar) saklanacağı S3 bucket'ı seçin.</li> <li><strong>Oluşturun:</strong> "Create Canary" butonuna basarak işlemi tamamlayın.</li> </ol> <h2 id="ornek-kod">Örnek Canary Kodu</h2> <p>CloudWatch Synthetics, Node.js Puppeteer kütüphanesini kullanır. Aşağıda basit bir sayfa başlığı (Title) kontrolü yapan Canary örneği bulunmaktadır:</p> <pre><code class="language-javascript"> var synthetics = require('Synthetics'); const log = require('SyntheticsLogger'); const pageLoadBlueprint = async function () { // İzlenecek URL const URL = "https://example.com"; let page = await synthetics.getPage(); const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000}); // HTTP durum kodunu kontrol et if (!response || response.status() < 200 || response.status() > 299) { throw "Failed to load page!"; } // Sayfa başlığını al ve logla let title = await page.title(); log.info("Page title: " + title); // Ekran görüntüsü al await synthetics.takeScreenshot('loaded', 'loaded'); }; exports.handler = async () => { return await pageLoadBlueprint(); }; </code></pre> <h2 id="izleme-ve-alarm">İzleme ve Alarm</h2> <p>Canary oluşturulduktan sonra, "Availability" (Erişilebilirlik) ve "Latency" (Gecikme) metrikleri otomatik olarak CloudWatch Metrics'e gönderilir. Bu metrikler üzerinden CloudWatch Alarms oluşturarak, siteniz erişilemez olduğunda veya çok yavaşladığında e-posta (SNS) ile bildirim alabilirsiniz.</p> <h3 id="sorun-giderme">Sorun Giderme</h3> <p>Bir test başarısız olduğunda, detaylı inceleme için:</p> <ul> <li><strong>Screenshots:</strong> Hatanın olduğu anın ekran görüntüsüne bakın.</li> <li><strong>Logs:</strong> Lambda loglarını inceleyerek hatanın koddan mı yoksa ağdan mı kaynaklandığını anlayın.</li> <li><strong>HAR File:</strong> Ağ isteklerinin (Network requests) dökümünü inceleyerek hangi kaynağın (resim, script vb.) yüklenmediğini tespit edin.</li> </ul> <h2 id="sss">Sıkça Sorulan Sorular (SSS)</h2> <h3>1. CloudWatch Synthetics ücretli mi?</h3> <p>Evet, CloudWatch Synthetics çalıştırılan her Canary testi başına ücretlendirilir. Ayrıca, testlerin oluşturduğu loglar (CloudWatch Logs) ve saklanan veriler (S3) için de standart ücretler uygulanır.</p> <h3>2. Canary script'leri hangi dilleri destekler?</h3> <p>Şu anda Node.js (Puppeteer) ve Python (Selenium) çalışma zamanlarını desteklemektedir.</p> <h3>3. Özel VPC içindeki uygulamaları izleyebilir miyim?</h3> <p>Evet, Canary'nizi bir VPC'ye bağlayarak, internete açık olmayan dahili (internal) uygulamalarınızı da izleyebilirsiniz.</p> <p>Daha fazla bilgi ve teknik destek için <a href="/tech/aws-consultancy">AWS Danışmanlığı</a> veya <a href="/tech/kubernetes-consultancy">Kubernetes Danışmanlığı</a> sayfalarımızı ziyaret edebilirsiniz.</p> <p>Kaynak / Source: <a href="https://awsfundamentals.com/blog/aws-cloudwatch-synthetics" target="_blank" rel="noopener noreferrer">https://awsfundamentals.com/blog/aws-cloudwatch-synthetics</a></p>