{"id":32088,"date":"2025-10-17T15:31:42","date_gmt":"2025-10-17T12:31:42","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/"},"modified":"2025-10-17T15:31:42","modified_gmt":"2025-10-17T12:31:42","slug":"awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/","title":{"rendered":"AWS&#8217;te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber"},"content":{"rendered":"<p>Uygulamalar\u0131n\u0131z\u0131n ve altyap\u0131n\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak takip etmek, sorunlar\u0131 proaktif bir \u015fekilde tespit etmek ve h\u0131zl\u0131ca m\u00fcdahale etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, AWS \u00fczerinde Terraform kullanarak nas\u0131l g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve otomatik bir log izleme ve uyar\u0131 sistemi kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan ileri seviyeye kadar t\u00fcm detaylar\u0131 \u00f6\u011frenin.<\/p>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme ve altyap\u0131 y\u00f6netimi s\u00fcre\u00e7lerinde, sistemlerin sorunsuz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak en temel \u00f6nceliklerden biridir. Ancak, karma\u015f\u0131k da\u011f\u0131t\u0131k sistemlerde her zaman beklenmedik durumlar ortaya \u00e7\u0131kabilir. \u0130\u015fte tam bu noktada loglar, sistemlerin &#8220;kara kutusu&#8221; haline gelir. Loglar, uygulaman\u0131z\u0131n veya sunucunuzun her an\u0131nda ne olup bitti\u011fine dair paha bi\u00e7ilmez bilgiler sa\u011flayan dijital ayak izleridir. Bir hatan\u0131n kayna\u011f\u0131n\u0131 bulmaktan, performans darbo\u011fazlar\u0131n\u0131 tespit etmeye, hatta g\u00fcvenlik ihlallerini anlamaya kadar geni\u015f bir yelpazede kritik rol oynarlar.<\/p>\n<p>Peki, bu kadar de\u011ferli bilgilere sahip loglar\u0131 sadece toplamak yeterli midir? Kesinlikle hay\u0131r. Y\u00fczlerce, binlerce hatta milyonlarca sat\u0131r log verisi i\u00e7erisinde manuel olarak gezinmek, i\u011fne aramak gibidir. \u0130\u015fte bu y\u00fczden ger\u00e7ek zamanl\u0131 log izleme ve uyar\u0131 sistemleri vazge\u00e7ilmezdir. Ger\u00e7ek zamanl\u0131 izleme, potansiyel bir sorun daha kritik hale gelmeden \u00f6nce an\u0131nda fark etmenizi sa\u011flar. \u00d6rne\u011fin, uygulaman\u0131z\u0131n belirli bir hata kodu d\u00f6nd\u00fcrmeye ba\u015flamas\u0131 veya bir sunucunun CPU kullan\u0131m\u0131n\u0131n aniden f\u0131rlamas\u0131 gibi durumlar, h\u0131zla ele al\u0131nmad\u0131\u011f\u0131nda b\u00fcy\u00fck kesintilere yol a\u00e7abilir. Bir ger\u00e7ek zamanl\u0131 uyar\u0131 sistemi sayesinde, bu t\u00fcr anormallikler belirlenen e\u015fik de\u011ferleri a\u015ft\u0131\u011f\u0131nda veya belirli bir \u00f6r\u00fcnt\u00fc tespit edildi\u011finde ilgili ekiplere otomatik bildirimler g\u00f6nderilir. Bu, olaylara m\u00fcdahale s\u00fcresini (MTTR &#8211; Mean Time To Resolution) \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r ve sistemlerinizin daha y\u00fcksek kullan\u0131labilirli\u011fe sahip olmas\u0131na katk\u0131da bulunur.<\/p>\n<p>Bu makalede, bu kritik ihtiyac\u0131 AWS&#8217;in g\u00fc\u00e7l\u00fc hizmetleriyle nas\u0131l kar\u015f\u0131layaca\u011f\u0131m\u0131z\u0131 ele alaca\u011f\u0131z. AWS CloudWatch, log toplama, depolama ve analizinde bize yard\u0131mc\u0131 olurken, Simple Notification Service (SNS) uyar\u0131lar\u0131m\u0131z\u0131 da\u011f\u0131tacak. T\u00fcm bu altyap\u0131y\u0131 ise Infrastructure as Code (IaC) felsefesiyle, yani kod arac\u0131l\u0131\u011f\u0131yla y\u00f6netilebilir ve tekrarlanabilir bir \u015fekilde Terraform ile in\u015fa edece\u011fiz. Terraform&#8217;un sa\u011flad\u0131\u011f\u0131 avantajlar sayesinde, bu sistemi farkl\u0131 ortamlara (geli\u015ftirme, test, \u00fcretim) kolayca da\u011f\u0131tabilir, versiyonlayabilir ve s\u00fcrd\u00fcrebiliriz. B\u00f6ylece, manuel yap\u0131land\u0131rma hatalar\u0131n\u0131 en aza indirerek hem h\u0131z hem de g\u00fcvenilirlik kazanm\u0131\u015f olaca\u011f\u0131z. Haz\u0131rsan\u0131z, bu heyecan verici yolculu\u011fa \u00e7\u0131kal\u0131m ve AWS \u00fczerinde ger\u00e7ek zamanl\u0131 log izleme ve uyar\u0131 sistemlerinin nas\u0131l kuruldu\u011funu ad\u0131m ad\u0131m ke\u015ffedelim.<\/p>\n<h2>Temel Kavramlar: AWS, Terraform ve Log Mekanizmalar\u0131 Nelerdir?<\/h2>\n<p>Ger\u00e7ek zamanl\u0131 bir log izleme ve uyar\u0131 sistemi kurmaya ba\u015flamadan \u00f6nce, projemizin temel yap\u0131 ta\u015flar\u0131n\u0131 olu\u015fturan AWS hizmetlerini ve Terraform&#8217;un prensiplerini anlamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu b\u00f6l\u00fcmde, bu kilit teknolojilerin ne i\u015fe yarad\u0131\u011f\u0131n\u0131 ve neden projemiz i\u00e7in ideal olduklar\u0131n\u0131 detayland\u0131raca\u011f\u0131z.<\/p>\n<h3>AWS CloudWatch ve CloudTrail&#8217;in G\u00fcc\u00fc Nas\u0131l Kullan\u0131l\u0131r?<\/h3>\n<p>AWS CloudWatch, Amazon Web Services&#8217;\u0131n izleme ve g\u00f6zlem hizmetidir. Log toplama, metrik izleme ve alarm olu\u015fturma yetenekleriyle bilinir. CloudWatch&#8217;\u0131 bir sistemin kalp at\u0131\u015flar\u0131n\u0131 izleyen bir elektrokardiyogram (EKG) cihaz\u0131 gibi d\u00fc\u015f\u00fcnebiliriz. Uygulamalar\u0131n\u0131zdan, altyap\u0131n\u0131zdan ve di\u011fer AWS hizmetlerinden loglar\u0131 merkezi bir konumda toplar ve depolar. Bu loglar daha sonra analiz edilebilir, filtrelenebilir ve belirli olaylara g\u00f6re metrikler olu\u015fturulabilir.<\/p>\n<ul>\n<li><strong>CloudWatch Logs:<\/strong> Uygulama loglar\u0131n\u0131, i\u015fletim sistemi loglar\u0131n\u0131, AWS Lambda, Amazon ECS gibi servislerin loglar\u0131n\u0131 ve daha fazlas\u0131n\u0131 toplar ve depolar. Loglar, belirli log gruplar\u0131 alt\u0131nda d\u00fczenlenir ve her log grubu i\u00e7erisinde log ak\u0131\u015flar\u0131 bulunur. Bu sayede, log verileriniz d\u00fczenli bir yap\u0131ya kavu\u015fur ve kolayca aranabilir hale gelir. Ayr\u0131ca, loglar i\u00e7in belirli bir saklama s\u00fcresi (retention policy) tan\u0131mlayarak depolama maliyetlerini optimize edebilirsiniz.<\/li>\n<li><strong>CloudWatch Metrics:<\/strong> AWS kaynaklar\u0131n\u0131zdan otomatik olarak metrikler toplar (CPU kullan\u0131m\u0131, disk I\/O, a\u011f trafi\u011fi vb.) ve kendi \u00f6zel metriklerinizi de yay\u0131nlaman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, uygulaman\u0131zdaki hata say\u0131s\u0131n\u0131 bir metrik olarak tan\u0131mlayabiliriz. Bu metrikler, sisteminizin performans\u0131n\u0131n ve sa\u011fl\u0131\u011f\u0131n\u0131n say\u0131sal g\u00f6stergeleridir.<\/li>\n<li><strong>CloudWatch Alarms:<\/strong> Tan\u0131mlad\u0131\u011f\u0131n\u0131z metrikler belirli e\u015fik de\u011ferlerini a\u015ft\u0131\u011f\u0131nda otomatik olarak bildirim g\u00f6nderen veya eylemler ger\u00e7ekle\u015ftiren mekanizmalard\u0131r. \u00d6rne\u011fin, bir sunucunun CPU kullan\u0131m\u0131 %90&#8217;\u0131n \u00fczerine \u00e7\u0131kt\u0131\u011f\u0131nda bir alarm tetikleyebiliriz. Bu alarmlar, sisteminizdeki anormallikleri h\u0131zla tespit etmenizi sa\u011flar.<\/li>\n<\/ul>\n<p>CloudTrail ise, AWS hesab\u0131n\u0131zdaki API etkinliklerini ve kaynak de\u011fi\u015fikliklerini kaydeder. G\u00fcvenlik denetimi, operasyonel sorun giderme ve uyumluluk i\u00e7in vazge\u00e7ilmezdir. CloudTrail, kimin, ne zaman, nerede hangi API \u00e7a\u011fr\u0131s\u0131n\u0131 yapt\u0131\u011f\u0131n\u0131 size g\u00f6stererek, hesab\u0131n\u0131zdaki t\u00fcm hareketlili\u011fin izini s\u00fcrmenizi sa\u011flar. \u00d6rne\u011fin, kritik bir S3 bucket&#8217;\u0131n izinsiz de\u011fi\u015ftirilmesi gibi durumlar\u0131 CloudTrail loglar\u0131 arac\u0131l\u0131\u011f\u0131yla tespit edebilirsiniz.<\/p>\n<h3>Terraform ile Altyap\u0131y\u0131 Kod Olarak Y\u00f6netmek Neden \u00d6nemli?<\/h3>\n<p>Infrastructure as Code (IaC), altyap\u0131n\u0131z\u0131 (sunucular, a\u011flar, veritabanlar\u0131 vb.) kod dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla y\u00f6netme ve sa\u011flama prati\u011fidir. Geleneksel manuel y\u00f6ntemlerin aksine, IaC altyap\u0131 da\u011f\u0131t\u0131m\u0131n\u0131 otomatikle\u015ftirmeyi, tutarl\u0131l\u0131\u011f\u0131 sa\u011flamay\u0131 ve hatalar\u0131 azaltmay\u0131 hedefler. Terraform, HashiCorp taraf\u0131ndan geli\u015ftirilen a\u00e7\u0131k kaynakl\u0131 bir IaC arac\u0131d\u0131r. \u00c7ok \u00e7e\u015fitli bulut sa\u011flay\u0131c\u0131lar\u0131n\u0131 (AWS, Azure, GCP gibi) ve di\u011fer platformlar\u0131 desteklemesiyle \u00f6ne \u00e7\u0131kar.<\/p>\n<ul>\n<li><strong>Deklaratif Yap\u0131:<\/strong> Terraform&#8217;da, altyap\u0131n\u0131z\u0131n nihai durumunu tan\u0131mlars\u0131n\u0131z (\u00f6rne\u011fin, &#8220;bir EC2 \u00f6rne\u011fi ve bir S3 kovas\u0131 istiyorum&#8221;). Terraform, mevcut durumu hedef duruma getirmek i\u00e7in gerekli ad\u0131mlar\u0131 otomatik olarak belirler ve uygular. Bu, &#8220;nas\u0131l yap\u0131laca\u011f\u0131n\u0131&#8221; de\u011fil, &#8220;ne yap\u0131laca\u011f\u0131n\u0131&#8221; belirtmeniz anlam\u0131na gelir.<\/li>\n<li><strong>Tekrarlanabilirlik:<\/strong> Kodlanm\u0131\u015f altyap\u0131, her zaman ayn\u0131 \u015fekilde da\u011f\u0131t\u0131labilir. Bu, geli\u015ftirme, test ve \u00fcretim ortamlar\u0131 aras\u0131nda tutarl\u0131l\u0131k sa\u011flar ve &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yor&#8221; sorununu ortadan kald\u0131r\u0131r.<\/li>\n<li><strong>Versiyon Kontrol\u00fc:<\/strong> Altyap\u0131 kodunu Git gibi versiyon kontrol sistemlerinde saklayabilirsiniz. Bu, de\u011fi\u015fikliklerin izlenmesini, geri al\u0131nmas\u0131n\u0131 ve i\u015fbirli\u011fini kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Durum Y\u00f6netimi (State Management):<\/strong> Terraform, da\u011f\u0131tt\u0131\u011f\u0131 kaynaklar\u0131n mevcut durumunu bir &#8220;state&#8221; dosyas\u0131nda (genellikle <code>terraform.tfstate<\/code>) tutar. Bu dosya, Terraform&#8217;un altyap\u0131n\u0131z\u0131 y\u00f6netmek i\u00e7in bir referans noktas\u0131d\u0131r. B\u00fcy\u00fck projelerde bu state dosyas\u0131n\u0131 S3 gibi merkezi ve g\u00fcvenli bir yerde saklamak \u00f6nemlidir.<\/li>\n<\/ul>\n<p>Terraform, AWS kaynaklar\u0131m\u0131z\u0131 tan\u0131mlarken, CloudWatch log gruplar\u0131ndan SNS konular\u0131na kadar her \u015feyi kod arac\u0131l\u0131\u011f\u0131yla olu\u015fturmam\u0131z\u0131, g\u00fcncellememizi ve silmemizi sa\u011flayacak. Bu sayede, karma\u015f\u0131k bir log izleme sistemini birka\u00e7 komutla kurabilir ve y\u00f6netebiliriz.<\/p>\n<h3>Log Kaynaklar\u0131ndan Uyar\u0131 Mekanizmalar\u0131na Ge\u00e7i\u015f Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>Bir log izleme sisteminin temel ad\u0131mlar\u0131 genellikle \u015fu \u015fekildedir: Log Toplama, Log Ta\u015f\u0131ma, Log Depolama, Log Analizi ve Log Uyar\u0131lar\u0131. Bu makale kapsam\u0131nda odaklanaca\u011f\u0131m\u0131z ana ak\u0131\u015f:<\/p>\n<ol>\n<li><strong>Log Kaynaklar\u0131:<\/strong> EC2 \u00f6rnekleri \u00fczerindeki uygulamalar, AWS Lambda fonksiyonlar\u0131, ECS\/EKS konteynerleri, API Gateway gibi hizmetler log \u00fcreten ba\u015fl\u0131ca kaynaklard\u0131r. Bu loglar, genellikle CloudWatch Logs&#8217;a g\u00f6nderilir.<\/li>\n<li><strong>CloudWatch Logs:<\/strong> Toplanan loglar burada merkezi olarak depolan\u0131r ve y\u00f6netilir.<\/li>\n<li><strong>CloudWatch Metric Filters:<\/strong> Depolanan loglar i\u00e7erisinden belirli desenlere (\u00f6rne\u011fin, &#8220;ERROR&#8221;, &#8220;Failed Login&#8221;) g\u00f6re metrikler olu\u015fturulur. \u00d6rne\u011fin, &#8220;son 5 dakikada ka\u00e7 tane ERROR kelimesi ge\u00e7ti?&#8221; gibi.<\/li>\n<li><strong>CloudWatch Alarms:<\/strong> Olu\u015fturulan metrikler belirli bir e\u015fi\u011fi a\u015ft\u0131\u011f\u0131nda (\u00f6rne\u011fin, &#8220;ERROR say\u0131s\u0131 5 dakikada 10&#8217;u ge\u00e7ti\u011finde&#8221;), bir alarm tetiklenir.<\/li>\n<li><strong>Amazon SNS (Simple Notification Service):<\/strong> Alarmlar tetiklendi\u011finde, SNS bir bildirim servisi olarak devreye girer. SNS, bildirimleri \u00e7e\u015fitli abonelik u\u00e7 noktalar\u0131na (e-posta, SMS, Lambda fonksiyonlar\u0131, SQS kuyruklar\u0131 vb.) da\u011f\u0131tabilir. Bu sayede, alarm durumu ilgili ekiplere an\u0131nda iletilir.<\/li>\n<\/ol>\n<p>Bu temel ak\u0131\u015f\u0131 anlayarak, bir sonraki b\u00f6l\u00fcmde sistemimizin mimarisini detayland\u0131rabilir ve ard\u0131ndan Terraform ile nas\u0131l kodlayaca\u011f\u0131m\u0131za ge\u00e7ebiliriz.<\/p>\n<h2>Mimari Tasar\u0131m: Ger\u00e7ek Zamanl\u0131 Log Ak\u0131\u015f\u0131 Nas\u0131l Kurulur?<\/h2>\n<p>Etkili bir ger\u00e7ek zamanl\u0131 log izleme ve uyar\u0131 sistemi kurmak i\u00e7in sa\u011flam bir mimari tasla\u011f\u0131na ihtiyac\u0131m\u0131z var. Bu b\u00f6l\u00fcmde, sistemimizin bile\u015fenlerini ve loglar\u0131n bu bile\u015fenler aras\u0131nda nas\u0131l akaca\u011f\u0131n\u0131 detayland\u0131raca\u011f\u0131z. Amac\u0131m\u0131z, hem \u00f6l\u00e7eklenebilir hem de maliyet etkin bir \u00e7\u00f6z\u00fcm sunmak.<\/p>\n<p>Genel olarak, sistemimiz a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 takip edecektir:<\/p>\n<ol>\n<li><strong>Log \u00dcretimi:<\/strong> Uygulamalar\u0131m\u0131z ve AWS servislerimiz loglar\u0131 olu\u015fturur.<\/li>\n<li><strong>Log Toplama:<\/strong> Bu loglar merkezi bir log servisine y\u00f6nlendirilir.<\/li>\n<li><strong>Log Filtreleme ve Metrik Olu\u015fturma:<\/strong> Toplanan loglar aras\u0131ndan anlaml\u0131 veriler \u00e7\u0131kar\u0131l\u0131r ve metrikler halinde i\u015flenir.<\/li>\n<li><strong>Alarm Tetikleme:<\/strong> Olu\u015fturulan metrikler belirli e\u015fik de\u011ferlerini a\u015ft\u0131\u011f\u0131nda alarmlar tetiklenir.<\/li>\n<li><strong>Bildirim G\u00f6nderme:<\/strong> Tetiklenen alarmlar, ilgili kullan\u0131c\u0131lara veya sistemlere bildirim olarak ula\u015ft\u0131r\u0131l\u0131r.<\/li>\n<li><strong>Log Ar\u015fivleme (\u0130ste\u011fe Ba\u011fl\u0131):<\/strong> Uzun vadeli analiz veya uyumluluk i\u00e7in loglar g\u00fcvenli bir yerde ar\u015fivlenir.<\/li>\n<\/ol>\n<h3>Temel Mimari Bile\u015fenleri<\/h3>\n<p>Bu ak\u0131\u015f\u0131 desteklemek i\u00e7in AWS \u00fczerinde a\u015fa\u011f\u0131daki ana bile\u015fenleri kullanaca\u011f\u0131z:<\/p>\n<ul>\n<li><strong>Log Kaynaklar\u0131 (EC2, Lambda, ECS, vb.):<\/strong> Uygulamalar\u0131m\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 ve log \u00fcretti\u011fi yerlerdir. \u00d6rne\u011fin, bir web uygulamas\u0131n\u0131n Apache veya Nginx eri\u015fim loglar\u0131, bir Node.js uygulamas\u0131n\u0131n konsol loglar\u0131 veya bir Python Lambda fonksiyonunun print \u00e7\u0131kt\u0131lar\u0131. Bu kaynaklar, CloudWatch Agent veya do\u011frudan servis entegrasyonlar\u0131 arac\u0131l\u0131\u011f\u0131yla loglar\u0131n\u0131 CloudWatch Logs&#8217;a g\u00f6nderirler.<\/li>\n<li><strong>Amazon CloudWatch Logs:<\/strong> Loglar\u0131n topland\u0131\u011f\u0131, depoland\u0131\u011f\u0131 ve y\u00f6netildi\u011fi merkezi hizmet. Her bir uygulama veya hizmet i\u00e7in ayr\u0131 log gruplar\u0131 olu\u015fturarak d\u00fczenli bir yap\u0131 sa\u011flayabiliriz. Log gruplar\u0131, loglar\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc (ne kadar s\u00fcreyle saklanaca\u011f\u0131 gibi) y\u00f6netmemizi sa\u011flar.<\/li>\n<li><strong>Amazon CloudWatch Metric Filters:<\/strong> CloudWatch Logs i\u00e7indeki log ak\u0131\u015flar\u0131nda belirli desenleri (\u00f6rne\u011fin, &#8220;ERROR&#8221;, &#8220;Exception&#8221;, &#8220;404 Not Found&#8221;) aramak ve bu desenlerin say\u0131s\u0131na g\u00f6re \u00f6zel metrikler olu\u015fturmak i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, son 5 dakika i\u00e7inde ka\u00e7 tane &#8220;ERROR&#8221; kelimesinin ge\u00e7ti\u011fini sayan bir metrik filtre tan\u0131mlayabiliriz. Bu filtreler, log verilerini say\u0131sal g\u00f6stergelere d\u00f6n\u00fc\u015ft\u00fcrerek izlenebilir hale getirir.<\/li>\n<li><strong>Amazon CloudWatch Alarms:<\/strong> Metric filters taraf\u0131ndan olu\u015fturulan metrikler belirli bir e\u015fik de\u011ferini a\u015ft\u0131\u011f\u0131nda tetiklenen mekanizmalard\u0131r. \u00d6rne\u011fin, &#8220;ERROR&#8221; metri\u011fi 5 dakika i\u00e7inde 5&#8217;i ge\u00e7erse bir alarm\u0131 tetikle. Alarmlar, sistem sa\u011fl\u0131\u011f\u0131n\u0131n otomatik olarak kontrol edilmesini sa\u011flar ve proaktif m\u00fcdahale i\u00e7in kritik \u00f6nem ta\u015f\u0131r.<\/li>\n<li><strong>Amazon Simple Notification Service (SNS):<\/strong> Bir mesajla\u015fma hizmetidir. CloudWatch Alarms taraf\u0131ndan tetiklenen bildirimleri (mesajlar\u0131) al\u0131r ve \u00f6nceden tan\u0131mlanm\u0131\u015f abonelik u\u00e7 noktalar\u0131na (e-posta adresleri, SMS numaralar\u0131, AWS Lambda fonksiyonlar\u0131, SQS kuyruklar\u0131 veya HTTP\/S u\u00e7 noktalar\u0131) da\u011f\u0131t\u0131r. Bu sayede, alarm durumunda ilgili ki\u015filere veya di\u011fer sistemlere an\u0131nda bildirim g\u00f6nderilir.<\/li>\n<li><strong>Log Ar\u015fivleme (Amazon S3 &#8211; Opsiyonel):<\/strong> Uzun vadeli saklama, b\u00fcy\u00fck veri analizi veya uyumluluk gereksinimleri i\u00e7in CloudWatch Logs&#8217;tan loglar\u0131 S3&#8217;e aktarabiliriz. Bu i\u015flem genellikle AWS Kinesis Firehose veya bir Lambda fonksiyonu arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015ftirilir. S3&#8217;te ar\u015fivlenen loglar daha sonra Amazon Athena veya Amazon Redshift gibi servislerle analiz edilebilir.<\/li>\n<\/ul>\n<p class=\"uzman-ipucu\">Uzman \u0130pucu: Log gruplar\u0131n\u0131za anlaml\u0131 ve tutarl\u0131 isimler vererek (\u00f6rne\u011fin, <code>\/aws\/lambda\/MyApp-Prod<\/code> veya <code>\/ec2\/WebApp-AccessLogs<\/code>) y\u00f6netim ve filtreleme s\u00fcre\u00e7lerini kolayla\u015ft\u0131r\u0131n. Ayr\u0131ca, log retention policy&#8217;lerini dikkatlice ayarlayarak maliyetleri optimize edebilirsiniz.<\/p>\n<h3>Ger\u00e7ek Zamanl\u0131 Log Ak\u0131\u015f\u0131 Senaryosu<\/h3>\n<p>Hayali bir senaryo d\u00fc\u015f\u00fcnelim: Bir e-ticaret uygulamas\u0131n\u0131n arka ucu (backend) bir EC2 \u00f6rne\u011fi \u00fczerinde \u00e7al\u0131\u015f\u0131yor ve hatalar\u0131n\u0131 <code>\/var\/log\/myapp\/error.log<\/code> dosyas\u0131na yaz\u0131yor. Bu loglar\u0131 ger\u00e7ek zamanl\u0131 olarak izlemek ve \u00f6nemli hatalar olu\u015ftu\u011funda an\u0131nda bildirim almak istiyoruz.<\/p>\n<ol>\n<li>EC2 \u00f6rne\u011findeki uygulamam\u0131z bir hata (\u00f6rne\u011fin, veritaban\u0131 ba\u011flant\u0131 hatas\u0131) \u00fcretir ve bu hatay\u0131 <code>\/var\/log\/myapp\/error.log<\/code> dosyas\u0131na yazar.<\/li>\n<li>EC2 \u00fczerinde \u00e7al\u0131\u015fan CloudWatch Agent, bu log dosyas\u0131n\u0131 izler ve yeni log sat\u0131rlar\u0131n\u0131 <code>WebApp-Errors<\/code> adl\u0131 bir CloudWatch Log Group&#8217;una g\u00f6nderir.<\/li>\n<li><code>WebApp-Errors<\/code> Log Group&#8217;u i\u00e7erisinde tan\u0131mlanm\u0131\u015f bir CloudWatch Metric Filter, &#8220;ERROR&#8221; kelimesini i\u00e7eren log sat\u0131rlar\u0131n\u0131 arar. Her tespit etti\u011fi &#8220;ERROR&#8221; i\u00e7in bir metrik sayac\u0131 art\u0131r\u0131r.<\/li>\n<li>Bu saya\u00e7, 5 dakikal\u0131k bir s\u00fcre zarf\u0131nda belirli bir e\u015fi\u011fi (\u00f6rne\u011fin, 3 hatay\u0131) a\u015ft\u0131\u011f\u0131nda, CloudWatch Alarm tetiklenir.<\/li>\n<li>Tetkilenen CloudWatch Alarm, <code>Application-Error-Alerts<\/code> adl\u0131 bir SNS Topic&#8217;ine bir mesaj yay\u0131nlar.<\/li>\n<li><code>Application-Error-Alerts<\/code> SNS Topic&#8217;ine abone olan t\u00fcm e-posta adresleri (\u00f6rne\u011fin, operasyon ekibinin e-postas\u0131) ve\/veya SMS numaralar\u0131 bu uyar\u0131 mesaj\u0131n\u0131 al\u0131r.<\/li>\n<\/ol>\n<p>Bu mimari, basit ama g\u00fc\u00e7l\u00fc bir ger\u00e7ek zamanl\u0131 izleme d\u00f6ng\u00fcs\u00fc sa\u011flar. Bir sonraki b\u00f6l\u00fcmde, bu mimariyi Terraform kullanarak AWS \u00fczerinde nas\u0131l ad\u0131m ad\u0131m hayata ge\u00e7irece\u011fimizi g\u00f6sterece\u011fiz. Kod bloklar\u0131 ve detayl\u0131 a\u00e7\u0131klamalarla kendi sisteminizi kurman\u0131z i\u00e7in size rehberlik edece\u011fiz.<\/p>\n<h2>Terraform ile AWS Kaynaklar\u0131n\u0131 Kodlamak: Ad\u0131m Ad\u0131m Uygulama<\/h2>\n<p>\u015eimdi teoriden prati\u011fe ge\u00e7me zaman\u0131! Bu b\u00f6l\u00fcmde, yukar\u0131da tan\u0131mlad\u0131\u011f\u0131m\u0131z mimariyi Terraform kullanarak AWS \u00fczerinde ad\u0131m ad\u0131m nas\u0131l in\u015fa edece\u011fimizi g\u00f6rece\u011fiz. T\u00fcm kod \u00f6rnekleri ve a\u00e7\u0131klamalar, kendi sisteminizi kolayca kurman\u0131z\u0131 sa\u011flayacak.<\/p>\n<h3>Temel Terraform Yap\u0131land\u0131rmas\u0131 ve Provider Tan\u0131mlamas\u0131 Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>Terraform projemize ba\u015flamadan \u00f6nce, temel bir yap\u0131land\u0131rma dosyas\u0131 olu\u015fturmam\u0131z gerekiyor. Bu dosya, Terraform&#8217;un hangi bulut sa\u011flay\u0131c\u0131s\u0131n\u0131 kullanaca\u011f\u0131n\u0131 ve baz\u0131 genel ayarlar\u0131 i\u00e7erecek. Genellikle bu ayarlar\u0131 <code>main.tf<\/code> veya <code>versions.tf<\/code> ad\u0131nda bir dosyada tutar\u0131z.<\/p>\n<pre><code class=\"language-terraform\">terraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp\/aws\"\n      version = \"~> 5.0\" # AWS provider&#39;\u0131n 5.x versiyonunu kullan\n    }\n  }\n  required_version = \"~> 1.0\" # Terraform&#39;un 1.x versiyonunu kullan\n}\n\nprovider \"aws\" {\n  region = \"eu-central-1\" # Kaynaklar\u0131n olu\u015fturulaca\u011f\u0131 AWS b\u00f6lgesi (\u00f6rne\u011fin, Frankfurt)\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kod blo\u011fu:<\/p>\n<ul>\n<li><code>terraform<\/code> blo\u011fu: Terraform'un ve AWS sa\u011flay\u0131c\u0131s\u0131n\u0131n minimum gerekli versiyonlar\u0131n\u0131 belirtir. Bu, tutarl\u0131l\u0131k ve uyumluluk i\u00e7in \u00f6nemlidir.<\/li>\n<li><code>provider \"aws\"<\/code> blo\u011fu: Terraform'un AWS ile nas\u0131l ileti\u015fim kuraca\u011f\u0131n\u0131 tan\u0131mlar. Burada kaynaklar\u0131m\u0131z\u0131n hangi AWS b\u00f6lgesinde (\u00f6rne\u011fin, <code>eu-central-1<\/code> - Frankfurt) olu\u015fturulaca\u011f\u0131n\u0131 belirtiyoruz.<\/li>\n<\/ul>\n<p>Bu yap\u0131land\u0131rmay\u0131 yapt\u0131ktan sonra, terminalinizde <code>terraform init<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak gerekli AWS sa\u011flay\u0131c\u0131s\u0131n\u0131 indirebilirsiniz.<\/p>\n<h3>CloudWatch Log Group'lar\u0131 Olu\u015fturma: Kod Bloklar\u0131 ve A\u00e7\u0131klamalar<\/h3>\n<p>Loglar\u0131m\u0131z\u0131 toplamak i\u00e7in CloudWatch Log Group'lar\u0131na ihtiyac\u0131m\u0131z var. Her bir uygulaman\u0131z veya hizmetiniz i\u00e7in ayr\u0131 bir log grubu olu\u015fturmak, y\u00f6netimi kolayla\u015ft\u0131r\u0131r.<\/p>\n<pre><code class=\"language-terraform\">resource \"aws_cloudwatch_log_group\" \"app_error_logs\" {\n  name              = \"\/my-app\/error-logs\" # Log grubunun ad\u0131\n  retention_in_days = 30 # Loglar\u0131n saklama s\u00fcresi (g\u00fcn olarak)\n\n  tags = {\n    Environment = \"Production\"\n    Project     = \"MyApp\"\n  }\n}\n\nresource \"aws_cloudwatch_log_group\" \"app_access_logs\" {\n  name              = \"\/my-app\/access-logs\"\n  retention_in_days = 90\n\n  tags = {\n    Environment = \"Production\"\n    Project     = \"MyApp\"\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu Terraform kodu:<\/p>\n<ul>\n<li><code>aws_cloudwatch_log_group<\/code> kayna\u011f\u0131, CloudWatch'ta bir log grubu olu\u015fturur.<\/li>\n<li><code>name<\/code>: Log grubunun benzersiz ad\u0131n\u0131 belirtir. Uygulama ad\u0131 ve log tipi kombinasyonlar\u0131 iyi bir isimlendirme stratejisidir.<\/li>\n<li><code>retention_in_days<\/code>: Loglar\u0131n ka\u00e7 g\u00fcn boyunca saklanaca\u011f\u0131n\u0131 belirler. 0, loglar\u0131n s\u00fcresiz saklanaca\u011f\u0131 anlam\u0131na gelir. Bu de\u011fer, maliyetleri do\u011frudan etkiledi\u011fi i\u00e7in dikkatli se\u00e7ilmelidir.<\/li>\n<li><code>tags<\/code>: Kaynaklar\u0131n\u0131z\u0131 kategorize etmek ve maliyet takibi yapmak i\u00e7in faydal\u0131d\u0131r.<\/li>\n<\/ul>\n<h3>Log Metrikleri ve Alarm Tan\u0131mlamalar\u0131: Hata Say\u0131s\u0131n\u0131 \u0130zleme<\/h3>\n<p>\u015eimdi, olu\u015fturdu\u011fumuz log gruplar\u0131 i\u00e7indeki belirli desenleri izleyerek metrikler olu\u015fturaca\u011f\u0131z ve bu metrikler belirli bir e\u015fi\u011fi a\u015ft\u0131\u011f\u0131nda tetiklenecek alarmlar tan\u0131mlayaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-terraform\">resource \"aws_cloudwatch_metric_filter\" \"error_count_filter\" {\n  name           = \"ApplicationErrorCount\"\n  log_group_name = aws_cloudwatch_log_group.app_error_logs.name\n  metric_transformation {\n    name          = \"ErrorCount\"\n    namespace     = \"MyApp\/Errors\"\n    value         = \"1\" # Her e\u015fle\u015fen log sat\u0131r\u0131 i\u00e7in metri\u011fi 1 art\u0131r\n    default_value = \"0\"\n  }\n  pattern = \"[...]*ERROR[...]*\" # Log sat\u0131r\u0131nda \"ERROR\" kelimesini ara\n}\n\nresource \"aws_cloudwatch_metric_alarm\" \"high_error_alarm\" {\n  alarm_name          = \"MyApp-HighErrorRate\"\n  comparison_operator = \"GreaterThanThreshold\"\n  evaluation_periods  = \"1\" # Tek bir d\u00f6nem (5 dakika) i\u00e7inde\n  metric_name         = aws_cloudwatch_metric_filter.error_count_filter.metric_transformation[0].name\n  namespace           = aws_cloudwatch_metric_filter.error_count_filter.metric_transformation[0].namespace\n  period              = \"300\" # 5 dakika (saniye cinsinden)\n  statistic           = \"Sum\" # D\u00f6nem i\u00e7indeki hata say\u0131lar\u0131n\u0131n toplam\u0131\n  threshold           = \"5\" # E\u015fik de\u011feri: 5 veya daha fazla hata\n  \n  # Alarm durumunda bildirim g\u00f6nderilecek SNS konusu\n  alarm_actions = [aws_sns_topic.app_notifications.arn]\n  ok_actions    = [aws_sns_topic.app_notifications.arn] # Alarm durumu d\u00fczeldi\u011finde de bildirim g\u00f6nder\n\n  actions_enabled = true\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod blo\u011fu \u015funlar\u0131 yapar:<\/p>\n<ul>\n<li><code>aws_cloudwatch_metric_filter<\/code>: <code>app_error_logs<\/code> grubunda \"ERROR\" kelimesini i\u00e7eren log sat\u0131rlar\u0131n\u0131 arayan bir filtre tan\u0131mlar. Her e\u015fle\u015fme i\u00e7in <code>MyApp\/Errors<\/code> namespace'inde <code>ErrorCount<\/code> ad\u0131nda bir metrik olu\u015fturur ve de\u011ferini 1 art\u0131r\u0131r.<\/li>\n<li><code>aws_cloudwatch_metric_alarm<\/code>: <code>ErrorCount<\/code> metri\u011fi i\u00e7in bir alarm tan\u0131mlar. E\u011fer 5 dakikal\u0131k bir d\u00f6nemde (300 saniye) <code>ErrorCount<\/code> de\u011feri 5'ten b\u00fcy\u00fckse, alarm tetiklenir.<\/li>\n<li><code>alarm_actions<\/code> ve <code>ok_actions<\/code>: Alarm tetiklendi\u011finde veya normale d\u00f6nd\u00fc\u011f\u00fcnde hangi SNS konusuna bildirim g\u00f6nderilece\u011fini belirtir. Bu sayede, sorunun hem ba\u015flang\u0131c\u0131nda hem de \u00e7\u00f6z\u00fcld\u00fc\u011f\u00fcnde haberdar olursunuz.<\/li>\n<\/ul>\n<h3>Bildirim Mekanizmas\u0131: SNS Konusu ve Abonelikleri Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>Alarmlar\u0131m\u0131z\u0131n bildirimlerini alabilmek i\u00e7in bir SNS konusu ve bu konuya abone olacak ki\u015filer veya sistemler tan\u0131mlamam\u0131z gerekiyor.<\/p>\n<pre><code class=\"language-terraform\">resource \"aws_sns_topic\" \"app_notifications\" {\n  name = \"MyApp-Alerts-Topic\" # SNS konusunun ad\u0131\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Id      = \"__default_policy_ID\"\n    Statement = [\n      {\n        Sid       = \"__default_statement_ID\"\n        Effect    = \"Allow\"\n        Principal = {\n          AWS = \"*\"\n        }\n        Action = [\n          \"SNS:Publish\",\n        ]\n        Resource = \"arn:aws:sns:eu-central-1:123456789012:MyApp-Alerts-Topic\" # Kendi AWS hesab\u0131n\u0131z\u0131n ID&#39;sini ve b\u00f6lgenizi kullan\u0131n\n        Condition = {\n          StringEquals = {\n            \"AWS:SourceOwner\" = \"123456789012\" # Kendi AWS hesab\u0131n\u0131z\u0131n ID&#39;sini kullan\u0131n\n          }\n        }\n      },\n      # CloudWatch&#39;un bu SNS konusuna mesaj yay\u0131nlamas\u0131na izin veren izin\n      {\n        Sid       = \"Allow_CloudWatch_to_Publish\"\n        Effect    = \"Allow\"\n        Principal = {\n          Service = \"cloudwatch.amazonaws.com\"\n        }\n        Action = \"sns:Publish\"\n        Resource = \"arn:aws:sns:eu-central-1:123456789012:MyApp-Alerts-Topic\" # Kendi AWS hesab\u0131n\u0131z\u0131n ID&#39;sini ve b\u00f6lgenizi kullan\u0131n\n      },\n    ]\n  })\n}\n\nresource \"aws_sns_topic_subscription\" \"email_subscription\" {\n  topic_arn = aws_sns_topic.app_notifications.arn\n  protocol  = \"email\"\n  endpoint  = \"devops-team@example.com\" # Bildirimlerin g\u00f6nderilece\u011fi e-posta adresi\n}\n\nresource \"aws_sns_topic_subscription\" \"sms_subscription\" {\n  topic_arn = aws_sns_topic.app_notifications.arn\n  protocol  = \"sms\"\n  endpoint  = \"+905551234567\" # Bildirimlerin g\u00f6nderilece\u011fi telefon numaras\u0131\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kod:<\/p>\n<ul>\n<li><code>aws_sns_topic<\/code>: <code>MyApp-Alerts-Topic<\/code> ad\u0131nda yeni bir SNS konusu olu\u015fturur. <code>policy<\/code> blo\u011fu, kimlerin bu konuya mesaj yay\u0131nlayabilece\u011fini veya kimlerin bu konuya abone olabilece\u011fini belirleyen IAM politikas\u0131d\u0131r. \u00d6zellikle CloudWatch'\u0131n bu konuya mesaj yay\u0131nlamas\u0131na izin veren bir politikaya ihtiyac\u0131m\u0131z var.<\/li>\n<li><code>aws_sns_topic_subscription<\/code>: Bu konuya e-posta ve SMS \u00fczerinden abone olan iki farkl\u0131 u\u00e7 nokta (endpoint) tan\u0131mlar. E-posta aboneli\u011fi i\u00e7in belirtilen adrese bir onay e-postas\u0131 g\u00f6nderilecektir; aboneli\u011fi etkinle\u015ftirmek i\u00e7in bu e-postay\u0131 onaylaman\u0131z gerekmektedir. SMS aboneli\u011fi ise genellikle hemen aktif olur.<\/li>\n<\/ul>\n<p class=\"uzman-ipucu\">Uzman \u0130pucu: SNS topic policy'sini yazarken, <code>Resource<\/code> ARN'lerini ve <code>AWS:SourceOwner<\/code> k\u0131sm\u0131n\u0131 kendi AWS hesab\u0131n\u0131z\u0131n ID'si ve b\u00f6lgenizle g\u00fcncellemeyi unutmay\u0131n. G\u00fcvenlik prensiplerine uygun olarak wildcard (<code>*<\/code>) kullan\u0131m\u0131n\u0131 minimumda tutmaya \u00e7al\u0131\u015f\u0131n.<\/p>\n<h3>Bir Vaka Analizi: EC2 Hata Loglar\u0131n\u0131 \u0130zlemek<\/h3>\n<p>T\u00fcm bu par\u00e7alar\u0131 bir araya getirerek, bir EC2 \u00f6rne\u011findeki uygulama hata loglar\u0131n\u0131 nas\u0131l izleyebilece\u011fimize dair bir senaryoyu \u00f6zetleyelim:<\/p>\n<ol>\n<li>EC2 \u00f6rne\u011fi \u00fczerinde AWS CloudWatch Agent'\u0131 kurun ve yap\u0131land\u0131r\u0131n. Agent, uygulaman\u0131z\u0131n <code>\/var\/log\/myapp\/error.log<\/code> dosyas\u0131n\u0131 izleyerek loglar\u0131, yukar\u0131da olu\u015fturdu\u011fumuz <code>\/my-app\/error-logs<\/code> CloudWatch Log Group'una g\u00f6nderecek \u015fekilde yap\u0131land\u0131r\u0131lmal\u0131d\u0131r.<\/li>\n<li>Uygulaman\u0131z, kritik bir hata durumunda \"ERROR\" kelimesini i\u00e7eren bir log kayd\u0131 olu\u015fturdu\u011funda, CloudWatch Agent bunu <code>\/my-app\/error-logs<\/code> grubuna iletir.<\/li>\n<li><code>ApplicationErrorCount<\/code> metrik filtresi bu \"ERROR\" kelimesini tespit eder ve <code>MyApp\/Errors<\/code> namespace'indeki <code>ErrorCount<\/code> metri\u011fini art\u0131r\u0131r.<\/li>\n<li>E\u011fer 5 dakika i\u00e7inde bu hata say\u0131s\u0131 5'i ge\u00e7erse, <code>MyApp-HighErrorRate<\/code> alarm\u0131 tetiklenir.<\/li>\n<li>Alarm, <code>MyApp-Alerts-Topic<\/code> SNS konusuna bir bildirim yay\u0131nlar ve bu konuya abone olan <code>devops-team@example.com<\/code> e-posta adresine ve <code>+905551234567<\/code> numaras\u0131na uyar\u0131 mesaj\u0131 g\u00f6nderilir.<\/li>\n<\/ol>\n<p>Bu ad\u0131mlar\u0131 tamamlamak i\u00e7in Terraform kodunuzu uygulaman\u0131z yeterlidir:<\/p>\n<pre><code class=\"language-bash\">terraform plan\nterraform apply --auto-approve\n<\/pre>\n<p><\/code><\/p>\n<p>Bu komutlar, tan\u0131mlad\u0131\u011f\u0131n\u0131z t\u00fcm AWS kaynaklar\u0131n\u0131 olu\u015fturacak ve ger\u00e7ek zamanl\u0131 log izleme ve uyar\u0131 sisteminizi devreye alacakt\u0131r. Art\u0131k uygulaman\u0131z\u0131n hatalar\u0131 hakk\u0131nda an\u0131nda bilgi sahibi olabilirsiniz.<\/p>\n<h2>\u0130leri D\u00fczey Optimizasyonlar ve En \u0130yi Uygulamalar<\/h2>\n<p>Temel log izleme ve uyar\u0131 sistemini kurduktan sonra, daha karma\u015f\u0131k senaryolar\u0131 ele almak, sistemi optimize etmek ve g\u00fcvenli\u011fini art\u0131rmak i\u00e7in baz\u0131 ileri d\u00fczey konulara de\u011finebiliriz. Bu b\u00f6l\u00fcm, sisteminizi daha da geli\u015ftirmek i\u00e7in ipu\u00e7lar\u0131 ve en iyi uygulamalar sunar.<\/p>\n<h3>Log Verilerini Zenginle\u015ftirme ve Geli\u015fmi\u015f Analizler (Lambda, Kinesis)<\/h3>\n<p>Bazen sadece metrik filtrelemek yeterli olmaz; log verilerini daha derinlemesine analiz etmek veya belirli formatlara d\u00f6n\u00fc\u015ft\u00fcrmek isteyebilirsiniz. \u0130\u015fte burada AWS Lambda ve Kinesis gibi hizmetler devreye girer:<\/p>\n<ul>\n<li><strong>AWS Lambda ile \u00d6zel Log \u0130\u015fleme:<\/strong> CloudWatch Logs, log ak\u0131\u015flar\u0131n\u0131 bir Lambda fonksiyonuna tetikleyici olarak g\u00f6nderme yetene\u011fine sahiptir. Bu sayede, log verileri \u00fczerinde \u00f6zel i\u015flemler ger\u00e7ekle\u015ftirebilirsiniz:\n<ul>\n<li><strong>Veri Zenginle\u015ftirme:<\/strong> Loglardaki kullan\u0131c\u0131 ID'lerini al\u0131p, bir veritaban\u0131ndan kullan\u0131c\u0131 bilgilerini \u00e7ekerek log kayd\u0131na ekleyebilirsiniz.<\/li>\n<li><strong>Format D\u00f6n\u00fc\u015f\u00fcm\u00fc:<\/strong> Loglar\u0131 farkl\u0131 bir formata (\u00f6rne\u011fin, JSON'dan Avro'ya) d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz.<\/li>\n<li><strong>Geli\u015fmi\u015f Filtreleme:<\/strong> Karma\u015f\u0131k mant\u0131k gerektiren filtreleme kurallar\u0131n\u0131 uygulayabilirsiniz.<\/li>\n<li><strong>Hedefe Y\u00f6nlendirme:<\/strong> Loglar\u0131 farkl\u0131 bir depolama alan\u0131na (\u00f6rne\u011fin, Elasticsearch Service) veya ba\u015fka bir analitik araca g\u00f6nderebilirsiniz.<\/li>\n<\/ul>\n<pre><code class=\"language-terraform\">resource \"aws_lambda_function\" \"log_processor\" {\n  # ... Lambda fonksiyonu tan\u0131m\u0131 (kod, \u00e7al\u0131\u015fma zaman\u0131, IAM rol\u00fc vb.) ...\n}\n\nresource \"aws_cloudwatch_log_subscription_filter\" \"to_lambda\" {\n  name            = \"SendErrorsToLambda\"\n  log_group_name  = aws_cloudwatch_log_group.app_error_logs.name\n  destination_arn = aws_lambda_function.log_processor.arn\n  filter_pattern  = \"[...]*ERROR[...]*\" # Sadece hata loglar\u0131n\u0131 Lambda&#39;ya g\u00f6nder\n}\n\nresource \"aws_lambda_permission\" \"allow_cloudwatch\" {\n  statement_id  = \"AllowExecutionFromCloudWatch\"\n  action        = \"lambda:InvokeFunction\"\n  function_name = aws_lambda_function.log_processor.function_name\n  principal     = \"logs.${data.aws_region.current.name}.amazonaws.com\"\n  source_arn    = \"${aws_cloudwatch_log_group.app_error_logs.arn}:*\"\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod, <code>\/my-app\/error-logs<\/code> grubundaki \"ERROR\" i\u00e7eren loglar\u0131 bir Lambda fonksiyonuna y\u00f6nlendirir. Lambda fonksiyonunun bu loglar\u0131 i\u015fleyebilmesi i\u00e7in gerekli izin de tan\u0131mlanm\u0131\u015ft\u0131r.<\/p>\n<\/li>\n<li><strong>Amazon Kinesis Firehose ile Log Ar\u015fivleme ve Analiz:<\/strong> Daha b\u00fcy\u00fck \u00f6l\u00e7ekli log ak\u0131\u015flar\u0131 i\u00e7in Kinesis Firehose, loglar\u0131 S3'e, Redshift'e veya Elasticsearch Service'e g\u00fcvenilir bir \u015fekilde aktarabilir. \u00d6zellikle uzun vadeli analizler (Amazon Athena ile S3 \u00fczerindeki loglar\u0131 sorgulama) ve uyumluluk gereksinimleri i\u00e7in idealdir.\n<pre><code class=\"language-terraform\">resource \"aws_kinesis_firehose_delivery_stream\" \"s3_archive\" {\n  name        = \"MyApp-LogToS3\"\n  destination = \"s3\"\n\n  s3_configuration {\n    role_arn        = aws_iam_role.firehose_role.arn\n    bucket_arn      = aws_s3_bucket.log_archive_bucket.arn\n    prefix          = \"raw_logs\/\"\n    error_output_prefix = \"error_logs\/\"\n    buffer_size     = 5 # MB\n    buffer_interval = 300 # Saniye\n  }\n  # ... di\u011fer ayarlar ...\n}\n\nresource \"aws_cloudwatch_log_destination\" \"firehose_destination\" {\n  name       = \"MyAppLogFirehoseDestination\"\n  target_arn = aws_kinesis_firehose_delivery_stream.s3_archive.arn\n  role_arn   = aws_iam_role.log_destination_role.arn\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnek, CloudWatch loglar\u0131n\u0131 Kinesis Firehose \u00fczerinden bir S3 kovas\u0131na ar\u015fivlemeyi g\u00f6sterir. Firehose, loglar\u0131 toplu halde S3'e yazar, bu da maliyetleri d\u00fc\u015f\u00fcr\u00fcr ve performans\u0131 art\u0131r\u0131r.<\/p>\n<\/li>\n<\/ul>\n<h3>Maliyet Y\u00f6netimi ve G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h3>\n<p>AWS'te \u00e7al\u0131\u015f\u0131rken maliyetleri ve g\u00fcvenli\u011fi g\u00f6z ard\u0131 etmemek gerekir:<\/p>\n<ul>\n<li><strong>Log Saklama S\u00fcreleri (Retention Policies):<\/strong> Her CloudWatch Log Group i\u00e7in uygun bir <code>retention_in_days<\/code> de\u011feri belirleyin. Gereksiz yere uzun s\u00fcre log saklamak maliyetleri art\u0131rabilir. Yaln\u0131zca yasal veya operasyonel gereksinimler i\u00e7in ihtiyac\u0131n\u0131z olan kadar\u0131n\u0131 saklay\u0131n ve daha uzun vadeli veriler i\u00e7in S3'e ar\u015fivlemeyi d\u00fc\u015f\u00fcn\u00fcn.<\/li>\n<li><strong>IAM Rolleri ve Politikalar\u0131:<\/strong> Her AWS servisine yaln\u0131zca i\u015fini yapmas\u0131 i\u00e7in minimum gerekli izinleri verin (Least Privilege Principle). \u00d6rne\u011fin, CloudWatch Agent'\u0131n loglar\u0131 g\u00f6ndermesi i\u00e7in yaln\u0131zca <code>logs:PutLogEvents<\/code> ve <code>logs:CreateLogStream<\/code> izinlerine ihtiyac\u0131 vard\u0131r. SNS konusunda, CloudWatch'un yay\u0131n yapmas\u0131na izin veren politikay\u0131 do\u011fru yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun.<\/li>\n<li><strong>KMS \u015eifrelemesi:<\/strong> Hassas log verilerini depoluyorsan\u0131z, CloudWatch Log Group'lar\u0131n\u0131z\u0131 ve S3 ar\u015fiv kovalar\u0131n\u0131z\u0131 AWS Key Management Service (KMS) anahtarlar\u0131yla \u015fifrelemeyi d\u00fc\u015f\u00fcn\u00fcn. Bu, verilerinizin depoda bile korunmas\u0131n\u0131 sa\u011flar.\n<pre><code class=\"language-terraform\">resource \"aws_kms_key\" \"log_encryption_key\" {\n  description             = \"KMS key for CloudWatch Logs encryption\"\n  deletion_window_in_days = 7\n  policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Id\": \"key-default-1\",\n  \"Statement\": [\n    {\n      \"Sid\": \"Enable IAM User Permissions\",\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::123456789012:root\"\n      },\n      \"Action\": \"kms:*\",\n      \"Resource\": \"*\"\n    },\n    {\n      \"Sid\": \"Allow CloudWatch Logs to use the key\",\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"Service\": \"logs.${data.aws_region.current.name}.amazonaws.com\"\n      },\n      \"Action\": [\n        \"kms:Encrypt\",\n        \"kms:Decrypt\",\n        \"kms:ReEncrypt*\",\n        \"kms:GenerateDataKey*\",\n        \"kms:DescribeKey\"\n      ],\n      \"Resource\": \"*\"\n    }\n  ]\n}\nEOF\n}\n\nresource \"aws_cloudwatch_log_group\" \"encrypted_app_logs\" {\n  name              = \"\/my-app\/secure-logs\"\n  retention_in_days = 30\n  kms_key_id        = aws_kms_key.log_encryption_key.arn # KMS anahtar\u0131n\u0131 ata\n}\n<\/pre>\n<p><\/code>\n    <\/li>\n<\/ul>\n<h3>\u00c7oklu Hesap ve B\u00f6lge Stratejileri<\/h3>\n<p>B\u00fcy\u00fck kurulu\u015flar genellikle birden fazla AWS hesab\u0131 ve b\u00f6lgesi kullan\u0131r. Bu durumda log y\u00f6netimi daha karma\u015f\u0131k hale gelir:<\/p>\n<ul>\n<li><strong>\u00c7apraz Hesap Log Agregasyonu:<\/strong> Birden fazla AWS hesab\u0131ndaki loglar\u0131 merkezi bir g\u00fcvenlik veya operasyon hesab\u0131na toplamak i\u00e7in CloudWatch Log Subscription Filters veya Kinesis Firehose kullanabilirsiniz. Bu, t\u00fcm loglar\u0131n\u0131z\u0131n tek bir yerden izlenmesini ve analiz edilmesini sa\u011flar.<\/li>\n<li><strong>\u00c7oklu B\u00f6lge Log \u0130zleme:<\/strong> Uygulamalar\u0131n\u0131z farkl\u0131 AWS b\u00f6lgelerinde da\u011f\u0131t\u0131lm\u0131\u015fsa, her b\u00f6lgede benzer bir log izleme altyap\u0131s\u0131 kurman\u0131z gerekecektir. Terraform mod\u00fclleri kullanarak bu yap\u0131land\u0131rmay\u0131 tekrarlamak kolayla\u015f\u0131r. Ana uyar\u0131 mekanizman\u0131z\u0131 (SNS) merkezi bir b\u00f6lgede tutabilir ve di\u011fer b\u00f6lgelerdeki alarmlar\u0131 bu merkezi SNS konusuna y\u00f6nlendirebilirsiniz.<\/li>\n<\/ul>\n<p class=\"uzman-ipucu\">Uzman \u0130pucu: Terraform mod\u00fcllerini kullanarak log izleme altyap\u0131n\u0131z\u0131n bile\u015fenlerini (log grubu, metrik filtre, alarm, SNS konusu) tekrar kullan\u0131labilir birimler halinde paketleyin. Bu, birden fazla uygulama veya ortam i\u00e7in kolayca da\u011f\u0131t\u0131m yapman\u0131z\u0131 sa\u011flar ve \"boilerplate\" kodu azalt\u0131r.<\/p>\n<p>Bu ileri d\u00fczey optimizasyonlar ve en iyi uygulamalar, log izleme sisteminizi daha sa\u011flam, g\u00fcvenli, \u00f6l\u00e7eklenebilir ve maliyet etkin hale getirecektir. Unutmay\u0131n, iyi bir izleme sistemi sadece sorunlar\u0131 tespit etmekle kalmaz, ayn\u0131 zamanda sistemlerinizin genel sa\u011fl\u0131\u011f\u0131n\u0131 ve performans\u0131n\u0131 anlaman\u0131za da yard\u0131mc\u0131 olur.<\/p>\n<h2>Sonu\u00e7: G\u00fcvenilir Log Y\u00f6netiminin \u00d6nemi ve Gelece\u011fi<\/h2>\n<p>Bu makale boyunca, AWS \u00fczerinde Terraform kullanarak ger\u00e7ek zamanl\u0131 bir log izleme ve uyar\u0131 sisteminin nas\u0131l kurulaca\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde inceledik. Log y\u00f6netiminin temel prensiplerinden ba\u015flayarak, AWS CloudWatch, SNS ve Terraform gibi kilit hizmetlerin ne i\u015fe yarad\u0131\u011f\u0131n\u0131 \u00f6\u011frendik. Ard\u0131ndan, mimari tasar\u0131m\u0131n\u0131 anlad\u0131k ve ad\u0131m ad\u0131m kod \u00f6rnekleriyle kendi sistemimizi nas\u0131l in\u015fa edebilece\u011fimizi g\u00f6rd\u00fck. Son olarak, sistemimizi daha da optimize etmek, g\u00fcvenli\u011fini art\u0131rmak ve ileri d\u00fczey senaryolar\u0131 ele almak i\u00e7in pratik ipu\u00e7lar\u0131n\u0131 payla\u015ft\u0131k.<\/p>\n<p>Modern DevOps ve bulut ortamlar\u0131nda, log y\u00f6netimi sadece bir \"gereklilik\" olmaktan \u00e7\u0131k\u0131p, uygulamalar\u0131n ve altyap\u0131n\u0131n proaktif olarak y\u00f6netilmesi i\u00e7in vazge\u00e7ilmez bir ara\u00e7 haline gelmi\u015ftir. Ger\u00e7ek zamanl\u0131 uyar\u0131lar sayesinde, potansiyel sorunlara h\u0131zl\u0131ca m\u00fcdahale edebilir, kesinti s\u00fcrelerini minimize edebilir ve kullan\u0131c\u0131 deneyimini iyile\u015ftirebiliriz. Terraform'un altyap\u0131y\u0131 kod olarak y\u00f6netme yakla\u015f\u0131m\u0131 ise, bu sistemleri g\u00fcvenilir, tekrarlanabilir ve \u00f6l\u00e7eklenebilir bir \u015fekilde kurmam\u0131za olanak tan\u0131r. Manuel hatalar\u0131 ortadan kald\u0131r\u0131r ve ekiplerin altyap\u0131 y\u00f6netimine harcad\u0131\u011f\u0131 zaman\u0131 azalt\u0131r, b\u00f6ylece daha \u00e7ok inovasyona odaklanabilirler.<\/p>\n<p>Unutmamak gerekir ki, teknoloji d\u00fcnyas\u0131 s\u00fcrekli geli\u015fiyor. Log y\u00f6netiminde de yapay zeka ve makine \u00f6\u011frenimi destekli anomali tespiti gibi yeni yakla\u015f\u0131mlar giderek daha fazla \u00f6nem kazanmaktad\u0131r. Bu sistemler, \u00f6nceden tan\u0131mlanm\u0131\u015f e\u015fiklerin \u00f6tesine ge\u00e7erek, log verilerindeki beklenmedik desenleri otomatik olarak \u00f6\u011frenir ve sizi potansiyel sorunlar hakk\u0131nda uyar\u0131r. AWS'in CloudWatch Anomaly Detection gibi \u00f6zellikleri bu alanda bize yard\u0131mc\u0131 olabilir.<\/p>\n<p>\u00d6zetle, g\u00fc\u00e7l\u00fc bir log izleme ve uyar\u0131 sistemi kurmak, dijital varl\u0131klar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini, performans\u0131n\u0131 ve s\u00fcreklili\u011fini sa\u011flaman\u0131n temelidir. Bu rehberde edindi\u011finiz bilgilerle, siz de AWS ve Terraform'un g\u00fcc\u00fcn\u00fc birle\u015ftirerek kendi g\u00fcvenilir izleme altyap\u0131n\u0131z\u0131 kurabilir ve y\u00f6netebilirsiniz. Gelecekte, log verilerinizi daha derinlemesine analiz ederek operasyonel zekay\u0131 art\u0131rmaya ve daha ak\u0131ll\u0131, daha diren\u00e7li sistemler in\u015fa etmeye devam edeceksiniz.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<h3>1. Terraform ile olu\u015fturulan AWS kaynaklar\u0131n\u0131 nas\u0131l silebilirim?<\/h3>\n<p>Terraform ile olu\u015fturdu\u011funuz t\u00fcm kaynaklar\u0131 temizlemek i\u00e7in projenizin k\u00f6k dizininde <code>terraform destroy<\/code> komutunu \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu komut, Terraform state dosyas\u0131nda izlenen t\u00fcm kaynaklar\u0131 AWS'ten kald\u0131racakt\u0131r. \u0130\u015flem \u00f6ncesinde bir \u00f6nizleme (plan) isteyecektir ve onay\u0131n\u0131z\u0131 bekleyecektir.<\/p>\n<h3>2. CloudWatch Agent'\u0131 EC2 \u00f6rne\u011fine nas\u0131l kurup yap\u0131land\u0131rabilirim?<\/h3>\n<p>CloudWatch Agent'\u0131 EC2'ye kurmak i\u00e7in AWS belgelerindeki talimatlar\u0131 izlemeniz gerekir. Genellikle <code>amazon-cloudwatch-agent<\/code> paketini y\u00fckler, ard\u0131ndan bir yap\u0131land\u0131rma dosyas\u0131 (<code>config.json<\/code>) olu\u015fturursunuz. Bu dosya, hangi log dosyalar\u0131n\u0131n hangi CloudWatch Log Group'una g\u00f6nderilece\u011fini belirtir. Ard\u0131ndan <code>sudo \/opt\/aws\/amazon-cloudwatch-agent\/bin\/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:\/opt\/aws\/amazon-cloudwatch-agent\/bin\/config.json -s<\/code> komutu ile agent'\u0131 ba\u015flat\u0131rs\u0131n\u0131z. Agent'\u0131n loglar\u0131 g\u00f6ndermesi i\u00e7in gerekli IAM izinlerine sahip bir rol\u00fcn EC2 \u00f6rne\u011fine atanm\u0131\u015f olmas\u0131 gerekti\u011fini unutmay\u0131n.<\/p>\n<h3>3. SNS e-posta aboneli\u011fim neden onay bekliyor?<\/h3>\n<p>SNS, e-posta abonelikleri i\u00e7in g\u00fcvenlik amac\u0131yla bir onay ad\u0131m\u0131 gerektirir. Terraform ile aboneli\u011fi olu\u015fturdu\u011funuzda, belirtilen e-posta adresine bir onay e-postas\u0131 g\u00f6nderilir. Aboneli\u011fin aktif hale gelmesi ve bildirimleri alabilmeniz i\u00e7in bu e-postadaki onay ba\u011flant\u0131s\u0131na t\u0131klaman\u0131z gerekmektedir. Bu, istenmeyen e-posta al\u0131c\u0131lar\u0131na bildirim gitmesini engeller.<\/p>\n<h3>4. Log izleme sisteminin maliyetini nas\u0131l optimize edebilirim?<\/h3>\n<p>Maliyet optimizasyonu i\u00e7in birka\u00e7 anahtar nokta vard\u0131r:<\/p>\n<ul>\n<li><strong>Log Saklama S\u00fcreleri (Retention):<\/strong> CloudWatch Log Group'lar\u0131 i\u00e7in <code>retention_in_days<\/code> de\u011ferini dikkatlice belirleyin. Sadece gerekli s\u00fcre boyunca loglar\u0131 saklay\u0131n.<\/li>\n<li><strong>Gereksiz Loglar\u0131 Filtreleme:<\/strong> Yaln\u0131zca \u00f6nemli ve eyleme d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilir loglar\u0131 CloudWatch Logs'a g\u00f6nderin veya gereksiz loglar\u0131 filtrelemek i\u00e7in CloudWatch Agent'\u0131n yap\u0131land\u0131rma dosyas\u0131n\u0131 kullan\u0131n.<\/li>\n<li><strong>S3'e Ar\u015fivleme:<\/strong> Uzun vadeli veya ar\u015fivleme ama\u00e7l\u0131 loglar i\u00e7in CloudWatch Logs'tan daha ucuz olan S3'e ta\u015f\u0131ma ve daha sonra Athena ile sorgulama y\u00f6ntemlerini kullan\u0131n.<\/li>\n<li><strong>Metrik Filtre ve Alarm Say\u0131s\u0131:<\/strong> Yaln\u0131zca ger\u00e7ekten ihtiyac\u0131n\u0131z olan metrik filtreleri ve alarmlar\u0131 olu\u015fturun. \u00c7ok fazla metrik ve alarm, maliyeti art\u0131rabilir.<\/li>\n<\/ul>\n<h3>5. Terraform state dosyas\u0131n\u0131 g\u00fcvenli bir \u015fekilde nas\u0131l y\u00f6netebilirim?<\/h3>\n<p>Terraform state dosyas\u0131 (<code>terraform.tfstate<\/code>), AWS'te olu\u015fturdu\u011funuz t\u00fcm kaynaklar\u0131n bir haritas\u0131n\u0131 i\u00e7erir ve hassas bilgiler i\u00e7erebilir. Bu dosyay\u0131 yerel diskinizde b\u0131rakmak yerine, merkezi ve g\u00fcvenli bir yerde saklaman\u0131z \u015fiddetle tavsiye edilir. Genellikle Amazon S3 kovas\u0131 ve Amazon DynamoDB (kilitlenme i\u00e7in) birlikte kullan\u0131l\u0131r. Bu yap\u0131land\u0131rmay\u0131 <code>backend<\/code> blo\u011funda tan\u0131mlayabilirsiniz:<\/p>\n<pre><code class=\"language-terraform\">terraform {\n  backend \"s3\" {\n    bucket         = \"my-terraform-state-bucket-12345\" # Kendi benzersiz kova ad\u0131n\u0131z\u0131 kullan\u0131n\n    key            = \"path\/to\/my-app\/terraform.tfstate\"\n    region         = \"eu-central-1\"\n    encrypt        = true\n    dynamodb_table = \"terraform-lock-table\" # Terraform state kilitlemesi i\u00e7in\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u015fekilde, state dosyan\u0131z \u015fifrelenmi\u015f olarak S3'te saklan\u0131r ve tak\u0131m \u00fcyeleri aras\u0131nda g\u00fcvenli bir \u015fekilde payla\u015f\u0131labilir.<\/p>\n","protected":false},"excerpt":{"rendered":"Uygulamalar\u0131n\u0131z\u0131n ve altyap\u0131n\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak takip etmek, sorunlar\u0131 proaktif bir \u015fekilde tespit etmek ve h\u0131zl\u0131ca m\u00fcdahale&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1406],"tags":[],"class_list":{"0":"post-32088","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AWS&#039;te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber<\/title>\n<meta name=\"description\" content=\"Uygulamalar\u0131n\u0131z\u0131n ve altyap\u0131n\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak takip etmek, sorunlar\u0131 proaktif bir \u015fekilde tespit etmek ve h\u0131zl\u0131ca m\u00fcdahale etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, AWS \u00fczerinde Terraform kullanarak nas\u0131l g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve otomatik bir log izleme ve uyar\u0131 sistemi kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan ileri seviyeye kadar t\u00fcm detaylar\u0131 \u00f6\u011frenin.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AWS&#039;te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber\" \/>\n<meta property=\"og:description\" content=\"Uygulamalar\u0131n\u0131z\u0131n ve altyap\u0131n\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak takip etmek, sorunlar\u0131 proaktif bir \u015fekilde tespit etmek ve h\u0131zl\u0131ca m\u00fcdahale etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, AWS \u00fczerinde Terraform kullanarak nas\u0131l g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve otomatik bir log izleme ve uyar\u0131 sistemi kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan ileri seviyeye kadar t\u00fcm detaylar\u0131 \u00f6\u011frenin.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-17T12:31:42+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"AWS&#8217;te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber\",\"datePublished\":\"2025-10-17T12:31:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/\"},\"wordCount\":4570,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AWS\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/\",\"name\":\"AWS'te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-17T12:31:42+00:00\",\"description\":\"Uygulamalar\u0131n\u0131z\u0131n ve altyap\u0131n\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak takip etmek, sorunlar\u0131 proaktif bir \u015fekilde tespit etmek ve h\u0131zl\u0131ca m\u00fcdahale etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, AWS \u00fczerinde Terraform kullanarak nas\u0131l g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve otomatik bir log izleme ve uyar\u0131 sistemi kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan ileri seviyeye kadar t\u00fcm detaylar\u0131 \u00f6\u011frenin.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AWS&#8217;te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"AWS'te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber","description":"Uygulamalar\u0131n\u0131z\u0131n ve altyap\u0131n\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak takip etmek, sorunlar\u0131 proaktif bir \u015fekilde tespit etmek ve h\u0131zl\u0131ca m\u00fcdahale etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, AWS \u00fczerinde Terraform kullanarak nas\u0131l g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve otomatik bir log izleme ve uyar\u0131 sistemi kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan ileri seviyeye kadar t\u00fcm detaylar\u0131 \u00f6\u011frenin.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"AWS'te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber","og_description":"Uygulamalar\u0131n\u0131z\u0131n ve altyap\u0131n\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak takip etmek, sorunlar\u0131 proaktif bir \u015fekilde tespit etmek ve h\u0131zl\u0131ca m\u00fcdahale etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, AWS \u00fczerinde Terraform kullanarak nas\u0131l g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve otomatik bir log izleme ve uyar\u0131 sistemi kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan ileri seviyeye kadar t\u00fcm detaylar\u0131 \u00f6\u011frenin.","og_url":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-17T12:31:42+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"21 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"AWS&#8217;te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber","datePublished":"2025-10-17T12:31:42+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/"},"wordCount":4570,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AWS"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/","name":"AWS'te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-17T12:31:42+00:00","description":"Uygulamalar\u0131n\u0131z\u0131n ve altyap\u0131n\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak takip etmek, sorunlar\u0131 proaktif bir \u015fekilde tespit etmek ve h\u0131zl\u0131ca m\u00fcdahale etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, AWS \u00fczerinde Terraform kullanarak nas\u0131l g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve otomatik bir log izleme ve uyar\u0131 sistemi kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Ba\u015flang\u0131\u00e7tan ileri seviyeye kadar t\u00fcm detaylar\u0131 \u00f6\u011frenin.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/awste-gercek-zamanli-log-izleme-ve-uyari-sistemi-kurulumu-terraform-ile-adim-adim-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"AWS&#8217;te Ger\u00e7ek Zamanl\u0131 Log \u0130zleme ve Uyar\u0131 Sistemi Kurulumu: Terraform ile Ad\u0131m Ad\u0131m Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32088"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32088\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}