{"id":34057,"date":"2025-11-10T13:31:56","date_gmt":"2025-11-10T10:31:56","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/"},"modified":"2025-11-10T13:31:56","modified_gmt":"2025-11-10T10:31:56","slug":"hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/","title":{"rendered":"Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme"},"content":{"rendered":"<p>\n    Hetzner Cloud altyap\u0131n\u0131z\u0131n performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 AWS CloudWatch&#8217;un g\u00fc\u00e7l\u00fc izleme yetenekleriyle entegre etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, Terraform&#8217;un g\u00fcc\u00fcn\u00fc kullanarak Hetzner Cloud sunucular\u0131n\u0131zdan gelen metrikleri AWS CloudWatch&#8217;a nas\u0131l aktaraca\u011f\u0131n\u0131z\u0131, alarmlar kuraca\u011f\u0131n\u0131z\u0131 ve dinamik panolar olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Hibrit bulut izleme stratejinizi otomatize edin!\n<\/p>\n<p>\n    G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k IT d\u00fcnyas\u0131nda, farkl\u0131 bulut sa\u011flay\u0131c\u0131lar\u0131 \u00fczerinde \u00e7al\u0131\u015fan altyap\u0131lar yayg\u0131n bir durum haline geldi. Maliyet etkinli\u011fi, belirli \u00f6zellik setleri veya co\u011frafi yak\u0131nl\u0131k gibi nedenlerle, i\u015fletmeler genellikle birden fazla bulut platformunu bir arada kullanmay\u0131 tercih eder. Hetzner Cloud, g\u00fc\u00e7l\u00fc donan\u0131m se\u00e7enekleri ve rekabet\u00e7i fiyatland\u0131rmas\u0131yla \u00f6zellikle Avrupa&#8217;da pop\u00fcler bir se\u00e7enektir. Ancak, bir\u00e7ok kurulu\u015fun zaten AWS ekosisteminde merkezi bir izleme ve y\u00f6netim altyap\u0131s\u0131 bulunmaktad\u0131r. Bu durumda, Hetzner Cloud kaynaklar\u0131n\u0131 AWS CloudWatch gibi tan\u0131d\u0131k ve g\u00fc\u00e7l\u00fc bir izleme \u00e7\u00f6z\u00fcm\u00fcne entegre etmek, operasyonel verimlilik ve tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan kritik bir ihtiya\u00e7 haline gelir.\n<\/p>\n<p>\n    Peki, bu entegrasyonun sundu\u011fu temel avantajlar nelerdir? \u0130lk olarak, <strong>merkezi izleme panolar\u0131<\/strong> olu\u015fturman\u0131za olanak tan\u0131r. Farkl\u0131 platformlardaki kaynaklar\u0131n\u0131z\u0131 tek bir yerden g\u00f6zlemlemek, IT ekiplerinin &#8220;pane of glass&#8221; prensibini uygulamas\u0131n\u0131 sa\u011flar. Yani, t\u00fcm sistemin genel sa\u011fl\u0131\u011f\u0131n\u0131 ve performans\u0131n\u0131 tek bir ekrandan g\u00f6rebilirsiniz. Bu, sorun giderme s\u00fcrelerini k\u0131salt\u0131r ve daha proaktif bir yakla\u015f\u0131m benimsemenize yard\u0131mc\u0131 olur. \u00d6rne\u011fin, Hetzner \u00fczerindeki bir sunucunuzun CPU kullan\u0131m\u0131ndaki ani bir art\u0131\u015f ile AWS \u00fczerindeki bir Lambda fonksiyonunun hata oran\u0131ndaki art\u0131\u015f aras\u0131ndaki korelasyonu tek bir panoda g\u00f6rmek, k\u00f6k neden analizi i\u00e7in paha bi\u00e7ilmez bilgiler sunar.\n<\/p>\n<p>\n    \u0130kinci olarak, AWS CloudWatch&#8217;un <strong>geli\u015fmi\u015f alarm mekanizmalar\u0131<\/strong>, anomali tespiti ve otomatik bildirim \u00f6zellikleri, Hetzner kaynaklar\u0131n\u0131z i\u00e7in de kullan\u0131labilir hale gelir. Hetzner sunucular\u0131n\u0131zdaki disk dolulu\u011fu, bellek t\u00fcketimi veya a\u011f trafi\u011fi gibi kritik metrikler belirli e\u015fikleri a\u015ft\u0131\u011f\u0131nda, SMS, e-posta, Slack veya PagerDuty gibi kanallar arac\u0131l\u0131\u011f\u0131yla otomatik olarak uyar\u0131lar alabilirsiniz. Bu, operasyonel aksakl\u0131klar\u0131 h\u0131zl\u0131ca tespit etmenize ve potansiyel kesintilerin \u00f6n\u00fcne ge\u00e7menize yard\u0131mc\u0131 olur. AWS&#8217;nin sundu\u011fu otomasyon yetenekleri sayesinde, bu alarmlar\u0131 tetikleyen olaylara yan\u0131t olarak otomatik d\u00fczeltici eylemler bile ba\u015flatabilirsiniz; \u00f6rne\u011fin, bir sunucuyu yeniden ba\u015flatmak veya bir otomatik \u00f6l\u00e7eklendirme grubunu tetiklemek gibi (ger\u00e7i Hetzner taraf\u0131nda bu biraz daha manuel entegrasyon gerektirecektir).\n<\/p>\n<p>\n    \u00dc\u00e7\u00fcnc\u00fc ve belki de en \u00f6nemli avantajlardan biri, <strong>Terraform ile altyap\u0131n\u0131n otomasyonu<\/strong>dur. Terraform, &#8220;altyap\u0131 kod olarak&#8221; (Infrastructure as Code &#8211; IaC) prensibini benimseyerek, izleme altyap\u0131n\u0131z\u0131n da\u011f\u0131t\u0131m\u0131n\u0131 ve y\u00f6netimini otomatikle\u015ftirmenizi sa\u011flar. Bu, manuel yap\u0131land\u0131rma hatalar\u0131n\u0131 en aza indirir, tekrar \u00fcretilebilir ortamlar yarat\u0131r ve de\u011fi\u015fikliklerin s\u00fcr\u00fcm kontrol\u00fc alt\u0131nda tutulmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. Hetzner ve AWS gibi farkl\u0131 bulut sa\u011flay\u0131c\u0131lar\u0131 aras\u0131nda tutarl\u0131 bir izleme altyap\u0131s\u0131 kurmak, Terraform&#8217;un sa\u011flay\u0131c\u0131 tabanl\u0131 mimarisi sayesinde olduk\u00e7a kolayla\u015f\u0131r. Bu otomasyon, DevOps ekipleri i\u00e7in b\u00fcy\u00fck bir zaman tasarrufu sa\u011flar ve operasyonel y\u00fck\u00fc azalt\u0131r, b\u00f6ylece daha \u00e7ok inovasyona odaklanabilirler. Bu entegrasyon, hibrit bulut stratejisi izleyen modern i\u015fletmeler i\u00e7in vazge\u00e7ilmez bir ara\u00e7 setidir.\n<\/p>\n<h2>Temel Kavramlara H\u0131zl\u0131 Bir Bak\u0131\u015f: Hetzner, CloudWatch ve Terraform<\/h2>\n<p>\n    Bu entegrasyonun derinliklerine dalmadan \u00f6nce, projemizin temel ta\u015flar\u0131n\u0131 olu\u015fturan Hetzner Cloud, AWS CloudWatch ve Terraform hakk\u0131nda k\u0131sa bir \u00f6zet ge\u00e7mek faydal\u0131 olacakt\u0131r. Bu platformlar\u0131n her birinin kendi benzersiz yetenekleri ve kullan\u0131m alanlar\u0131 vard\u0131r ve bunlar\u0131 birlikte kullanmak, hibrit bulut y\u00f6netiminde g\u00fc\u00e7l\u00fc bir sinerji yarat\u0131r.\n<\/p>\n<h3>Hetzner Cloud Nedir?<\/h3>\n<p>\n    Hetzner Cloud, Almanya merkezli Hetzner Online taraf\u0131ndan sunulan bir bulut altyap\u0131s\u0131 (IaaS) hizmetidir. Sanal sunucular (CX serisi), depolama, a\u011f kaynaklar\u0131 ve y\u00f6netilen veritabanlar\u0131 gibi temel bulut hizmetleri sa\u011flar. \u00d6zellikle uygun fiyatlar\u0131, y\u00fcksek performansl\u0131 NVMe depolama se\u00e7enekleri ve gigabit seviyesindeki a\u011f ba\u011flant\u0131lar\u0131 ile dikkat \u00e7eker. Hetzner Cloud, kullan\u0131c\u0131lar\u0131n sanal makineleri h\u0131zl\u0131 bir \u015fekilde da\u011f\u0131tmas\u0131na, y\u00f6netmesine ve \u00f6l\u00e7eklendirmesine olanak tan\u0131r. Genellikle geli\u015ftiriciler, k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli i\u015fletmeler ve maliyet etkinli\u011fi arayan projeler taraf\u0131ndan tercih edilir. API eri\u015fimi sayesinde, sunucu olu\u015fturma, silme, IP atama gibi i\u015flemler programatik olarak kontrol edilebilir. Ancak, AWS veya Azure gibi &#8220;hiper \u00f6l\u00e7ekli&#8221; bulut sa\u011flay\u0131c\u0131lar\u0131n\u0131n sundu\u011fu kadar zengin bir ekosisteme (\u00f6rn. \u00e7ok say\u0131da y\u00f6netilen hizmet) sahip de\u011fildir. Bu nedenle, izleme ve otomasyon gibi baz\u0131 alanlarda harici ara\u00e7larla entegrasyon gerekebilir. Bizim senaryomuzda, Hetzner Cloud&#8217;da \u00e7al\u0131\u015fan sanal sunucular\u0131m\u0131z\u0131n (instance&#8217;lar\u0131m\u0131z\u0131n) CPU, RAM, disk I\/O ve a\u011f kullan\u0131m\u0131 gibi metriklerini izlemeyi hedefleyece\u011fiz.\n<\/p>\n<h3>AWS CloudWatch Ne \u0130\u015fe Yarar?<\/h3>\n<p>\n    AWS CloudWatch, Amazon Web Services (AWS) i\u00e7in kapsaml\u0131 bir izleme ve g\u00f6zlemlenebilirlik hizmetidir. AWS kaynaklar\u0131 (EC2, Lambda, S3 vb.) ve \u015firket i\u00e7i uygulamalar\u0131n\u0131z i\u00e7in veri toplar ve izler. CloudWatch; metrikler, g\u00fcnl\u00fckler (logs) ve olaylar (events) olmak \u00fczere \u00fc\u00e7 ana bile\u015fene sahiptir. Metrikler, kaynaklar\u0131n\u0131z\u0131n performans\u0131n\u0131 ve kullan\u0131m\u0131n\u0131 g\u00f6steren zaman serisi verileridir (\u00f6rn. CPU kullan\u0131m\u0131, disk okuma\/yazma, istek say\u0131s\u0131). CloudWatch, bu metrikleri otomatik olarak toplar veya \u00f6zel metrikler g\u00f6ndermenize olanak tan\u0131r. G\u00fcnl\u00fckler, uygulamalar\u0131n\u0131zdan ve hizmetlerinizden gelen log verilerini merkezi olarak toplaman\u0131z\u0131, depolaman\u0131z\u0131 ve analiz etmenizi sa\u011flar. Olaylar ise, AWS ortam\u0131n\u0131zdaki de\u011fi\u015fiklikleri veya \u00f6zel olaylar\u0131 takip etmenize ve bunlara yan\u0131t vermenize olanak tan\u0131r. CloudWatch&#8217;un en g\u00fc\u00e7l\u00fc y\u00f6nlerinden biri, bu metrikler, g\u00fcnl\u00fckler ve olaylar \u00fczerinde alarmlar kurabilme ve bu alarmlar tetiklendi\u011finde \u00e7e\u015fitli aksiyonlar (\u00f6rn. SNS bildirimleri g\u00f6nderme, Lambda fonksiyonu \u00e7al\u0131\u015ft\u0131rma) ba\u015flatabilmesidir. Ayr\u0131ca, izleme verilerini g\u00f6rselle\u015ftirmek i\u00e7in \u00f6zelle\u015ftirilebilir panolar (dashboards) sunar. Bu zengin \u00f6zellik seti, Hetzner kaynaklar\u0131m\u0131z\u0131n da ayn\u0131 merkezi sistemden izlenmesini son derece cazip hale getirir.\n<\/p>\n<h3>Altyap\u0131 Otomasyonunda Terraform&#8217;un Rol\u00fc<\/h3>\n<p>\n    Terraform, HashiCorp taraf\u0131ndan geli\u015ftirilen a\u00e7\u0131k kaynakl\u0131 bir altyap\u0131 kod olarak (Infrastructure as Code &#8211; IaC) arac\u0131d\u0131r. AWS, Azure, Google Cloud, Hetzner Cloud ve daha bir\u00e7ok platformda bulut kaynaklar\u0131n\u0131 g\u00fcvenli ve verimli bir \u015fekilde sa\u011flaman\u0131za ve y\u00f6netmenize olanak tan\u0131r. Terraform&#8217;un temel prensibi, istedi\u011finiz altyap\u0131 durumunu bir yap\u0131land\u0131rma dosyas\u0131 (HCL &#8211; HashiCorp Configuration Language) arac\u0131l\u0131\u011f\u0131yla tan\u0131mlaman\u0131zd\u0131r. Daha sonra Terraform, bu durumu mevcut altyap\u0131n\u0131zla kar\u015f\u0131la\u015ft\u0131r\u0131r ve aradaki farklar\u0131 gidermek i\u00e7in gerekli API \u00e7a\u011fr\u0131lar\u0131n\u0131 yapar. Bu yakla\u015f\u0131m, altyap\u0131y\u0131 manuel m\u00fcdahaleler yerine kod arac\u0131l\u0131\u011f\u0131yla y\u00f6neterek tekrarlanabilirli\u011fi, s\u00fcr\u00fcm kontrol\u00fcn\u00fc ve i\u015f birli\u011fini art\u0131r\u0131r.\n<\/p>\n<p>\n    Terraform&#8217;un &#8220;provider&#8221; (sa\u011flay\u0131c\u0131) modeli, farkl\u0131 bulut platformlar\u0131yla entegrasyonunu sa\u011flar. Her bulut sa\u011flay\u0131c\u0131s\u0131 veya hizmeti i\u00e7in bir Terraform sa\u011flay\u0131c\u0131s\u0131 bulunur (\u00f6rn. <code>aws<\/code> sa\u011flay\u0131c\u0131s\u0131, <code>hcloud<\/code> sa\u011flay\u0131c\u0131s\u0131). Bu sa\u011flay\u0131c\u0131lar, ilgili API&#8217;lerle etkile\u015fime girerek kaynaklar\u0131 olu\u015fturur, g\u00fcnceller veya siler. Bizim senaryomuzda, hem AWS kaynaklar\u0131n\u0131 (CloudWatch alarmlar\u0131, Lambda fonksiyonlar\u0131) hem de Hetzner Cloud kaynaklar\u0131n\u0131 (varsa, \u00f6rne\u011fin sunucu listelerini almak i\u00e7in) Terraform ile y\u00f6netebilece\u011fiz. Bu, tek bir ara\u00e7 ve tek bir kod taban\u0131 \u00fczerinden hibrit bulut altyap\u0131m\u0131z\u0131n izleme bile\u015fenlerini tamamen otomatikle\u015ftirebilece\u011fimiz anlam\u0131na gelir. Bu sayede, izleme altyap\u0131s\u0131n\u0131n kendisi de t\u0131pk\u0131 di\u011fer altyap\u0131 bile\u015fenleri gibi s\u00fcr\u00fcm kontrol\u00fc alt\u0131nda, \u015feffaf ve y\u00f6netilebilir olacakt\u0131r.\n<\/p>\n<h2>Hetzner Metriklerini CloudWatch&#8217;a Aktarma Mimarisi Nas\u0131l Kurulur?<\/h2>\n<p>\n    Hetzner Cloud, AWS CloudWatch ile do\u011frudan bir entegrasyon sunmad\u0131\u011f\u0131ndan, metrikleri Hetzner ortam\u0131ndan \u00e7ekip CloudWatch&#8217;a g\u00f6nderecek bir k\u00f6pr\u00fc kurmam\u0131z gerekiyor. Bu mimari genellikle birka\u00e7 ana bile\u015fenden olu\u015fur ve verinin Hetzner sunucular\u0131ndan CloudWatch&#8217;a g\u00fcvenli ve verimli bir \u015fekilde akmas\u0131n\u0131 sa\u011flar. Genelde izleme \u00e7\u00f6z\u00fcmleri i\u00e7in kullan\u0131lan &#8220;pull&#8221; (\u00e7ekme) veya &#8220;push&#8221; (g\u00f6nderme) modellerini burada da uygulayabiliriz. Bizim senaryomuzda, Hetzner&#8217;dan veriyi al\u0131p AWS CloudWatch&#8217;a &#8220;push&#8221; etme modelini kullanaca\u011f\u0131z.\n<\/p>\n<p>\n    Mimariyi basitle\u015ftirmek gerekirse, ad\u0131mlar \u015fu \u015fekildedir:\n<\/p>\n<ol>\n<li><strong>Hetzner API \u00dczerinden Veri Toplama:<\/strong> Hetzner Cloud&#8217;un kendi y\u00f6netim panelinde baz\u0131 temel sunucu metrikleri (CPU, a\u011f kullan\u0131m\u0131 gibi) g\u00f6r\u00fcn\u00fcr durumdad\u0131r. Ancak daha detayl\u0131 ve \u00f6zelle\u015ftirilebilir metrikler i\u00e7in genellikle sunucular\u0131n i\u00e7ine yerle\u015ftirilmi\u015f ajanlar kullanmak daha yayg\u0131nd\u0131r. Ancak basit ba\u015flang\u0131\u00e7 i\u00e7in, Hetzner&#8217;\u0131n sa\u011flad\u0131\u011f\u0131 API \u00fczerinden sunucu listesini ve temel durum bilgilerini \u00e7ekebiliriz. Daha ileri d\u00fczey senaryolarda, Hetzner sunucular\u0131na kurulacak bir <code>node_exporter<\/code> (Prometheus ekosisteminden) veya benzeri bir ajan ile CPU, RAM, disk I\/O, a\u011f, s\u00fcre\u00e7ler gibi \u00e7ok daha detayl\u0131 i\u015fletim sistemi seviyesi metrikler toplanabilir. Bu metrikler daha sonra bir betik arac\u0131l\u0131\u011f\u0131yla i\u015flenmeye haz\u0131r hale getirilir.<\/li>\n<li><strong>Veri \u0130\u015fleme ve AWS&#8217;ye G\u00f6nderme:<\/strong> Toplanan metriklerin CloudWatch&#8217;un anlayaca\u011f\u0131 formata d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi ve AWS&#8217;ye g\u00f6nderilmesi gerekir. Bu ad\u0131m i\u00e7in genellikle Python veya Bash gibi dillerde yaz\u0131lm\u0131\u015f \u00f6zel bir betik kullan\u0131l\u0131r. Bu betik, Hetzner API&#8217;sinden veya yerel ajanlardan ald\u0131\u011f\u0131 metrikleri CloudWatch&#8217;un <code>PutMetricData<\/code> API&#8217;sine uygun hale getirir. Bu metrikleri AWS&#8217;ye g\u00f6ndermenin birka\u00e7 yolu vard\u0131r:\n<ul>\n<li><strong>AWS Lambda Fonksiyonu:<\/strong> En yayg\u0131n ve sunucusuz (serverless) yakla\u015f\u0131m. Belirli aral\u0131klarla (\u00f6rn. her 5 dakikada bir) tetiklenecek bir Lambda fonksiyonu yaz\u0131l\u0131r. Bu fonksiyon, Hetzner API&#8217;sine ba\u011flan\u0131r, metrikleri \u00e7eker, i\u015fler ve CloudWatch&#8217;a g\u00f6nderir. Lambda&#8217;n\u0131n avantajlar\u0131; sunucu y\u00f6netimi olmamas\u0131, kulland\u0131k\u00e7a \u00f6de modeli ve kolay \u00f6l\u00e7eklenebilirliktir.<\/li>\n<li><strong>AWS EC2 \u00dczerinde \u00c7al\u0131\u015fan Bir Ajan\/Betik:<\/strong> Daha fazla kontrol gerektiren veya daha karma\u015f\u0131k veri i\u015fleme ad\u0131mlar\u0131 olan senaryolarda, bir EC2 instance&#8217;\u0131 \u00fczerinde \u00e7al\u0131\u015fan bir betik veya \u00f6zel bir izleme ajan\u0131 kullan\u0131labilir. Bu ajan, Hetzner sunucular\u0131ndan SSH veya API arac\u0131l\u0131\u011f\u0131yla metrikleri \u00e7eker ve CloudWatch&#8217;a g\u00f6nderir. Bu yakla\u015f\u0131m, ajan ve sunucu y\u00f6netimi gerektirir ancak daha fazla esneklik sunabilir.<\/li>\n<li><strong>Hetzner Sunucusu \u00dczerinde \u00c7al\u0131\u015fan Bir Ajan:<\/strong> Metrikleri Hetzner sunucusunun kendisinden toplay\u0131p do\u011frudan CloudWatch&#8217;a g\u00f6nderen bir ajan (\u00f6rn. AWS CloudWatch Agent&#8217;\u0131n \u00f6zel yap\u0131land\u0131rmas\u0131 veya Prometheus Agent&#8217;\u0131n remote_write \u00f6zelli\u011fi ile) daha karma\u015f\u0131k olabilir ancak en d\u00fc\u015f\u00fck gecikmeyle veri sa\u011flar. Ancak bu, Hetzner sunucular\u0131n\u0131n AWS kimlik bilgilerine eri\u015fimi olmas\u0131n\u0131 gerektirebilir ki bu g\u00fcvenlik a\u00e7\u0131s\u0131ndan dikkatli y\u00f6netilmesi gereken bir durumdur. Bizim \u00f6rne\u011fimizde, AWS Lambda yakla\u015f\u0131m\u0131n\u0131 benimseyece\u011fiz.<\/li>\n<\/ul>\n<\/li>\n<li><strong>G\u00fcvenlik ve \u0130zinler:<\/strong> Metrik toplama ve g\u00f6nderme s\u00fcrecinde g\u00fcvenlik kritik \u00f6neme sahiptir. Hetzner API token&#8217;\u0131 ve AWS kimlik bilgileri g\u00fcvenli bir \u015fekilde y\u00f6netilmelidir. AWS taraf\u0131nda, metrikleri CloudWatch&#8217;a g\u00f6nderecek Lambda fonksiyonuna veya EC2 instance&#8217;\u0131na minimum ayr\u0131cal\u0131k ilkesiyle IAM rolleri ve politikalar\u0131 atanmal\u0131d\u0131r. Bu roller, yaln\u0131zca <code>cloudwatch:PutMetricData<\/code>, <code>logs:CreateLogGroup<\/code>, <code>logs:CreateLogStream<\/code> ve <code>logs:PutLogEvents<\/code> gibi gerekli izinleri i\u00e7ermelidir. Hetzner API token&#8217;\u0131 ise AWS Secrets Manager gibi g\u00fcvenli bir hizmette saklanmal\u0131 ve Lambda fonksiyonu taraf\u0131ndan \u00e7al\u0131\u015fma zaman\u0131nda \u00e7ekilmelidir. Bu, hassas bilgilerin kodda veya yap\u0131land\u0131rma dosyalar\u0131nda a\u00e7\u0131k\u00e7a bulunmas\u0131n\u0131 engeller.\n<\/p>\n<p>\n    Bu mimari, Hetzner Cloud&#8217;daki kaynaklar\u0131n\u0131z\u0131n performans ve durum verilerini, AWS ekosisteminizin geri kalan\u0131yla birlikte merkezi olarak izlemenize olanak tan\u0131r. Terraform ile bu mimarinin t\u00fcm AWS bile\u015fenlerini (Lambda, IAM, EventBridge, CloudWatch panolar\u0131 ve alarmlar\u0131) otomatik olarak da\u011f\u0131tabilirsiniz.\n<\/p>\n<h2>Ad\u0131m Ad\u0131m Uygulama: Terraform ile Entegrasyon Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>\n    \u015eimdi, bu teorik mimariyi prati\u011fe d\u00f6kelim ve Hetzner Cloud kaynaklar\u0131n\u0131 AWS CloudWatch&#8217;a Terraform ile nas\u0131l entegre edece\u011fimizi ad\u0131m ad\u0131m g\u00f6relim. Bu b\u00f6l\u00fcm, gerekli \u00f6n ko\u015fullardan ba\u015flay\u0131p, IAM izinlerinin yap\u0131land\u0131r\u0131lmas\u0131na, metrik toplama beti\u011finin olu\u015fturulmas\u0131na ve son olarak AWS Lambda ve EventBridge ile otomasyonun sa\u011flanmas\u0131na kadar t\u00fcm s\u00fcreci kapsayacakt\u0131r.\n<\/p>\n<h3>\u00d6n Ko\u015fullar ve Haz\u0131rl\u0131klar Nelerdir?<\/h3>\n<p>\n    Entegrasyona ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki ara\u00e7 ve bilgilere sahip oldu\u011funuzdan emin olun:\n<\/p>\n<ol>\n<li><strong>AWS Hesab\u0131 ve Kimlik Bilgileri:<\/strong> AWS CLI&#8217;yi yap\u0131land\u0131rmak ve Terraform&#8217;un AWS kaynaklar\u0131n\u0131 y\u00f6netebilmesi i\u00e7in bir AWS hesab\u0131n\u0131z ve IAM kullan\u0131c\u0131n\u0131z (veya rol\u00fcn\u00fcz) olmal\u0131. Bu kullan\u0131c\u0131n\u0131n Terraform ile kaynak olu\u015fturma\/de\u011fi\u015ftirme yetkileri bulunmal\u0131d\u0131r. AWS CLI&#8217;nizin yap\u0131land\u0131r\u0131lm\u0131\u015f oldu\u011fundan emin olun (<code>aws configure<\/code>).<\/li>\n<li><strong>Hetzner Cloud Hesab\u0131 ve API Token:<\/strong> Hetzner Cloud hesab\u0131n\u0131z olmal\u0131 ve bir API token&#8217;\u0131 olu\u015fturmu\u015f olmal\u0131s\u0131n\u0131z. Bu token, Hetzner API&#8217;sine eri\u015fim sa\u011flamak i\u00e7in kullan\u0131lacakt\u0131r. Hetzner Cloud panelinizden &#8220;Access&#8221; -> &#8220;API Tokens&#8221; b\u00f6l\u00fcm\u00fcnden yeni bir token olu\u015fturabilirsiniz. Bu token&#8217;\u0131 g\u00fcvende tutun.<\/li>\n<li><strong>Terraform Kurulumu:<\/strong> Bilgisayar\u0131n\u0131zda Terraform&#8217;un kurulu oldu\u011fundan emin olun. Resmi HashiCorp web sitesinden indirme ve kurulum talimatlar\u0131na ula\u015fabilirsiniz.<\/li>\n<li><strong>Python ve Ba\u011f\u0131ml\u0131l\u0131klar:<\/strong> Metrik toplama beti\u011fini yazmak i\u00e7in Python (tercihen 3.9 veya \u00fcst\u00fc) kurulu olmal\u0131. Gerekli k\u00fct\u00fcphaneler (<code>boto3<\/code> AWS SDK i\u00e7in, <code>hcloud<\/code> Hetzner API i\u00e7in) <code>pip<\/code> ile kurulabilir.<\/li>\n<li><strong>Zip Ar\u015fivleyici:<\/strong> Lambda fonksiyonunuzun kodunu bir zip dosyas\u0131na paketlemek i\u00e7in bir ara\u00e7 (\u00f6rn. Linux\/macOS&#8217;ta <code>zip<\/code> komutu, Windows&#8217;ta uygun bir ara\u00e7) gerekecektir.<\/li>\n<\/ol>\n<p>\n    Bu \u00f6n ko\u015fullar\u0131 tamamlad\u0131ktan sonra, Terraform projenizi olu\u015fturmaya ba\u015flayabiliriz. Bo\u015f bir dizin olu\u015fturun ve t\u00fcm Terraform yap\u0131land\u0131rma dosyalar\u0131n\u0131z\u0131 bu dizinin i\u00e7inde tutun.\n<\/p>\n<h3>Terraform Yap\u0131land\u0131rmas\u0131: Providers ve IAM \u0130zinleri<\/h3>\n<p>\n    Terraform projemizin temelini olu\u015fturan sa\u011flay\u0131c\u0131lar\u0131 (providers) tan\u0131mlayarak ve AWS taraf\u0131nda gerekli IAM (Identity and Access Management) rollerini ve politikalar\u0131n\u0131 olu\u015fturarak ba\u015fl\u0131yoruz. Bu ad\u0131mlar, Lambda fonksiyonumuzun CloudWatch&#8217;a metrik g\u00f6nderebilmesi i\u00e7in gerekli yetkileri sa\u011flar.\n<\/p>\n<p>\n    A\u015fa\u011f\u0131daki Terraform kodunu <code>main.tf<\/code> adl\u0131 bir dosyaya kaydedin:\n<\/p>\n<div class=\"code-container\">\n<pre><code class=\"language-hcl\"># AWS Sa\u011flay\u0131c\u0131s\u0131n\u0131 Tan\u0131mlama\nprovider \"aws\" {\n  region = var.aws_region # De\u011fi\u015fkenlerden al\u0131nacak b\u00f6lge\n}\n\n# Hetzner Cloud Sa\u011flay\u0131c\u0131s\u0131n\u0131 Tan\u0131mlama (sadece Hetzner kaynaklar\u0131n\u0131 y\u00f6netmek isterseniz gerekli, burada sadece token i\u00e7in kullan\u0131ld\u0131)\nprovider \"hcloud\" {\n  token = var.hcloud_token\n}\n\n# Hetzner API Token&#039;\u0131 ve AWS B\u00f6lgesi i\u00e7in de\u011fi\u015fkenler\nvariable \"hcloud_token\" {\n  description = \"Hetzner Cloud API Token\u0131\"\n  type        = string\n  sensitive   = true # Hassas bilgi oldu\u011funu belirtir\n}\n\nvariable \"aws_region\" {\n  description = \"AWS B\u00f6lgesi\"\n  type        = string\n  default     = \"eu-central-1\" # Varsay\u0131lan b\u00f6lge olarak Frankfurt se\u00e7ilebilir\n}\n\n# CloudWatch&#039;a metrik yay\u0131nlayacak Lambda veya EC2 i\u00e7in IAM Rol\u00fc\nresource \"aws_iam_role\" \"cloudwatch_publisher_role\" {\n  name = \"cloudwatch-metrics-publisher-role\"\n\n  # Bu rol\u00fc kimlerin \u00fcstlenebilece\u011fini tan\u0131mlar (Lambda hizmeti)\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\",\n    Statement = [\n      {\n        Action = \"sts:AssumeRole\",\n        Effect = \"Allow\",\n        Principal = {\n          Service = \"lambda.amazonaws.com\" # Bu rol\u00fc Lambda fonksiyonlar\u0131n\u0131n \u00fcstlenmesine izin verir\n        },\n      },\n    ],\n  })\n\n  tags = {\n    Environment = \"Monitoring\"\n  }\n}\n\n# CloudWatch&#039;a metrik g\u00f6nderme ve log yazma yetkisi veren IAM Politikas\u0131\nresource \"aws_iam_policy\" \"cloudwatch_publish_policy\" {\n  name        = \"cloudwatch-publish-policy\"\n  description = \"Allows publishing custom metrics to CloudWatch and writing logs\"\n\n  policy = jsonencode({\n    Version = \"2012-10-17\",\n    Statement = [\n      {\n        Action = [\n          \"cloudwatch:PutMetricData\", # \u00d6zel metrikleri CloudWatch&#039;a g\u00f6nderme izni\n          \"logs:CreateLogGroup\",      # Log grubu olu\u015fturma izni\n          \"logs:CreateLogStream\",     # Log ak\u0131\u015f\u0131 olu\u015fturma izni\n          \"logs:PutLogEvents\"         # Log olaylar\u0131n\u0131 g\u00f6nderme izni\n        ],\n        Effect   = \"Allow\",\n        Resource = \"*\" # T\u00fcm kaynaklar i\u00e7in izin (daha k\u0131s\u0131tl\u0131 yap\u0131labilir)\n      },\n    ],\n  })\n\n  tags = {\n    Environment = \"Monitoring\"\n  }\n}\n\n# IAM Rol\u00fc ile IAM Politikas\u0131n\u0131 \u0130li\u015fkilendirme\nresource \"aws_iam_role_policy_attachment\" \"attach_cloudwatch_publish_policy\" {\n  role       = aws_iam_role.cloudwatch_publisher_role.name\n  policy_arn = aws_iam_policy.cloudwatch_publish_policy.arn\n}\n\n# Lambda fonksiyonunun kullanaca\u011f\u0131 IAM Instance Profile (iste\u011fe ba\u011fl\u0131, EC2 i\u00e7in daha \u00e7ok)\n# Lambda i\u00e7in direk rol ARN&#039;\u0131 yeterlidir.<\/pre>\n<p><\/code>\n<\/div>\n<p>\n    Yukar\u0131daki kod blo\u011fu, AWS \u00fczerinde CloudWatch'a metrik g\u00f6nderebilecek ve log yazabilecek bir IAM rol\u00fc tan\u0131mlar. Bu rol, daha sonra Lambda fonksiyonumuz taraf\u0131ndan \u00fcstlenilecektir. <code>hcloud_token<\/code> de\u011fi\u015fkenini <code>terraform.tfvars<\/code> dosyas\u0131na veya do\u011frudan komut sat\u0131r\u0131na parametre olarak sa\u011flamay\u0131 unutmay\u0131n. \u00d6rne\u011fin: <code>terraform plan -var='hcloud_token=YOUR_HETZNER_API_TOKEN'<\/code>. G\u00fcvenlik i\u00e7in, bu t\u00fcr hassas bilgileri Terraform state dosyas\u0131na kaydetmek yerine AWS Secrets Manager gibi bir hizmette saklamak ve Lambda'n\u0131n \u00e7al\u0131\u015fma zaman\u0131nda \u00e7ekmesini sa\u011flamak daha iyi bir uygulamad\u0131r. Ancak bu \u00f6rnekte basitlik ad\u0131na do\u011frudan de\u011fi\u015fken olarak ge\u00e7ildi.\n<\/p>\n<h3>Hetzner Metriklerini \u00c7eken Betik Olu\u015fturma ve Da\u011f\u0131tma<\/h3>\n<p>\n    \u015eimdi Hetzner Cloud sunucular\u0131ndan metrikleri \u00e7ekecek ve bunlar\u0131 CloudWatch'a g\u00f6nderecek Python beti\u011fini olu\u015ftural\u0131m. Bu betik, Hetzner API'sini kullanarak sunucu listesini alacak ve her bir sunucu i\u00e7in varsay\u0131lan metrikleri (ger\u00e7ek metrikler yerine \u00f6rnek de\u011ferler) olu\u015fturup AWS Boto3 SDK's\u0131 arac\u0131l\u0131\u011f\u0131yla CloudWatch'a g\u00f6nderecektir. Ger\u00e7ek bir senaryoda, bu betik, Hetzner sunucular\u0131na kurulu bir izleme ajan\u0131ndan (\u00f6rn. <code>node_exporter<\/code>) veya Hetzner'\u0131n kendi metrik API'sinden (varsa) ger\u00e7ek verileri \u00e7ekerdi.\n<\/p>\n<p>\n    A\u015fa\u011f\u0131daki Python kodunu <code>main.py<\/code> adl\u0131 bir dosyaya kaydedin:\n<\/p>\n<div class=\"code-container\">\n<pre><code class=\"language-python\">import os\nimport boto3\nimport json\nfrom hcloud import Client\nfrom datetime import datetime\n\n# Hetzner API istemcisi i\u00e7in token, ortam de\u011fi\u015fkeninden al\u0131n\u0131r\nHETZNER_API_TOKEN = os.environ.get(\"HCLOUD_TOKEN\")\nhcloud_client = Client(token=HETZNER_API_TOKEN)\n\n# AWS CloudWatch istemcisi, b\u00f6lge ortam de\u011fi\u015fkeninden al\u0131n\u0131r\ncloudwatch = boto3.client(&#039;cloudwatch&#039;, region_name=os.environ.get(\"AWS_REGION\", \"eu-central-1\"))\n\ndef get_hetzner_server_metrics():\n    \"\"\"\n    Hetzner Cloud sunucular\u0131ndan metrikleri \u00e7eker.\n    Bu \u00f6rnekte, do\u011frudan Hetzner Cloud API&#039;sinden ger\u00e7ek performans metrikleri \u00e7ekmek yerine,\n    sunucu bilgilerini al\u0131p varsay\u0131lan\/\u00f6rnek performans metrikleri olu\u015fturuyoruz.\n    Ger\u00e7ek senaryoda, Hetzner sunucular\u0131 \u00fczerinde \u00e7al\u0131\u015fan bir ajandan veya\n    Hetzner&#039;\u0131n sundu\u011fu bir metrik API&#039;sinden veri al\u0131nmal\u0131d\u0131r.\n    \"\"\"\n    servers = hcloud_client.servers.get_all()\n    metrics = []\n    current_time = datetime.utcnow().isoformat()\n\n    for server in servers:\n        # Her sunucu i\u00e7in benzersiz boyutlar (dimensions) tan\u0131ml\u0131yoruz\n        dimensions = [\n            {&#039;Name&#039;: &#039;ServerId&#039;, &#039;Value&#039;: str(server.id)},\n            {&#039;Name&#039;: &#039;ServerName&#039;, &#039;Value&#039;: server.name},\n            {&#039;Name&#039;: &#039;ServerType&#039;, &#039;Value&#039;: server.server_type.name}\n        ]\n\n        # \u00d6rnek CPU kullan\u0131m metri\u011fi\n        metrics.append({\n            &#039;MetricName&#039;: &#039;CPUUtilization&#039;,\n            &#039;Dimensions&#039;: dimensions,\n            &#039;Timestamp&#039;: current_time,\n            &#039;Value&#039;: float(os.environ.get(f\"CPU_UTIL_{server.id}\", \"50.0\")), # Dinamik veya varsay\u0131lan de\u011fer\n            &#039;Unit&#039;: &#039;Percent&#039;\n        })\n        # \u00d6rnek Bellek kullan\u0131m metri\u011fi\n        metrics.append({\n            &#039;MetricName&#039;: &#039;MemoryUtilization&#039;,\n            &#039;Dimensions&#039;: dimensions,\n            &#039;Timestamp&#039;: current_time,\n            &#039;Value&#039;: float(os.environ.get(f\"MEM_UTIL_{server.id}\", \"70.0\")), # Dinamik veya varsay\u0131lan de\u011fer\n            &#039;Unit&#039;: &#039;Percent&#039;\n        })\n        # \u00d6rnek Gelen A\u011f Trafi\u011fi metri\u011fi (Bytes)\n        metrics.append({\n            &#039;MetricName&#039;: &#039;NetworkIn&#039;,\n            &#039;Dimensions&#039;: dimensions,\n            &#039;Timestamp&#039;: current_time,\n            &#039;Value&#039;: float(os.environ.get(f\"NET_IN_{server.id}\", \"123456\")), # Dinamik veya varsay\u0131lan de\u011fer\n            &#039;Unit&#039;: &#039;Bytes&#039;\n        })\n        # \u00d6rnek Giden A\u011f Trafi\u011fi metri\u011fi (Bytes)\n        metrics.append({\n            &#039;MetricName&#039;: &#039;NetworkOut&#039;,\n            &#039;Dimensions&#039;: dimensions,\n            &#039;Timestamp&#039;: current_time,\n            &#039;Value&#039;: float(os.environ.get(f\"NET_OUT_{server.id}\", \"654321\")), # Dinamik veya varsay\u0131lan de\u011fer\n            &#039;Unit&#039;: &#039;Bytes&#039;\n        })\n    return metrics\n\ndef publish_metrics_to_cloudwatch(metrics):\n    \"\"\"\n    Toplanan metrikleri AWS CloudWatch&#039;a g\u00f6nderir.\n    \"\"\"\n    if not metrics:\n        print(\"G\u00f6nderilecek metrik bulunamad\u0131.\")\n        return\n\n    # CloudWatch PutMetricData API&#039;si tek seferde en fazla 20 metrik giri\u015fi kabul eder.\n    # Bu y\u00fczden metrikleri par\u00e7alara ay\u0131r\u0131yoruz.\n    for i in range(0, len(metrics), 20):\n        batch = metrics[i:i+20]\n        try:\n            response = cloudwatch.put_metric_data(\n                Namespace=&#039;HetznerCloud&#039;, # \u00d6zel metrikler i\u00e7in bir namespace tan\u0131ml\u0131yoruz\n                MetricData=batch\n            )\n            print(f\"CloudWatch&#039;a {len(batch)} metrik g\u00f6nderildi. Yan\u0131t: {response.get(&#039;ResponseMetadata&#039;, {}).get(&#039;HTTPStatusCode&#039;)}\")\n        except Exception as e:\n            print(f\"Metrik g\u00f6nderilirken hata olu\u015ftu: {e}\")\n\ndef lambda_handler(event, context):\n    \"\"\"\n    AWS Lambda taraf\u0131ndan \u00e7a\u011fr\u0131lacak ana fonksiyon.\n    \"\"\"\n    print(f\"Lambda Tetiklendi: {json.dumps(event)}\")\n    if not HETZNER_API_TOKEN:\n        print(\"HCLOUD_TOKEN \u00e7evre de\u011fi\u015fkeni ayarlanmam\u0131\u015f. L\u00fctfen Lambda yap\u0131land\u0131rmas\u0131n\u0131 kontrol edin.\")\n        return {\n            &#039;statusCode&#039;: 500,\n            &#039;body&#039;: json.dumps(&#039;HCLOUD_TOKEN missing&#039;)\n        }\n\n    hetzner_metrics = get_hetzner_server_metrics()\n    publish_metrics_to_cloudwatch(hetzner_metrics)\n\n    return {\n        &#039;statusCode&#039;: 200,\n        &#039;body&#039;: json.dumps(&#039;Hetzner metrikleri ba\u015far\u0131yla CloudWatch\\&#039;a g\u00f6nderildi!&#039;)\n    }\n\nif __name__ == \"__main__\":\n    # Yerel test i\u00e7in\n    os.environ[&#039;HCLOUD_TOKEN&#039;] = &#039;YOUR_HETZNER_API_TOKEN&#039; # Yerel test i\u00e7in Hetzner token&#039;\u0131n\u0131z\u0131 buraya girin\n    os.environ[&#039;AWS_REGION&#039;] = &#039;eu-central-1&#039; # Yerel test i\u00e7in AWS b\u00f6lgenizi girin\n    lambda_handler(None, None)<\/pre>\n<p><\/code>\n<\/div>\n<p>\n    Bu beti\u011fi Lambda'ya da\u011f\u0131tmadan \u00f6nce, gerekli Python k\u00fct\u00fcphanelerini (<code>boto3<\/code>, <code>hcloud<\/code>) de i\u00e7eren bir zip dosyas\u0131 olu\u015fturman\u0131z gerekir. Yeni bir dizin olu\u015fturun, <code>main.py<\/code> dosyas\u0131n\u0131 i\u00e7ine kopyalay\u0131n ve ard\u0131ndan k\u00fct\u00fcphaneleri bu dizine y\u00fckleyin:\n<\/p>\n<div class=\"code-container\">\n<pre><code class=\"language-bash\">mkdir lambda_package\ncp main.py lambda_package\/\npip install boto3 hcloud -t lambda_package\/\ncd lambda_package\/\nzip -r ..\/lambda_function_payload.zip .\ncd ..<\/pre>\n<p><\/code>\n<\/div>\n<p>\n    Bu komutlar, <code>main.py<\/code> dosyas\u0131n\u0131 ve t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 i\u00e7eren <code>lambda_function_payload.zip<\/code> adl\u0131 bir zip dosyas\u0131 olu\u015fturacakt\u0131r.\n<\/p>\n<h3>AWS Lambda ve EventBridge ile Otomatik Metrik Toplama<\/h3>\n<p>\n    \u015eimdi Terraform'u kullanarak bu zip dosyas\u0131n\u0131 bir AWS Lambda fonksiyonu olarak da\u011f\u0131tal\u0131m ve AWS EventBridge (eski ad\u0131yla CloudWatch Events) kullanarak belirli aral\u0131klarla tetiklenmesini sa\u011flayal\u0131m. Bu, Hetzner metriklerinin otomatik olarak toplan\u0131p CloudWatch'a g\u00f6nderilmesini sa\u011flayacakt\u0131r. Bu Terraform kodunu da <code>main.tf<\/code> dosyan\u0131za ekleyebilirsiniz.\n<\/p>\n<div class=\"code-container\">\n<pre><code class=\"language-hcl\"># Lambda fonksiyonu i\u00e7in zip dosyas\u0131n\u0131 y\u00fckleyen resource\nresource \"aws_s3_bucket_object\" \"lambda_zip_upload\" {\n  bucket = var.lambda_s3_bucket # Lambda zip dosyas\u0131n\u0131n y\u00fcklenece\u011fi S3 bucket\n  key    = \"lambda_function_payload.zip\"\n  source = \"lambda_function_payload.zip\" # Yerel zip dosyam\u0131z\n  etag   = filemd5(\"lambda_function_payload.zip\") # Dosya de\u011fi\u015fikli\u011finde g\u00fcncellenmesi i\u00e7in\n}\n\n# AWS Lambda Fonksiyonu\nresource \"aws_lambda_function\" \"hetzner_metrics_collector\" {\n  filename      = \"lambda_function_payload.zip\" # Yerel dosya yolunu belirtiyoruz, S3&#039;e y\u00fcklendi\u011fi i\u00e7in bu asl\u0131nda S3 bucket objesine i\u015faret ediyor.\n  s3_bucket     = aws_s3_bucket_object.lambda_zip_upload.bucket\n  s3_key        = aws_s3_bucket_object.lambda_zip_upload.key\n  function_name = \"HetznerCloudMetricsCollector\"\n  role          = aws_iam_role.cloudwatch_publisher_role.arn # Daha \u00f6nce olu\u015fturdu\u011fumuz IAM rol\u00fc\n  handler       = \"main.lambda_handler\" # Zip i\u00e7indeki ana dosya (main.py) ve fonksiyon ad\u0131 (lambda_handler)\n  runtime       = \"python3.9\"\n  timeout       = 300 # Saniye cinsinden (5 dakika)\n  memory_size   = 128 # MB cinsinden\n\n  # Hetzner API token&#039;\u0131 ve AWS b\u00f6lgesini Lambda ortam de\u011fi\u015fkenleri olarak ge\u00e7iyoruz\n  environment {\n    variables = {\n      HCLOUD_TOKEN = var.hcloud_token\n      AWS_REGION   = var.aws_region\n    }\n  }\n\n  # Lambda kodunda bir de\u011fi\u015fiklik oldu\u011funda fonksiyonu yeniden da\u011f\u0131tmak i\u00e7in\n  source_code_hash = filebase64sha256(\"lambda_function_payload.zip\")\n\n  tags = {\n    Environment = \"Monitoring\"\n  }\n}\n\n# Lambda zip dosyas\u0131n\u0131n y\u00fcklenece\u011fi S3 bucket&#039;\u0131 (e\u011fer yoksa olu\u015fturur)\nresource \"aws_s3_bucket\" \"lambda_code_bucket\" {\n  bucket = var.lambda_s3_bucket\n  acl    = \"private\" # \u00d6zel olmal\u0131\n\n  versioning {\n    enabled = true\n  }\n\n  tags = {\n    Environment = \"Monitoring\"\n  }\n}\n\nvariable \"lambda_s3_bucket\" {\n  description = \"Lambda kodunun depolanaca\u011f\u0131 S3 bucket ad\u0131\"\n  type        = string\n  default     = \"hetzner-metrics-lambda-code-bucket-unique\" # Benzersiz bir isim se\u00e7in\n}\n\n# CloudWatch EventBridge Kural\u0131: Lambda&#039;y\u0131 her 5 dakikada bir tetikler\nresource \"aws_cloudwatch_event_rule\" \"every_five_minutes\" {\n  name                = \"HetznerCloudMetricsEveryFiveMinutes\"\n  description         = \"Triggers Hetzner Cloud metrics collection every 5 minutes\"\n  schedule_expression = \"rate(5 minutes)\" # Her 5 dakikada bir \u00e7al\u0131\u015ft\u0131r\n  is_enabled          = true\n\n  tags = {\n    Environment = \"Monitoring\"\n  }\n}\n\n# EventBridge Kural\u0131n\u0131n hedefi: Lambda fonksiyonu\nresource \"aws_cloudwatch_event_target\" \"lambda_target\" {\n  rule      = aws_cloudwatch_event_rule.every_five_minutes.name\n  target_id = \"HetznerCloudMetricsLambdaTarget\"\n  arn       = aws_lambda_function.hetzner_metrics_collector.arn\n}\n\n# CloudWatch EventBridge&#039;in Lambda fonksiyonunu \u00e7a\u011f\u0131rmas\u0131na izin veren izin\nresource \"aws_lambda_permission\" \"allow_cloudwatch_to_call_lambda\" {\n  statement_id  = \"AllowExecutionFromCloudWatch\"\n  action        = \"lambda:InvokeFunction\"\n  function_name = aws_lambda_function.hetzner_metrics_collector.function_name\n  principal     = \"events.amazonaws.com\"\n  source_arn    = aws_cloudwatch_event_rule.every_five_minutes.arn\n}<\/pre>\n<p><\/code>\n<\/div>\n<p>\n    Terraform kodunuzu \u00e7al\u0131\u015ft\u0131r\u0131n:\n<\/p>\n<div class=\"code-container\">\n<pre><code class=\"language-bash\">terraform init\nterraform plan -var=&#039;hcloud_token=YOUR_HETZNER_API_TOKEN&#039;\nterraform apply -var=&#039;hcloud_token=YOUR_HETZNER_API_TOKEN&#039;<\/pre>\n<p><\/code>\n<\/div>\n<p>\n    Bu ad\u0131mlar\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, Hetzner Cloud metrikleriniz otomatik olarak AWS CloudWatch'a akmaya ba\u015flayacakt\u0131r. Birka\u00e7 dakika sonra AWS konsoluna gidip CloudWatch hizmeti alt\u0131nda \"Metrics\" b\u00f6l\u00fcm\u00fcnde \"HetznerCloud\" ad alan\u0131n\u0131 g\u00f6rmeniz gerekir. Bu ad alan\u0131n\u0131n alt\u0131nda, Hetzner sunucular\u0131n\u0131zdan gelen \"CPUUtilization\", \"MemoryUtilization\" gibi metrikleri g\u00f6rebilirsiniz.\n<\/p>\n<h2>CloudWatch Panolar\u0131 ve Alarmlar\u0131 ile \u0130zlemeyi Geli\u015ftirme<\/h2>\n<p>\n    Metrikler CloudWatch'a akmaya ba\u015flad\u0131ktan sonra, bu verileri anlaml\u0131 hale getirmek i\u00e7in panolar (dashboards) olu\u015fturmak ve olas\u0131 sorunlar i\u00e7in alarmlar kurmak gereklidir. Bu b\u00f6l\u00fcm, Hetzner Cloud metriklerinizi AWS CloudWatch'ta nas\u0131l g\u00f6rselle\u015ftirece\u011finizi ve proaktif bildirimler i\u00e7in alarmlar\u0131n\u0131z\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 g\u00f6sterecektir. Yine bu i\u015flemleri Terraform ile otomatize ederek, izleme altyap\u0131n\u0131z\u0131n kod olarak y\u00f6netilebilirli\u011fini sa\u011flayaca\u011f\u0131z.\n<\/p>\n<h3>\u00d6zel CloudWatch Panolar\u0131 Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>\n    CloudWatch panolar\u0131, birden fazla metri\u011fi, log grubunu veya alarm\u0131 tek bir g\u00f6rsel aray\u00fczde birle\u015ftirmenize olanak tan\u0131r. Bu, Hetzner ve AWS kaynaklar\u0131n\u0131z\u0131n genel durumunu tek bir yerden h\u0131zl\u0131ca anlamak i\u00e7in idealdir. Terraform ile bir pano olu\u015ftururken, panonun i\u00e7eri\u011fini (widget'lar) JSON format\u0131nda tan\u0131mlars\u0131n\u0131z.\n<\/p>\n<p>\n    A\u015fa\u011f\u0131daki Terraform kodunu <code>main.tf<\/code> dosyan\u0131za ekleyerek Hetzner sunucu performans\u0131n\u0131 g\u00f6steren basit bir pano olu\u015fturabilirsiniz:\n<\/p>\n<div class=\"code-container\">\n<pre><code class=\"language-hcl\">resource \"aws_cloudwatch_dashboard\" \"hetzner_dashboard\" {\n  dashboard_name = \"HetznerCloudMonitoringDashboard\"\n\n  dashboard_body = jsonencode({\n    widgets = [\n      {\n        type   = \"metric\",\n        x      = 0,\n        y      = 0,\n        width  = 12,\n        height = 6,\n        properties = {\n          metrics = [\n            # CPU Kullan\u0131m\u0131\n            [\"HetznerCloud\", \"CPUUtilization\", \"ServerName\", \"my-hetzner-server-01\", { \"stat\": \"Average\", \"label\": \"Hetzner Sunucu 1 CPU\", \"color\": \"#1f77b4\" }],\n            [\"HetznerCloud\", \"CPUUtilization\", \"ServerName\", \"my-hetzner-server-02\", { \"stat\": \"Average\", \"label\": \"Hetzner Sunucu 2 CPU\", \"color\": \"#ff7f0e\" }],\n            # Bellek Kullan\u0131m\u0131\n            [\"HetznerCloud\", \"MemoryUtilization\", \"ServerName\", \"my-hetzner-server-01\", { \"stat\": \"Average\", \"label\": \"Hetzner Sunucu 1 Bellek\", \"color\": \"#2ca02c\" }],\n            [\"HetznerCloud\", \"MemoryUtilization\", \"ServerName\", \"my-hetzner-server-02\", { \"stat\": \"Average\", \"label\": \"Hetzner Sunucu 2 Bellek\", \"color\": \"#d62728\" }],\n          ],\n          period    = 300, # 5 dakika\n          stat      = \"Average\",\n          region    = var.aws_region,\n          title     = \"Hetzner Sunucu Performans\u0131\",\n          view      = \"timeSeries\",\n          stacked   = false\n        }\n      },\n      {\n        type   = \"metric\",\n        x      = 12,\n        y      = 0,\n        width  = 12,\n        height = 6,\n        properties = {\n          metrics = [\n            # Gelen A\u011f Trafi\u011fi\n            [\"HetznerCloud\", \"NetworkIn\", \"ServerName\", \"my-hetzner-server-01\", { \"stat\": \"Sum\", \"label\": \"Hetzner Sunucu 1 Gelen A\u011f\", \"color\": \"#9467bd\" }],\n            [\"HetznerCloud\", \"NetworkIn\", \"ServerName\", \"my-hetzner-server-02\", { \"stat\": \"Sum\", \"label\": \"Hetzner Sunucu 2 Gelen A\u011f\", \"color\": \"#8c564b\" }],\n            # Giden A\u011f Trafi\u011fi\n            [\"HetznerCloud\", \"NetworkOut\", \"ServerName\", \"my-hetzner-server-01\", { \"stat\": \"Sum\", \"label\": \"Hetzner Sunucu 1 Giden A\u011f\", \"color\": \"#e377c2\" }],\n            [\"HetznerCloud\", \"NetworkOut\", \"ServerName\", \"my-hetzner-server-02\", { \"stat\": \"Sum\", \"label\": \"Hetzner Sunucu 2 Giden A\u011f\", \"color\": \"#7f7f7f\" }]\n          ],\n          period    = 300,\n          stat      = \"Sum\",\n          region    = var.aws_region,\n          title     = \"Hetzner Sunucu A\u011f Trafi\u011fi (Bytes)\",\n          view      = \"timeSeries\",\n          yAxis = {\n            left = {\n              label = \"Bytes\/sn\",\n              showUnits = true\n            }\n          }\n        }\n      },\n      {\n        type   = \"text\",\n        x      = 0,\n        y      = 6,\n        width  = 24,\n        height = 3,\n        properties = {\n          markdown = \"<strong>Hetzner Cloud \u0130zleme Durumu\\nBu pano, Hetzner Cloud \u00fczerindeki kritik sunucu metriklerini g\u00f6rselle\u015ftirir.\"<\/strong>\n        }\n      }\n    ]\n  })\n\n  tags = {\n    Environment = \"Monitoring\"\n  }\n}<\/pre>\n<p><\/code>\n<\/div>\n<p>\n    Bu Terraform kodu, Hetzner Cloud sunucular\u0131n\u0131z\u0131n CPU kullan\u0131m\u0131n\u0131, bellek kullan\u0131m\u0131n\u0131 ve a\u011f trafi\u011fini g\u00f6steren iki metrik widget'\u0131 ve bir metin widget'\u0131 i\u00e7eren bir CloudWatch panosu olu\u015fturur. Metriklerin <code>ServerName<\/code> boyutunu kendi Hetzner sunucular\u0131n\u0131z\u0131n adlar\u0131na g\u00f6re g\u00fcncellemeyi unutmay\u0131n. Terraform'u tekrar uygulad\u0131\u011f\u0131n\u0131zda bu pano AWS CloudWatch konsolunda g\u00f6r\u00fcn\u00fcr olacakt\u0131r.\n<\/p>\n<h3>Hetzner Metrikleri \u0130\u00e7in Alarm Kurulumu<\/h3>\n<p>\n    Panolar sadece durumu g\u00f6sterir; ger\u00e7ek sorun tespiti i\u00e7in alarmlara ihtiyac\u0131m\u0131z var. CloudWatch alarmlar\u0131, belirli bir metri\u011fin \u00f6nceden tan\u0131mlanm\u0131\u015f bir e\u015fi\u011fi a\u015ft\u0131\u011f\u0131nda bildirim g\u00f6ndermek veya otomatik eylemleri tetiklemek i\u00e7in kullan\u0131l\u0131r. Bu alarmlar\u0131, AWS SNS (Simple Notification Service) topiklerine ba\u011flayarak e-posta, SMS veya di\u011fer aboneliklerle bildirimler alabiliriz.\n<\/p>\n<p>\n    A\u015fa\u011f\u0131daki Terraform kodunu kullanarak, Hetzner sunucular\u0131n\u0131zdan biri i\u00e7in y\u00fcksek CPU kullan\u0131m\u0131 alarm\u0131 ve bu alarm tetiklendi\u011finde e-posta g\u00f6nderen bir SNS topici olu\u015fturabilirsiniz:\n<\/p>\n<div class=\"code-container\">\n<pre><code class=\"language-hcl\"># Alarm bildirimlerinin g\u00f6nderilece\u011fi SNS Topici\nresource \"aws_sns_topic\" \"hetzner_alerts_topic\" {\n  name = \"HetznerCloudAlerts\"\n\n  tags = {\n    Environment = \"Monitoring\"\n  }\n}\n\n# SNS Topici&#039;ne e-posta aboneli\u011fi (e-posta adresinizi buraya girin)\nresource \"aws_sns_topic_subscription\" \"email_subscription\" {\n  topic_arn = aws_sns_topic.hetzner_alerts_topic.arn\n  protocol  = \"email\"\n  endpoint  = \"your-email@example.com\" # Buraya ger\u00e7ek e-posta adresinizi girin ve aboneli\u011fi onaylay\u0131n\n  # pending_confirmation_timeout = \"P10M\" # Aboneli\u011fin onaylanmas\u0131 i\u00e7in s\u00fcre\n}\n\n# Y\u00fcksek CPU kullan\u0131m\u0131 i\u00e7in CloudWatch Alarm\u0131\nresource \"aws_cloudwatch_metric_alarm\" \"high_cpu_alarm\" {\n  alarm_name          = \"Hetzner-High-CPU-Utilization-my-server-01\"\n  comparison_operator = \"GreaterThanThreshold\" # E\u015fi\u011fin \u00fczerinde oldu\u011funda alarm ver\n  evaluation_periods  = \"2\"                    # Ka\u00e7 de\u011ferlendirme d\u00f6nemi boyunca e\u015fik a\u015f\u0131lmal\u0131\n  metric_name         = \"CPUUtilization\"       # \u0130zlenecek metrik ad\u0131\n  namespace           = \"HetznerCloud\"         # Metri\u011fin ad alan\u0131\n  period              = \"300\"                  # Metriklerin toplanma periyodu (5 dakika)\n  statistic           = \"Average\"              # Metrik istatisti\u011fi\n  threshold           = \"80\"                   # Alarm e\u015fi\u011fi (%80 CPU)\n  alarm_description   = \"Hetzner sunucunun ortalama CPU kullan\u0131m\u0131 10 dakika boyunca %80&#039;in \u00fczerinde.\"\n  actions_enabled     = true                   # Alarm eylemlerini etkinle\u015ftir\n\n  # Alarm tetiklendi\u011finde veya d\u00fczeldi\u011finde yap\u0131lacak eylemler\n  alarm_actions       = [aws_sns_topic.hetzner_alerts_topic.arn]\n  ok_actions          = [aws_sns_topic.hetzner_alerts_topic.arn] # Durum normale d\u00f6nd\u00fc\u011f\u00fcnde de bildirim\n\n  # Alarm\u0131n uygulanaca\u011f\u0131 sunucuyu belirtmek i\u00e7in boyutlar\n  dimensions = {\n    ServerName = \"my-hetzner-server-01\" # Belirli bir sunucu i\u00e7in alarm\n  }\n\n  tags = {\n    Environment = \"Monitoring\"\n  }\n}\n\n# Y\u00fcksek Bellek kullan\u0131m\u0131 i\u00e7in CloudWatch Alarm\u0131 (ek \u00f6rnek)\nresource \"aws_cloudwatch_metric_alarm\" \"high_memory_alarm\" {\n  alarm_name          = \"Hetzner-High-Memory-Utilization-my-server-01\"\n  comparison_operator = \"GreaterThanThreshold\"\n  evaluation_periods  = \"3\"\n  metric_name         = \"MemoryUtilization\"\n  namespace           = \"HetznerCloud\"\n  period              = \"300\"\n  statistic           = \"Average\"\n  threshold           = \"90\" # %90 Bellek \u00fczerinde\n  alarm_description   = \"Hetzner sunucunun ortalama bellek kullan\u0131m\u0131 15 dakika boyunca %90&#039;\u0131n \u00fczerinde.\"\n  actions_enabled     = true\n  alarm_actions       = [aws_sns_topic.hetzner_alerts_topic.arn]\n  ok_actions          = [aws_sns_topic.hetzner_alerts_topic.arn]\n\n  dimensions = {\n    ServerName = \"my-hetzner-server-01\"\n  }\n\n  tags = {\n    Environment = \"Monitoring\"\n  }\n}<\/pre>\n<p><\/code>\n<\/div>\n<p>\n    Bu kod par\u00e7as\u0131, <code>HetznerCloudAlerts<\/code> ad\u0131nda bir SNS topici olu\u015fturur ve buna bir e-posta aboneli\u011fi ekler. <strong><code>your-email@example.com<\/code> yerine kendi e-posta adresinizi girmeniz ve AWS'den gelen abonelik onay e-postas\u0131n\u0131 onaylaman\u0131z gerekmektedir.<\/strong> Ard\u0131ndan, <code>my-hetzner-server-01<\/code> adl\u0131 sunucunun CPU kullan\u0131m\u0131 10 dakika boyunca %80'in \u00fczerine \u00e7\u0131kt\u0131\u011f\u0131nda tetiklenecek bir alarm tan\u0131mlar. Benzer \u015fekilde, bellek kullan\u0131m\u0131 i\u00e7in de bir alarm \u00f6rne\u011fi eklenmi\u015ftir. Bu alarmlar tetiklendi\u011finde, SNS topici arac\u0131l\u0131\u011f\u0131yla size e-posta bildirimleri g\u00f6nderilecektir. Terraform'u tekrar uygulad\u0131\u011f\u0131n\u0131zda bu alarmlar da devreye al\u0131nacakt\u0131r. B\u00f6ylece Hetzner kaynaklar\u0131n\u0131z\u0131n izlemesini g\u00f6rselle\u015ftirmekle kalmayacak, ayn\u0131 zamanda olas\u0131 kritik durumlar hakk\u0131nda an\u0131nda bilgi sahibi olabileceksiniz.\n<\/p>\n<h2>Vaka Analizi: B\u00fcy\u00fck \u00d6l\u00e7ekli Bir Uygulama \u0130\u00e7in Hibrit \u0130zleme<\/h2>\n<p>\n    Bir e-ticaret \u015firketi olan \"GlobalShop\", operasyonel maliyetleri optimize etmek ve belirli b\u00f6lgelerdeki m\u00fc\u015fterilere daha d\u00fc\u015f\u00fck gecikme s\u00fcresi sunmak amac\u0131yla hibrit bir altyap\u0131 kullanmaya karar verdi. \u015eirketin ana e-ticaret platformu ve veritabanlar\u0131 AWS (EC2, RDS, Lambda) \u00fczerinde \u00e7al\u0131\u015f\u0131rken, yo\u011fun trafik alan statik i\u00e7erik sunumu, \u00f6nbellekleme katmanlar\u0131 (Redis, Varnish) ve baz\u0131 mikro hizmetler Hetzner Cloud \u00fczerinde konumland\u0131r\u0131lm\u0131\u015ft\u0131. Bu ayr\u0131m, \u00f6zellikle Avrupa'daki kullan\u0131c\u0131lar i\u00e7in performans\u0131 art\u0131r\u0131rken, AWS'deki y\u00f6netilen hizmetlerin avantajlar\u0131ndan da yararlan\u0131lmas\u0131n\u0131 sa\u011fl\u0131yordu.\n<\/p>\n<p>\n    Ancak, bu hibrit mimari, operasyon ekibi i\u00e7in yeni bir zorluk do\u011furdu: izleme. AWS kaynaklar\u0131 CloudWatch ile kolayca izlenirken, Hetzner kaynaklar\u0131n\u0131n ayr\u0131 bir izleme sistemi \u00fczerinden takip edilmesi gerekiyordu. Bu durum, olay y\u00f6netimi s\u0131ras\u0131nda kritik bir aksakl\u0131\u011fa yol a\u00e7t\u0131: M\u00fc\u015fteriler, \u00fcr\u00fcn sayfalar\u0131nda yava\u015f y\u00fckleme s\u00fcreleri rapor etmeye ba\u015flad\u0131\u011f\u0131nda, operasyon ekibi sorunun AWS mi yoksa Hetzner taraf\u0131nda m\u0131 oldu\u011funu anlamakta zorland\u0131. \u0130ki farkl\u0131 izleme panosu aras\u0131nda ge\u00e7i\u015f yapmak, korelasyon kurmak ve k\u00f6k nedeni bulmak zaman kayb\u0131na neden oldu ve hizmet kesintisi uzad\u0131.\n<\/p>\n<p>\n    Bu sorunu \u00e7\u00f6zmek i\u00e7in GlobalShop, makalede anlat\u0131lan Hetzner-CloudWatch entegrasyon stratejisini uygulamaya karar verdi. Terraform kullanarak, a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 ger\u00e7ekle\u015ftirdiler:\n<\/p>\n<ol>\n<li>Hetzner Cloud API'sini sorgulayan ve metrikleri (CPU, bellek, disk I\/O, a\u011f trafi\u011fi) toplayan bir Python beti\u011fi geli\u015ftirdiler.<\/li>\n<li>Bu beti\u011fi, AWS Lambda fonksiyonu olarak da\u011f\u0131tt\u0131lar. Lambda, her 5 dakikada bir EventBridge taraf\u0131ndan tetiklenerek Hetzner metriklerini \u00e7ekip \"HetznerCloud\" ad alan\u0131 alt\u0131nda CloudWatch'a g\u00f6nderdi.<\/li>\n<li>Terraform ile, bu Lambda fonksiyonunun ihtiya\u00e7 duydu\u011fu IAM rolleri ve politikalar\u0131 otomatik olarak olu\u015fturuldu. Hetzner API token'\u0131 AWS Secrets Manager'da g\u00fcvenli bir \u015fekilde sakland\u0131 ve Lambda taraf\u0131ndan \u00e7al\u0131\u015fma zaman\u0131nda \u00e7ekildi.<\/li>\n<li>Son olarak, CloudWatch \u00fczerinde hem AWS hem de Hetzner metriklerini birle\u015ftiren merkezi panolar olu\u015fturdular. Ayr\u0131ca, Hetzner sunucular\u0131ndaki CPU ve bellek kullan\u0131m\u0131 belirli e\u015fikleri a\u015ft\u0131\u011f\u0131nda tetiklenecek alarmlar (SNS \u00fczerinden Slack'e bildirim g\u00f6nderen) yap\u0131land\u0131r\u0131ld\u0131.<\/li>\n<\/ol>\n<p>\n    Bu entegrasyonun sonucunda, GlobalShop operasyon ekibi tek bir CloudWatch panosundan t\u00fcm hibrit altyap\u0131lar\u0131n\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ve performans\u0131n\u0131 izleyebildi. Bir sonraki yava\u015flama olay\u0131nda, sorun Hetzner \u00fczerindeki \u00f6nbellekleme sunucular\u0131ndan birinin a\u015f\u0131r\u0131 bellek t\u00fcketimi nedeniyle kaynakland\u0131. CloudWatch panosundaki merkezi g\u00f6r\u00fcn\u00fcm ve tetiklenen y\u00fcksek bellek alarm\u0131 sayesinde ekip, sorunu saniyeler i\u00e7inde tespit etti ve h\u0131zla m\u00fcdahale ederek kesintiyi minimuma indirdi. Bu vaka analizi, farkl\u0131 bulut platformlar\u0131 aras\u0131ndaki veri silolar\u0131n\u0131 ortadan kald\u0131rman\u0131n ve merkezi izlemenin, b\u00fcy\u00fck \u00f6l\u00e7ekli ve hibrit altyap\u0131larda operasyonel verimlili\u011fi ve olay m\u00fcdahale s\u00fcrelerini nas\u0131l k\u00f6kten iyile\u015ftirebilece\u011fini a\u00e7\u0131k\u00e7a g\u00f6stermektedir.\n<\/p>\n<div class=\"interactive-element\">\n  Uzman \u0130pucu: B\u00fcy\u00fck \u00f6l\u00e7ekli yap\u0131lar i\u00e7in metrik g\u00f6nderimini optimize etmek amac\u0131yla, Hetzner sunucular\u0131n\u0131za Prometheus Node Exporter kurarak metrikleri yerelde toplayabilir, ard\u0131ndan bir Prometheus sunucusu veya Grafana Agent ile AWS'deki bir Mimir\/Cortex veya do\u011frudan CloudWatch metrik API'sine g\u00f6nderebilirsiniz. Bu, Lambda'n\u0131n i\u015f y\u00fck\u00fcn\u00fc azaltabilir ve daha zengin metrik setleri sa\u011flayabilir. Bu t\u00fcr bir yakla\u015f\u0131m, daha gran\u00fcler kontrol ve daha geni\u015f metrik deste\u011fi sunar, ancak kurulum ve y\u00f6netim karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 art\u0131rabilir.\n<\/div>\n<h2>\u0130leri D\u00fczey \u0130zleme Teknikleri ve En \u0130yi Uygulamalar<\/h2>\n<p>\n    Hetzner Cloud kaynaklar\u0131n\u0131 AWS CloudWatch ile izleme temel entegrasyonunu kurduktan sonra, izleme stratejinizi daha da geli\u015ftirmek ve operasyonel m\u00fckemmelli\u011fi art\u0131rmak i\u00e7in kullanabilece\u011finiz baz\u0131 ileri d\u00fczey teknikler ve en iyi uygulamalar bulunmaktad\u0131r. Bu y\u00f6ntemler, hem izleme verimlili\u011fini art\u0131r\u0131r hem de altyap\u0131n\u0131z\u0131n esnekli\u011fini g\u00fc\u00e7lendirir.\n<\/p>\n<ol>\n<li><strong>Dinamik Alarm E\u015fikleri ve Anomali Tespiti:<\/strong> Sabit e\u015fiklere dayal\u0131 alarmlar her zaman ideal de\u011fildir, \u00e7\u00fcnk\u00fc sistem davran\u0131\u015flar\u0131 zamanla de\u011fi\u015febilir veya belirli d\u00f6nemlerde (\u00f6rn. yo\u011fun saatler, hafta sonlar\u0131) farkl\u0131l\u0131k g\u00f6sterebilir. CloudWatch, metriklerinizdeki anormallikleri otomatik olarak \u00f6\u011frenmek ve dinamik e\u015fikler belirlemek i\u00e7in Makine \u00d6\u011frenimi (ML) destekli anomali tespiti sunar. Bu \u00f6zelli\u011fi kullanarak, Hetzner sunucular\u0131n\u0131zdaki beklenmedik davran\u0131\u015flar\u0131 daha do\u011fru bir \u015fekilde tespit edebilirsiniz. \u00d6rne\u011fin, normalde %30 CPU kullanan bir sunucunun aniden %50'ye \u00e7\u0131kmas\u0131, sabit bir %80 e\u015fi\u011fini a\u015fmasa bile bir anomali olarak alg\u0131lanabilir ve alarm tetiklenebilir. Bu, daha proaktif bir uyar\u0131 sistemi sa\u011flar.<\/li>\n<li><strong>Geli\u015fmi\u015f Log Y\u00f6netimi ve Analizi:<\/strong> Sadece metrikleri de\u011fil, Hetzner sunucular\u0131n\u0131zdan gelen loglar\u0131 da CloudWatch Logs'a g\u00f6nderebilirsiniz. Bunun i\u00e7in Hetzner sunucular\u0131na CloudWatch Agent'\u0131 kurabilir (ancak AWS kimlik bilgileri y\u00f6netimi zor olabilir) veya loglar\u0131 merkezi bir log toplama hizmetine (\u00f6rn. Fluentd, Filebeat) g\u00f6nderip oradan CloudWatch Logs'a aktarabilirsiniz. Loglar\u0131n CloudWatch Logs'a gelmesiyle, Log Insights kullanarak h\u0131zl\u0131 sorgulamalar yapabilir, hata ay\u0131klama s\u00fcre\u00e7lerini h\u0131zland\u0131rabilir ve log tabanl\u0131 metrikler (\u00f6rn. belirli hata mesajlar\u0131n\u0131n say\u0131s\u0131) olu\u015fturarak bunlara alarm kurabilirsiniz. Bu, derinlemesine sorun giderme yetene\u011finizi art\u0131r\u0131r.<\/li>\n<li><strong>Maliyet Optimizasyonu:<\/strong> CloudWatch, g\u00f6nderilen metriklerin say\u0131s\u0131na, log hacmine ve depolama s\u00fcresine g\u00f6re \u00fccretlendirilir. Bu maliyetleri optimize etmek i\u00e7in \u015funlar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurun:\n<ul>\n<li>Yaln\u0131zca kritik metrikleri daha s\u0131k aral\u0131klarla g\u00f6nderin (\u00f6rn. 1 dakika). Daha az \u00f6nemli metrikler i\u00e7in daha uzun periyotlar (\u00f6rn. 5 dakika veya 15 dakika) kullan\u0131n.<\/li>\n<li>Lambda fonksiyonunuzun bellek ve zaman a\u015f\u0131m\u0131 ayarlar\u0131n\u0131 optimize edin. Gereksiz yere y\u00fcksek bellek veya uzun zaman a\u015f\u0131m\u0131 kullanmak maliyeti art\u0131r\u0131r.<\/li>\n<li>CloudWatch Logs'taki log saklama s\u00fcrelerini d\u00fczenleyin. Uzun s\u00fcre saklanmas\u0131 gerekmeyen loglar\u0131 daha k\u0131sa bir s\u00fcre sonra silin veya daha ucuz bir depolama katman\u0131na ta\u015f\u0131y\u0131n (\u00f6rn. S3'e ar\u015fivleme).<\/li>\n<\/ul>\n<\/li>\n<li><strong>G\u00fcvenlik Entegrasyonlar\u0131:<\/strong> Hassas API anahtarlar\u0131n\u0131z\u0131 (Hetzner API token'\u0131) AWS Secrets Manager'da saklay\u0131n ve Lambda fonksiyonunuzun \u00e7al\u0131\u015fma zaman\u0131nda bu s\u0131rlar\u0131 \u00e7ekmesini sa\u011flay\u0131n. Bu, token'lar\u0131n\u0131z\u0131 kodunuzdan veya yap\u0131land\u0131rma dosyalar\u0131n\u0131zdan ay\u0131rarak g\u00fcvenlik riskini azalt\u0131r. Ayr\u0131ca, IAM rolleri i\u00e7in her zaman \"en d\u00fc\u015f\u00fck ayr\u0131cal\u0131k ilkesi\"ni (least privilege) uygulay\u0131n, yani yaln\u0131zca gerekli izinleri verin.<\/li>\n<li><strong>Mobil Uyumlu Panolar ve Eri\u015fim:<\/strong> AWS CloudWatch panolar\u0131, web tabanl\u0131 aray\u00fczleri sayesinde varsay\u0131lan olarak mobil cihazlarda da g\u00f6r\u00fcnt\u00fclenebilir. Ancak, daha iyi bir kullan\u0131c\u0131 deneyimi i\u00e7in, panolar\u0131 mobil ekran boyutlar\u0131na optimize etmek \u00f6nemlidir. CloudWatch panolar\u0131ndaki widget'lar\u0131n yerle\u015fimini ve boyutunu, farkl\u0131 ekran \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklerinde kolayca okunabilecek \u015fekilde tasarlayabilirsiniz. Ayr\u0131ca, AWS Mobil Uygulamas\u0131 \u00fczerinden CloudWatch panolar\u0131n\u0131za ve alarmlar\u0131n\u0131za eri\u015ferek hareket halindeyken bile altyap\u0131n\u0131z\u0131n durumu hakk\u0131nda bilgi sahibi olabilirsiniz. HTML bazl\u0131 \u00f6zel panolar geli\u015ftiriyorsan\u0131z, mutlaka <code><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><\/code> etiketini kullanmal\u0131 ve CSS media query'leri ile duyarl\u0131 tasar\u0131m (responsive design) ilkelerini uygulamal\u0131s\u0131n\u0131z. \u00d6rne\u011fin, daha k\u00fc\u00e7\u00fck ekranlarda metrik grafiklerini alt alta yerle\u015ftirmek veya daha az bilgi g\u00f6stermek, mobil kullan\u0131labilirli\u011fi art\u0131racakt\u0131r.<\/li>\n<\/ol>\n<p>\n    Bu ileri d\u00fczey teknikler ve en iyi uygulamalar, Hetzner ve AWS kaynaklar\u0131n\u0131z\u0131 izleme yetene\u011finizi \u00f6nemli \u00f6l\u00e7\u00fcde g\u00fc\u00e7lendirecek ve operasyonel s\u00fcre\u00e7lerinizi daha sa\u011flam, verimli ve g\u00fcvenli hale getirecektir. Unutmay\u0131n, izleme s\u00fcrekli bir s\u00fcre\u00e7tir ve altyap\u0131n\u0131z geli\u015ftik\u00e7e izleme stratejinizin de geli\u015fmesi gerekir.\n<\/p>\n<h2>Sonu\u00e7: Hibrit Bulut \u0130zlemede G\u00fc\u00e7l\u00fc Bir Sinerji<\/h2>\n<p>\n    Bu kapsaml\u0131 rehber boyunca, Hetzner Cloud kaynaklar\u0131n\u0131 AWS CloudWatch'un g\u00fc\u00e7l\u00fc izleme yetenekleriyle entegre etmenin ve bu s\u00fcreci Terraform ile otomatize etmenin t\u00fcm ad\u0131mlar\u0131n\u0131 detayl\u0131 bir \u015fekilde inceledik. Modern IT d\u00fcnyas\u0131n\u0131n ka\u00e7\u0131n\u0131lmaz bir ger\u00e7e\u011fi olan hibrit bulut ortamlar\u0131nda, farkl\u0131 platformlardaki altyap\u0131 bile\u015fenlerini tek bir merkezi noktadan izleyebilmek, operasyonel verimlilik ve h\u0131zl\u0131 olay m\u00fcdahalesi i\u00e7in vazge\u00e7ilmezdir.\n<\/p>\n<p>\n    Hetzner'\u0131n rekabet\u00e7i fiyatland\u0131rma ve y\u00fcksek performans avantajlar\u0131 ile AWS CloudWatch'un geni\u015f izleme, alarm ve g\u00f6rselle\u015ftirme yeteneklerini bir araya getirmek, i\u015fletmeler i\u00e7in kritik bir sinerji yaratmaktad\u0131r. Terraform'un \"altyap\u0131 kod olarak\" yakla\u015f\u0131m\u0131 sayesinde, bu entegrasyonun da\u011f\u0131t\u0131m\u0131, g\u00fcncellenmesi ve s\u00fcr\u00fcm kontrol\u00fc alt\u0131nda tutulmas\u0131 kolayla\u015fm\u0131\u015f, manuel hatalar en aza indirilmi\u015f ve tekrarlanabilir, g\u00fcvenilir bir izleme altyap\u0131s\u0131 in\u015fa edilmi\u015ftir. Metrik toplama i\u00e7in AWS Lambda ve EventBridge'\u0131n kullan\u0131m\u0131 ise, sunucusuz bir yakla\u015f\u0131m sunarak operasyonel y\u00fck\u00fc azaltm\u0131\u015f ve maliyet etkinli\u011fini art\u0131rm\u0131\u015ft\u0131r.\n<\/p>\n<p>\n    Kurulan bu merkezi izleme sistemi sayesinde, Hetzner sunucular\u0131n\u0131zdaki CPU, bellek, a\u011f trafi\u011fi gibi kritik performans g\u00f6stergelerini tek bir CloudWatch panosundan takip edebilir, belirlenen e\u015fiklerin a\u015f\u0131lmas\u0131 durumunda an\u0131nda bildirimler alabilirsiniz. Bu, potansiyel sorunlar\u0131 proaktif olarak tespit etmenize, kesinti s\u00fcrelerini k\u0131saltman\u0131za ve genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 iyile\u015ftirmenize olanak tan\u0131r. \u0130leri d\u00fczey anomali tespiti, kapsaml\u0131 log y\u00f6netimi ve g\u00fcvenlik odakl\u0131 yakla\u015f\u0131mlarla bu temel entegrasyonu daha da g\u00fc\u00e7lendirebilirsiniz. Unutmay\u0131n, iyi bir izleme stratejisi, sadece sorunlar\u0131 tespit etmekle kalmaz, ayn\u0131 zamanda altyap\u0131n\u0131z\u0131n gelecekteki b\u00fcy\u00fcme ve geli\u015fimi i\u00e7in de de\u011ferli i\u00e7g\u00f6r\u00fcler sunar.\n<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ol>\n<li><strong>Hetzner Cloud do\u011frudan CloudWatch'a metrik g\u00f6nderme \u00f6zelli\u011fi sunuyor mu?<\/strong>\n<p>Hay\u0131r, Hetzner Cloud, AWS CloudWatch ile do\u011frudan bir entegrasyon sunmamaktad\u0131r. Bu makalede anlat\u0131ld\u0131\u011f\u0131 gibi, metriklerinizi \u00f6zel betikler veya ajanlar arac\u0131l\u0131\u011f\u0131yla toplay\u0131p CloudWatch'a g\u00f6ndermeniz gerekir.<\/p>\n<\/li>\n<li><strong>Bu entegrasyonun maliyeti ne olur?<\/strong>\n<p>Maliyet, g\u00f6nderdi\u011finiz metriklerin hacmine (Custom Metrics), Lambda fonksiyonunun \u00e7al\u0131\u015fma s\u0131kl\u0131\u011f\u0131na ve s\u00fcresine, CloudWatch alarmlar\u0131n\u0131n ve panolar\u0131n\u0131n say\u0131s\u0131na ba\u011fl\u0131d\u0131r. AWS'nin \u00dccretsiz Katman\u0131'ndan faydalanarak ba\u015flang\u0131\u00e7ta maliyetleri d\u00fc\u015f\u00fcrebilirsiniz. Genellikle, metrik ba\u015f\u0131na d\u00fc\u015f\u00fck bir \u00fccretlendirme yap\u0131l\u0131r ve Lambda gibi sunucusuz hizmetler i\u00e7in sadece kulland\u0131\u011f\u0131n\u0131z kadar \u00f6dersiniz.<\/p>\n<\/li>\n<li><strong>Hetzner sunucular\u0131m\u0131n t\u00fcm metriklerini CloudWatch'a g\u00f6nderebilir miyim?<\/strong>\n<p>Evet, teorik olarak Hetzner sunucular\u0131n\u0131zdan alabilece\u011finiz her t\u00fcrl\u00fc metrik (CPU, RAM, disk I\/O, a\u011f trafi\u011fi, uygulama metrikleri vb.) \u00f6zel betikler veya \u00fc\u00e7\u00fcnc\u00fc taraf ajanlar (\u00f6rne\u011fin Prometheus Node Exporter) arac\u0131l\u0131\u011f\u0131yla toplan\u0131p CloudWatch'a \u00f6zel metrik olarak g\u00f6nderilebilir. \u00d6nemli olan, bu verileri do\u011fru formatta toplay\u0131p CloudWatch'un <code>PutMetricData<\/code> API'sine g\u00f6ndermektir.<\/p>\n<\/li>\n<li><strong>Bu kurulumda g\u00fcvenlik endi\u015feleri nelerdir?<\/strong>\n<p>En b\u00fcy\u00fck g\u00fcvenlik endi\u015feleri API anahtarlar\u0131n\u0131n (Hetzner ve AWS) y\u00f6netimidir. Bu anahtarlar\u0131 hi\u00e7bir zaman a\u00e7\u0131k metin olarak depolamay\u0131n. AWS IAM rolleri ve politikalar\u0131 ile en d\u00fc\u015f\u00fck ayr\u0131cal\u0131k ilkesini uygulay\u0131n. Hetzner API anahtar\u0131n\u0131z\u0131 AWS Secrets Manager gibi g\u00fcvenli bir hizmette saklay\u0131n ve Lambda fonksiyonu taraf\u0131ndan \u00e7al\u0131\u015fma zaman\u0131nda eri\u015filmesini sa\u011flay\u0131n. Ayr\u0131ca, Lambda fonksiyonuna yaln\u0131zca CloudWatch'a metrik g\u00f6nderme ve log yazma izni verin.<\/p>\n<\/li>\n<li><strong>Terraform ile yap\u0131lan bu yap\u0131land\u0131rmay\u0131 nas\u0131l y\u00f6netirim?<\/strong>\n<p>Terraform state dosyas\u0131n\u0131 g\u00fcvenli bir \u015fekilde (\u00f6rne\u011fin AWS S3'te uzaktan depolama ve DynamoDB ile kilitleme) y\u00f6neterek ekip i\u00e7inde tutarl\u0131 ve g\u00fcvenli bir altyap\u0131 y\u00f6netimi sa\u011flayabilirsiniz. Versiyon kontrol\u00fc (Git) kullanarak kodunuzu takip edin ve de\u011fi\u015fiklikleri g\u00f6zden ge\u00e7irin. Her de\u011fi\u015fiklik \u00f6ncesinde <code>terraform plan<\/code> komutunu kullanarak beklenen de\u011fi\u015fiklikleri g\u00f6zden ge\u00e7irmek iyi bir uygulamad\u0131r.<\/p>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"Hetzner Cloud altyap\u0131n\u0131z\u0131n performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 AWS CloudWatch&#8217;un g\u00fc\u00e7l\u00fc izleme yetenekleriyle entegre etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde,&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":[1341],"tags":[],"class_list":{"0":"post-34057","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-cloud","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>Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme<\/title>\n<meta name=\"description\" content=\"Hetzner Cloud altyap\u0131n\u0131z\u0131n performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 AWS CloudWatch&#039;un g\u00fc\u00e7l\u00fc izleme yetenekleriyle entegre etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, Terraform&#039;un g\u00fcc\u00fcn\u00fc kullanarak Hetzner Cloud sunucular\u0131n\u0131zdan gelen metrikleri AWS CloudWatch&#039;a nas\u0131l aktaraca\u011f\u0131n\u0131z\u0131, alarmlar kuraca\u011f\u0131n\u0131z\u0131 ve dinamik panolar olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Hibrit bulut izleme stratejinizi otomatize edin!\" \/>\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\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme\" \/>\n<meta property=\"og:description\" content=\"Hetzner Cloud altyap\u0131n\u0131z\u0131n performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 AWS CloudWatch&#039;un g\u00fc\u00e7l\u00fc izleme yetenekleriyle entegre etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, Terraform&#039;un g\u00fcc\u00fcn\u00fc kullanarak Hetzner Cloud sunucular\u0131n\u0131zdan gelen metrikleri AWS CloudWatch&#039;a nas\u0131l aktaraca\u011f\u0131n\u0131z\u0131, alarmlar kuraca\u011f\u0131n\u0131z\u0131 ve dinamik panolar olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Hibrit bulut izleme stratejinizi otomatize edin!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-10T10:31:56+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=\"35 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme\",\"datePublished\":\"2025-11-10T10:31:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/\"},\"wordCount\":5126,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Cloud\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/\",\"name\":\"Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-10T10:31:56+00:00\",\"description\":\"Hetzner Cloud altyap\u0131n\u0131z\u0131n performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 AWS CloudWatch'un g\u00fc\u00e7l\u00fc izleme yetenekleriyle entegre etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, Terraform'un g\u00fcc\u00fcn\u00fc kullanarak Hetzner Cloud sunucular\u0131n\u0131zdan gelen metrikleri AWS CloudWatch'a nas\u0131l aktaraca\u011f\u0131n\u0131z\u0131, alarmlar kuraca\u011f\u0131n\u0131z\u0131 ve dinamik panolar olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Hibrit bulut izleme stratejinizi otomatize edin!\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme\"}]},{\"@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":"Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme","description":"Hetzner Cloud altyap\u0131n\u0131z\u0131n performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 AWS CloudWatch'un g\u00fc\u00e7l\u00fc izleme yetenekleriyle entegre etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, Terraform'un g\u00fcc\u00fcn\u00fc kullanarak Hetzner Cloud sunucular\u0131n\u0131zdan gelen metrikleri AWS CloudWatch'a nas\u0131l aktaraca\u011f\u0131n\u0131z\u0131, alarmlar kuraca\u011f\u0131n\u0131z\u0131 ve dinamik panolar olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Hibrit bulut izleme stratejinizi otomatize edin!","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\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/","og_locale":"tr_TR","og_type":"article","og_title":"Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme","og_description":"Hetzner Cloud altyap\u0131n\u0131z\u0131n performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 AWS CloudWatch'un g\u00fc\u00e7l\u00fc izleme yetenekleriyle entegre etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, Terraform'un g\u00fcc\u00fcn\u00fc kullanarak Hetzner Cloud sunucular\u0131n\u0131zdan gelen metrikleri AWS CloudWatch'a nas\u0131l aktaraca\u011f\u0131n\u0131z\u0131, alarmlar kuraca\u011f\u0131n\u0131z\u0131 ve dinamik panolar olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Hibrit bulut izleme stratejinizi otomatize edin!","og_url":"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-10T10:31:56+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"35 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme","datePublished":"2025-11-10T10:31:56+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/"},"wordCount":5126,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Cloud"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/","url":"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/","name":"Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-10T10:31:56+00:00","description":"Hetzner Cloud altyap\u0131n\u0131z\u0131n performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 AWS CloudWatch'un g\u00fc\u00e7l\u00fc izleme yetenekleriyle entegre etmek mi istiyorsunuz? Bu kapsaml\u0131 rehberde, Terraform'un g\u00fcc\u00fcn\u00fc kullanarak Hetzner Cloud sunucular\u0131n\u0131zdan gelen metrikleri AWS CloudWatch'a nas\u0131l aktaraca\u011f\u0131n\u0131z\u0131, alarmlar kuraca\u011f\u0131n\u0131z\u0131 ve dinamik panolar olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Hibrit bulut izleme stratejinizi otomatize edin!","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/hetzner-cloud-kaynaklarini-aws-cloudwatch-ile-terraform-uzerinden-izleme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hetzner Cloud Kaynaklar\u0131n\u0131 AWS CloudWatch ile Terraform \u00dczerinden \u0130zleme"}]},{"@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\/34057","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=34057"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34057\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34057"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34057"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}