{"id":39549,"date":"2026-02-23T20:41:08","date_gmt":"2026-02-23T17:41:08","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=39549"},"modified":"2026-02-23T20:41:08","modified_gmt":"2026-02-23T17:41:08","slug":"digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/","title":{"rendered":"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#8217;e G\u00f6nderme"},"content":{"rendered":"<p><body><\/p>\n<h2>DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#8217;e G\u00f6nderme<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla geli\u015fen yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n sorunsuz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak, performans darbo\u011fazlar\u0131n\u0131 tespit etmek, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 izlemek ve genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 anlamak i\u00e7in kapsaml\u0131 bir loglama stratejisi kritik \u00f6neme sahiptir. \u00d6zellikle da\u011f\u0131t\u0131k sistem mimarileri ve mikroservis tabanl\u0131 uygulamalar yayg\u0131nla\u015ft\u0131k\u00e7a, farkl\u0131 bile\u015fenlerden gelen loglar\u0131n merkezi bir konumda toplanmas\u0131, analiz edilmesi ve g\u00f6rselle\u015ftirilmesi bir zorunluluk haline gelmi\u015ftir. Aksi takdirde, bir hatan\u0131n k\u00f6k nedenini bulmak veya bir performans sorununu gidermek, birden fazla sunucu veya servis \u00fczerinde manuel olarak loglar\u0131 incelemeyi gerektiren zaman al\u0131c\u0131 ve hataya a\u00e7\u0131k bir s\u00fcre\u00e7 haline gelebilir.<\/p>\n<p>DigitalOcean, geli\u015ftiricilere ve i\u015fletmelere bulut altyap\u0131s\u0131 hizmetleri sunan pop\u00fcler bir platformdur. Uygulama Platformu (App Platform), geli\u015ftiricilerin kodlar\u0131n\u0131 kolayca da\u011f\u0131tmas\u0131na ve \u00f6l\u00e7eklendirmesine olanak tan\u0131yan, y\u00f6netilen bir PaaS (Platform as a Service) \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Bu platform, uygulaman\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc basitle\u015ftirirken, temel altyap\u0131 y\u00f6netimi y\u00fck\u00fcn\u00fc ortadan kald\u0131r\u0131r. Ancak App Platform&#8217;un sundu\u011fu kolayl\u0131klar aras\u0131nda, uygulamalar\u0131n \u00fcretti\u011fi loglar\u0131n uzun s\u00fcreli saklanmas\u0131, geli\u015fmi\u015f analizi veya di\u011fer sistemlerle entegrasyonu gibi daha derinlemesine log y\u00f6netimi yetenekleri varsay\u0131lan olarak sunulmaz.<\/p>\n<p>\u0130\u015fte tam bu noktada DigitalOcean Y\u00f6netilen OpenSearch (Managed OpenSearch) devreye girer. OpenSearch, a\u00e7\u0131k kaynakl\u0131 bir arama ve analiz motoru olup, b\u00fcy\u00fck hacimli verileri depolamak, aramak ve analiz etmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Log y\u00f6netimi, metrik izleme ve g\u00fcvenlik bilgileri ve olay y\u00f6netimi (SIEM) gibi bir\u00e7ok kullan\u0131m senaryosunda g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. DigitalOcean&#8217;\u0131n sundu\u011fu y\u00f6netilen OpenSearch hizmeti, k\u00fcme kurulumu, bak\u0131m\u0131, \u00f6l\u00e7eklendirilmesi ve g\u00fcvenli\u011fi gibi operasyonel y\u00fckleri \u00fcstlenerek geli\u015ftiricilerin ve DevOps ekiplerinin i\u015fini kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>Bu makalenin temel amac\u0131, DigitalOcean Uygulama Platformu&#8217;nda \u00e7al\u0131\u015fan uygulamalar\u0131n\u0131z\u0131n \u00fcretti\u011fi loglar\u0131, g\u00fcvenli ve verimli bir \u015fekilde DigitalOcean Y\u00f6netilen OpenSearch k\u00fcmenize nas\u0131l g\u00f6nderebilece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klamakt\u0131r. Bu entegrasyon sayesinde, uygulama loglar\u0131n\u0131z\u0131 merkezi bir konumda toplayabilir, g\u00fc\u00e7l\u00fc arama sorgular\u0131 ile sorunlar\u0131 h\u0131zla tespit edebilir, performans e\u011filimlerini g\u00f6rselle\u015ftirebilir ve potansiyel g\u00fcvenlik tehditlerine kar\u015f\u0131 proaktif uyar\u0131lar olu\u015fturabilirsiniz. Bu sayede operasyonel g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fcz\u00fc art\u0131r\u0131rken, hata ay\u0131klama s\u00fcre\u00e7lerinizi \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131rabilirsiniz.<\/p>\n<h2>DigitalOcean Uygulama Platformu Log Yap\u0131s\u0131<\/h2>\n<p>DigitalOcean Uygulama Platformu, deploy edilen uygulamalar\u0131n loglar\u0131n\u0131 standart \u00e7\u0131k\u0131\u015f (stdout) ve standart hata (stderr) ak\u0131\u015flar\u0131na yazmas\u0131n\u0131 bekler. Bu, konteyner tabanl\u0131 uygulamalar i\u00e7in yayg\u0131n ve en iyi uygulama olarak kabul edilen bir y\u00f6ntemdir. Uygulama kodunuzdan <code>console.log()<\/code> (Node.js), <code>print()<\/code> (Python) veya benzeri fonksiyonlarla yaz\u0131lan her \u015fey, App Platform taraf\u0131ndan toplanan loglar haline gelir.<\/p>\n<h3>Log T\u00fcrleri ve Formatlar\u0131<\/h3>\n<p>App Platform, uygulaman\u0131z\u0131n yan\u0131 s\u0131ra, derleme (build) ve da\u011f\u0131t\u0131m (deploy) s\u00fcre\u00e7lerine ait loglar\u0131 da toplar. Ayr\u0131ca, uygulaman\u0131za gelen HTTP isteklerini y\u00f6nlendiren y\u00fck dengeleyicinin (router) loglar\u0131n\u0131 da sa\u011flar.<\/p>\n<p>*   <strong>Uygulama Loglar\u0131:<\/strong> Uygulama kodunuzun do\u011frudan \u00fcretti\u011fi loglard\u0131r. Genellikle JSON, Common Log Format (CLF) veya basit metin format\u0131nda olabilirler. JSON format\u0131, log alanlar\u0131n\u0131 otomatik olarak ayr\u0131\u015ft\u0131rmak ve daha zengin sorgular yapmak i\u00e7in tercih edilen bir formatt\u0131r.<br \/>\n*   <strong>Derleme Loglar\u0131:<\/strong> Uygulaman\u0131z\u0131n kaynak kodunun derlenmesi ve konteyner imaj\u0131n\u0131n olu\u015fturulmas\u0131 s\u0131ras\u0131nda olu\u015fan \u00e7\u0131kt\u0131lard\u0131r. Bu loglar, derleme hatalar\u0131n\u0131 tespit etmek i\u00e7in \u00f6nemlidir.<br \/>\n*   <strong>Da\u011f\u0131t\u0131m Loglar\u0131:<\/strong> Uygulaman\u0131n yeni bir s\u00fcr\u00fcm\u00fcn\u00fcn platforma da\u011f\u0131t\u0131lmas\u0131 ve \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 s\u0131ras\u0131ndaki olaylar\u0131 g\u00f6sterir.<br \/>\n*   <strong>Router Loglar\u0131:<\/strong> Gelen HTTP istekleri, yan\u0131t s\u00fcreleri, durum kodlar\u0131 ve di\u011fer a\u011f trafi\u011fi bilgilerini i\u00e7erir. Bu loglar, uygulaman\u0131z\u0131n performans\u0131n\u0131 ve eri\u015filebilirli\u011fini izlemek i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>App Platform&#8217;da Loglara Eri\u015fim<\/h3>\n<p>DigitalOcean kontrol paneli \u00fczerinden veya <code>doctl<\/code> komut sat\u0131r\u0131 arac\u0131yla loglara eri\u015febilirsiniz:<\/p>\n<p>*   <strong>DigitalOcean Kontrol Paneli:<\/strong> Uygulaman\u0131z\u0131n detay sayfas\u0131na giderek &#8220;Logs&#8221; sekmesinden anl\u0131k log ak\u0131\u015f\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleyebilir veya ge\u00e7mi\u015f loglar\u0131 inceleyebilirsiniz. Ancak bu aray\u00fcz, genellikle s\u0131n\u0131rl\u0131 bir ge\u00e7mi\u015fi ve temel arama yeteneklerini sunar.<br \/>\n*   <strong><code>doctl<\/code> Komut Sat\u0131r\u0131 Arac\u0131:<\/strong> <code>doctl<\/code> arac\u0131, App Platform loglar\u0131na programatik olarak eri\u015fmek i\u00e7in \u00e7ok daha g\u00fc\u00e7l\u00fc bir y\u00f6ntem sunar. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-bash\">doctl app logs <uygulama-ad\u0131-veya-id>\n    doctl app logs <uygulama-ad\u0131-veya-id> --follow # Ger\u00e7ek zamanl\u0131 ak\u0131\u015f\n    doctl app logs <uygulama-ad\u0131-veya-id> --tail 100 # Son 100 sat\u0131r\u0131 g\u00f6ster\n    doctl app logs <uygulama-ad\u0131-veya-id> --component <bile\u015fen-ad\u0131> # Belirli bir bile\u015fenin loglar\u0131<\/code><\/pre>\n<p>    Bu komutlar, loglar\u0131 standart \u00e7\u0131kt\u0131ya yazd\u0131r\u0131r ve bu \u00e7\u0131kt\u0131y\u0131 ba\u015fka ara\u00e7lara pipe etmek veya bir dosyaya y\u00f6nlendirmek m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<h3>Neden Harici Bir Log Y\u00f6netim Sistemine \u0130htiya\u00e7 Duyulur?<\/h3>\n<p>DigitalOcean App Platform&#8217;un sa\u011flad\u0131\u011f\u0131 yerle\u015fik log g\u00f6r\u00fcnt\u00fcleme yetenekleri, h\u0131zl\u0131 hata ay\u0131klama ve anl\u0131k durum kontrol\u00fc i\u00e7in yeterli olabilir. Ancak daha kapsaml\u0131 ihtiya\u00e7lar i\u00e7in harici bir log y\u00f6netim sistemine ge\u00e7mek bir dizi avantaj sunar:<\/p>\n<p>*   <strong>Uzun S\u00fcreli Saklama:<\/strong> App Platform loglar\u0131 belirli bir s\u00fcre sonra silinebilir. Harici bir sistem, loglar\u0131 daha uzun s\u00fcre saklaman\u0131za olanak tan\u0131r.<br \/>\n*   <strong>Geli\u015fmi\u015f Arama ve Analiz:<\/strong> B\u00fcy\u00fck hacimli log verileri \u00fczerinde karma\u015f\u0131k sorgular \u00e7al\u0131\u015ft\u0131rmak, korelasyonlar bulmak ve desenleri tespit etmek i\u00e7in g\u00fc\u00e7l\u00fc arama motorlar\u0131na ihtiya\u00e7 vard\u0131r.<br \/>\n*   <strong>G\u00f6rselle\u015ftirme:<\/strong> Log verilerini grafikler, tablolar ve g\u00f6sterge tablolar\u0131 (dashboards) arac\u0131l\u0131\u011f\u0131yla g\u00f6rselle\u015ftirmek, e\u011filimleri anlamay\u0131 ve sorunlar\u0131 daha h\u0131zl\u0131 fark etmeyi sa\u011flar.<br \/>\n*   <strong>Uyar\u0131 ve Bildirimler:<\/strong> Belirli bir hata seviyesi, anomali veya performans d\u00fc\u015f\u00fc\u015f\u00fc tespit edildi\u011finde otomatik uyar\u0131lar olu\u015fturmak, proaktif operasyonel y\u00f6netim i\u00e7in kritiktir.<br \/>\n*   <strong>Merkezi Log Y\u00f6netimi:<\/strong> Birden fazla uygulama, bile\u015fen veya ortamdan gelen loglar\u0131 tek bir yerden y\u00f6netmek, operasyonel karma\u015f\u0131kl\u0131\u011f\u0131 azalt\u0131r.<br \/>\n*   <strong>Entegrasyon:<\/strong> Loglar\u0131 di\u011fer izleme, g\u00fcvenlik veya i\u015f zekas\u0131 ara\u00e7lar\u0131yla entegre etme yetene\u011fi.<\/p>\n<p>DigitalOcean Y\u00f6netilen OpenSearch, yukar\u0131daki ihtiya\u00e7lar\u0131n \u00e7o\u011funu kar\u015f\u0131layan g\u00fc\u00e7l\u00fc ve \u00f6l\u00e7eklenebilir bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<h2>DigitalOcean Y\u00f6netilen OpenSearch&#8217;e Genel Bak\u0131\u015f<\/h2>\n<p>OpenSearch, Amazon taraf\u0131ndan Elasticsearch 7.10.2 ve Kibana 7.10.2&#8217;den \u00e7atallanm\u0131\u015f (forked) ve Apache 2.0 lisans\u0131 alt\u0131nda geli\u015ftirilen a\u00e7\u0131k kaynakl\u0131 bir da\u011f\u0131t\u0131lm\u0131\u015f arama ve analiz motorudur. Temel olarak, metin, say\u0131sal, co\u011frafi ve yap\u0131land\u0131r\u0131lm\u0131\u015f\/yap\u0131land\u0131r\u0131lmam\u0131\u015f t\u00fcm veri t\u00fcrleri i\u00e7in tam metin arama, yap\u0131land\u0131r\u0131lm\u0131\u015f arama ve analitik yetenekleri sunar.<\/p>\n<h3>Temel Bile\u015fenler ve Kavramlar<\/h3>\n<p>*   <strong>D\u00fc\u011f\u00fcm (Node):<\/strong> OpenSearch k\u00fcmesini olu\u015fturan her bir sunucu veya \u00f6rnek.<br \/>\n*   <strong>K\u00fcme (Cluster):<\/strong> Bir veya daha fazla d\u00fc\u011f\u00fcmden olu\u015fan bir OpenSearch kurulumu.<br \/>\n*   <strong>Dizin (Index):<\/strong> Benzer \u00f6zelliklere sahip dok\u00fcmanlar\u0131n mant\u0131ksal bir koleksiyonu. \u0130li\u015fkisel veritabanlar\u0131ndaki tablolara benzer. Log analizi senaryosunda, genellikle loglar\u0131 tarihe g\u00f6re (\u00f6rn: <code>app-logs-2023-10-27<\/code>) dizinlere ay\u0131rmak yayg\u0131n bir uygulamad\u0131r.<br \/>\n*   <strong>Dok\u00fcman (Document):<\/strong> Bir dizindeki en k\u00fc\u00e7\u00fck veri birimi. Genellikle JSON format\u0131ndad\u0131r ve bir log kayd\u0131n\u0131, bir kullan\u0131c\u0131 profilini veya bir \u00fcr\u00fcn\u00fc temsil edebilir.<br \/>\n*   <strong>Alan (Field):<\/strong> Bir dok\u00fcmandaki veri par\u00e7alar\u0131 (\u00f6rn: <code>timestamp<\/code>, <code>level<\/code>, <code>message<\/code>).<br \/>\n*   <strong>Shard:<\/strong> Bir dizinin yatay olarak b\u00f6l\u00fcnd\u00fc\u011f\u00fc birim. B\u00fcy\u00fck dizinler, birden fazla shard&#8217;a b\u00f6l\u00fcnerek farkl\u0131 d\u00fc\u011f\u00fcmlere da\u011f\u0131t\u0131labilir, bu da performans\u0131 ve \u00f6l\u00e7eklenebilirli\u011fi art\u0131r\u0131r.<br \/>\n*   <strong>Replika (Replica):<\/strong> Shard&#8217;lar\u0131n kopyalar\u0131d\u0131r ve y\u00fcksek eri\u015filebilirlik ile hata tolerans\u0131 sa\u011flar.<\/p>\n<h3>OpenSearch Dashboards (Kibana)<\/h3>\n<p>OpenSearch Dashboards, OpenSearch k\u00fcmesindeki verileri g\u00f6rselle\u015ftirmek ve ke\u015ffetmek i\u00e7in kullan\u0131lan bir web aray\u00fcz\u00fcd\u00fcr. Eski ad\u0131yla Kibana olarak bilinir ve OpenSearch ile birlikte gelir. Dashboards ile \u015funlar\u0131 yapabilirsiniz:<\/p>\n<p>*   <strong>Ke\u015ffet (Discover):<\/strong> Loglar\u0131 aramak, filtrelemek ve incelemek.<br \/>\n*   <strong>G\u00f6rselle\u015ftir (Visualize):<\/strong> Verilerden \u00e7e\u015fitli grafikler, tablolar ve haritalar olu\u015fturmak.<br \/>\n*   <strong>G\u00f6sterge Paneli (Dashboard):<\/strong> Birden fazla g\u00f6rselle\u015ftirmeyi bir araya getirerek kapsaml\u0131 izleme panelleri olu\u015fturmak.<br \/>\n*   <strong>Uyar\u0131lar (Alerting):<\/strong> Belirli ko\u015fullar kar\u015f\u0131land\u0131\u011f\u0131nda bildirimler g\u00f6ndermek.<br \/>\n*   <strong>Anomaliler (Anomaly Detection):<\/strong> Verilerdeki ola\u011fand\u0131\u015f\u0131 desenleri otomatik olarak tespit etmek.<\/p>\n<h3>DigitalOcean Y\u00f6netilen OpenSearch&#8217;in Avantajlar\u0131<\/h3>\n<p>DigitalOcean&#8217;\u0131n y\u00f6netilen hizmeti, OpenSearch&#8217;in g\u00fc\u00e7l\u00fc yeteneklerini kullan\u0131rken operasyonel y\u00fck\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r:<\/p>\n<p>*   <strong>Kolay Kurulum ve Y\u00f6netim:<\/strong> Dakikalar i\u00e7inde bir OpenSearch k\u00fcmesi olu\u015fturabilirsiniz. Altyap\u0131 provizyonu, kurulum ve ilk yap\u0131land\u0131rma DigitalOcean taraf\u0131ndan yap\u0131l\u0131r.<br \/>\n*   <strong>Otomatik \u00d6l\u00e7eklendirme:<\/strong> \u0130htiya\u00e7lar\u0131n\u0131za g\u00f6re k\u00fcme boyutunu kolayca ayarlayabilirsiniz.<br \/>\n*   <strong>Y\u00fcksek Eri\u015filebilirlik ve Yedekleme:<\/strong> \u00c7o\u011fu y\u00f6netilen hizmet gibi, DigitalOcean da k\u00fcmenizin y\u00fcksek eri\u015filebilirli\u011fini ve d\u00fczenli yedeklemelerini sa\u011flar.<br \/>\n*   <strong>G\u00fcvenlik:<\/strong> A\u011f izolasyonu, TLS\/SSL \u015fifrelemesi ve IP tabanl\u0131 eri\u015fim kontrol\u00fc gibi g\u00fcvenlik \u00f6zellikleri varsay\u0131lan olarak sunulur.<br \/>\n*   <strong>Otomatik Bak\u0131m ve G\u00fcncellemeler:<\/strong> Yaz\u0131l\u0131m g\u00fcncellemeleri ve yamalar DigitalOcean taraf\u0131ndan y\u00f6netilir, bu da g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n kapat\u0131lmas\u0131na ve yeni \u00f6zelliklerin h\u0131zla devreye al\u0131nmas\u0131na yard\u0131mc\u0131 olur.<br \/>\n*   <strong>\u0130zleme ve Destek:<\/strong> K\u00fcmenizin performans\u0131n\u0131 izleyebilir ve DigitalOcean destek ekibinden yard\u0131m alabilirsiniz.<\/p>\n<p>Bu avantajlar, geli\u015ftiricilerin ve DevOps ekiplerinin altyap\u0131 y\u00f6netimi yerine uygulama geli\u015ftirmeye ve log analizi sonu\u00e7lar\u0131ndan de\u011fer yaratmaya odaklanmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Entegrasyon Mimarisi ve Bile\u015fenleri<\/h2>\n<p>DigitalOcean Uygulama Platformu loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#8217;e g\u00f6ndermek i\u00e7in izlenecek genel mimari, bir log toplay\u0131c\u0131 veya iletici (log forwarder) kullanmay\u0131 i\u00e7erir. App Platform, loglar\u0131 do\u011frudan harici bir OpenSearch k\u00fcmesine g\u00f6nderme yetene\u011fine sahip de\u011fildir. Bu nedenle, loglar\u0131 App Platform&#8217;dan \u00e7ekecek, i\u015fleyecek ve OpenSearch&#8217;e iletecek bir ara katmana ihtiyac\u0131m\u0131z var.<\/p>\n<h3>Log Ak\u0131\u015f\u0131n\u0131n Genel Resmi<\/h3>\n<p>1.  <strong>DigitalOcean Uygulama Platformu:<\/strong> Uygulama ve sistem loglar\u0131n\u0131 stdout\/stderr \u00fczerinden \u00fcretir.<br \/>\n2.  <strong>Log Forwarder Droplet:<\/strong> <code>doctl<\/code> arac\u0131l\u0131\u011f\u0131yla App Platform loglar\u0131n\u0131 \u00e7eker, i\u015fler ve tamponlar.<br \/>\n3.  <strong>DigitalOcean Y\u00f6netilen OpenSearch:<\/strong> \u0130\u015flenmi\u015f loglar\u0131 depolar, indeksler ve analiz i\u00e7in haz\u0131r hale getirir.<br \/>\n4.  <strong>OpenSearch Dashboards:<\/strong> Kullan\u0131c\u0131lar\u0131n loglar\u0131 g\u00f6rselle\u015ftirmesi ve sorgulamas\u0131 i\u00e7in aray\u00fcz sa\u011flar.<\/p>\n<pre><code class=\"language-\">+--------------------------+     +------------------------+     +--------------------------+\n| DigitalOcean App Platform| <---| doctl app logs --follow | --> | Log Forwarder Droplet    |\n| (Uygulama Loglar\u0131)       |     | (Log \u00c7ekme)            |     | (Fluent Bit)             |\n+--------------------------+     +------------------------+     |                          |\n                                                                 | - Loglar\u0131 Okur           |\n                                                                 | - Ayr\u0131\u015ft\u0131r\u0131r\/D\u00f6n\u00fc\u015ft\u00fcr\u00fcr   |\n                                                                 | - OpenSearch'e G\u00f6nderir  |\n                                                                 +--------------------------+\n                                                                             |\n                                                                             V\n                                                             +---------------------------------+\n                                                             | DigitalOcean Y\u00f6netilen OpenSearch |\n                                                             | (Depolama, \u0130ndeksleme, Analiz)  |\n                                                             +---------------------------------+\n                                                                             |\n                                                                             V\n                                                             +---------------------------------+\n                                                             | OpenSearch Dashboards           |\n                                                             | (G\u00f6rselle\u015ftirme, Sorgulama)     |\n                                                             +---------------------------------+<\/code><\/pre>\n<h3>Log Toplay\u0131c\u0131 Se\u00e7enekleri<\/h3>\n<p>Log Forwarder Droplet \u00fczerinde \u00e7al\u0131\u015ft\u0131rabilece\u011fimiz birka\u00e7 pop\u00fcler log toplay\u0131c\u0131 veya iletici bulunmaktad\u0131r:<\/p>\n<p>*   <strong>Fluentd \/ Fluent Bit:<\/strong><br \/>\n    *   <strong>Fluent Bit:<\/strong> Daha hafif, daha d\u00fc\u015f\u00fck kaynak t\u00fcketimine sahip ve genellikle konteynerli ortamlar veya g\u00f6m\u00fcl\u00fc sistemler i\u00e7in tercih edilen bir se\u00e7enek. Geni\u015f bir giri\u015f (input) ve \u00e7\u0131k\u0131\u015f (output) eklentisi yelpazesine sahiptir. C ile yaz\u0131lm\u0131\u015ft\u0131r.<br \/>\n    *   <strong>Fluentd:<\/strong> Daha g\u00fc\u00e7l\u00fc d\u00f6n\u00fc\u015f\u00fcm yetenekleri sunan, Ruby ile yaz\u0131lm\u0131\u015f daha kapsaml\u0131 bir log toplay\u0131c\u0131d\u0131r.<br \/>\n    *   Her ikisi de Cloud Native Computing Foundation (CNCF) projesidir ve end\u00fcstri standard\u0131 olarak kabul edilir.<br \/>\n*   <strong>Logstash:<\/strong><br \/>\n    *   Elastic Stack&#8217;in (Elasticsearch, Logstash, Kibana) bir par\u00e7as\u0131d\u0131r.<br \/>\n    *   G\u00fc\u00e7l\u00fc filtreleme ve d\u00f6n\u00fc\u015f\u00fcm yetenekleri sunar, ancak JVM tabanl\u0131 oldu\u011fu i\u00e7in Fluent Bit&#8217;e g\u00f6re daha fazla kaynak t\u00fcketir.<br \/>\n*   <strong>Vector:<\/strong><br \/>\n    *   Rust ile yaz\u0131lm\u0131\u015f, y\u00fcksek performansl\u0131 ve bellek g\u00fcvenli bir log toplay\u0131c\u0131d\u0131r. Fluent Bit&#8217;e benzer \u015fekilde hafif ve etkilidir.<\/p>\n<p>Bu makalede, DigitalOcean Uygulama Platformu loglar\u0131n\u0131 toplamak ve OpenSearch&#8217;e g\u00f6ndermek i\u00e7in <strong>Fluent Bit<\/strong>&#8216;i kullanaca\u011f\u0131z. Fluent Bit, d\u00fc\u015f\u00fck kaynak t\u00fcketimi, y\u00fcksek performans ve geni\u015f eklenti deste\u011fi sayesinde bu senaryo i\u00e7in ideal bir se\u00e7imdir. \u00d6zellikle <code>doctl<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 bir dosyaya yaz\u0131p bu dosyay\u0131 <code>tail<\/code> input eklentisi ile okuma yakla\u015f\u0131m\u0131nda Fluent Bit olduk\u00e7a verimlidir.<\/p>\n<h3>Fluent Bit&#8217;in Tercih Edilme Nedenleri<\/h3>\n<p>1.  <strong>Hafiflik ve D\u00fc\u015f\u00fck Kaynak T\u00fcketimi:<\/strong> K\u00fc\u00e7\u00fck bir Droplet \u00fczerinde bile verimli \u00e7al\u0131\u015f\u0131r, bu da maliyetleri d\u00fc\u015f\u00fcr\u00fcr.<br \/>\n2.  <strong>Y\u00fcksek Performans:<\/strong> \u00c7ok y\u00fcksek hacimli loglar\u0131 i\u015fleyebilir.<br \/>\n3.  <strong>Esneklik:<\/strong> \u00c7e\u015fitli giri\u015f (input), filtre (filter) ve \u00e7\u0131k\u0131\u015f (output) eklentileri sayesinde farkl\u0131 log kaynaklar\u0131ndan veri alabilir ve farkl\u0131 hedeflere g\u00f6nderebilir.<br \/>\n4.  <strong>G\u00fcvenilirlik:<\/strong> Log kayb\u0131n\u0131 \u00f6nlemek i\u00e7in dahili tamponlama ve yeniden deneme mekanizmalar\u0131na sahiptir.<br \/>\n5.  <strong>OpenSearch Deste\u011fi:<\/strong> Do\u011frudan OpenSearch&#8217;e veri g\u00f6ndermek i\u00e7in \u00f6zel bir \u00e7\u0131k\u0131\u015f eklentisine sahiptir.<\/p>\n<p>Bu mimari, App Platform&#8217;dan gelen loglar\u0131n merkezi bir OpenSearch k\u00fcmesinde toplanmas\u0131n\u0131 sa\u011flayarak, log y\u00f6netimi ve analizi i\u00e7in g\u00fc\u00e7l\u00fc bir temel olu\u015fturur.<\/p>\n<h2>Ad\u0131m Ad\u0131m Entegrasyon Rehberi<\/h2>\n<p>Bu b\u00f6l\u00fcmde, DigitalOcean Uygulama Platformu loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#8217;e g\u00f6ndermek i\u00e7in gerekli ad\u0131mlar\u0131 ayr\u0131nt\u0131l\u0131 olarak ele alaca\u011f\u0131z.<\/p>\n<h3>5.1. DigitalOcean Y\u00f6netilen OpenSearch K\u00fcmesi Olu\u015fturma<\/h3>\n<p>\u0130lk ad\u0131m, loglar\u0131m\u0131z\u0131 depolayaca\u011f\u0131m\u0131z bir OpenSearch k\u00fcmesi olu\u015fturmakt\u0131r.<\/p>\n<p>1.  <strong>DigitalOcean Kontrol Paneline Giri\u015f Yap\u0131n:<\/strong> <code>cloud.digitalocean.com<\/code> adresinden hesab\u0131n\u0131za giri\u015f yap\u0131n.<br \/>\n2.  <strong>Yeni Veritaban\u0131 K\u00fcmesi Olu\u015fturun:<\/strong> Sol men\u00fcden &#8220;Databases&#8221; se\u00e7ene\u011fine t\u0131klay\u0131n ve ard\u0131ndan &#8220;Create a Database Cluster&#8221; butonuna bas\u0131n.<br \/>\n3.  <strong>Motor Se\u00e7imi:<\/strong> Veritaban\u0131 motoru olarak &#8220;OpenSearch&#8221;i se\u00e7in.<br \/>\n4.  <strong>S\u00fcr\u00fcm Se\u00e7imi:<\/strong> Mevcut en son OpenSearch s\u00fcr\u00fcm\u00fcn\u00fc se\u00e7in.<br \/>\n5.  <strong>Plan Se\u00e7imi:<\/strong> \u0130htiya\u00e7lar\u0131n\u0131za uygun bir plan se\u00e7in. Log hacminiz ve saklama s\u00fcreniz, se\u00e7meniz gereken d\u00fc\u011f\u00fcm say\u0131s\u0131n\u0131 ve depolama kapasitesini etkileyecektir. Genellikle ba\u015flang\u0131\u00e7 i\u00e7in k\u00fc\u00e7\u00fck bir plan yeterli olabilir ve daha sonra kolayca \u00f6l\u00e7eklendirebilirsiniz.<br \/>\n6.  <strong>Veri Merkezi B\u00f6lgesi Se\u00e7imi:<\/strong> Log Forwarder Droplet&#8217;inizle ayn\u0131 veri merkezi b\u00f6lgesini se\u00e7mek, a\u011f gecikmesini azalt\u0131r ve performans\u0131 art\u0131r\u0131r.<br \/>\n7.  <strong>K\u00fcme Ad\u0131:<\/strong> K\u00fcmenize a\u00e7\u0131klay\u0131c\u0131 bir ad verin (\u00f6rn: <code>app-platform-logs-opensearch<\/code>).<br \/>\n8.  <strong>G\u00fcvenilen Kaynaklar (Trusted Sources) Ekleme:<\/strong> Bu ad\u0131m kritik \u00f6neme sahiptir. Varsay\u0131lan olarak, OpenSearch k\u00fcmenize hi\u00e7bir IP adresinden eri\u015filemez. Log Forwarder Droplet&#8217;inizin genel IP adresini &#8220;Trusted Sources&#8221; listesine eklemeniz gerekir. E\u011fer Droplet&#8217;i hen\u00fcz olu\u015fturmad\u0131ysan\u0131z, \u015fimdilik &#8220;Allow access from anywhere&#8221; se\u00e7ene\u011fini i\u015faretleyebilir (g\u00fcvenlik riski ta\u015f\u0131r, test ama\u00e7l\u0131d\u0131r) veya kendi IP adresinizi ekleyerek daha sonra Droplet IP&#8217;sini ekleyebilirsiniz. <strong>\u00dcretim ortam\u0131nda sadece gerekli IP adreslerine izin verilmelidir.<\/strong><br \/>\n9.  <strong>K\u00fcme Olu\u015ftur:<\/strong> &#8220;Create a Database Cluster&#8221; butonuna t\u0131klayarak k\u00fcmenizi olu\u015fturun. Bu i\u015flem birka\u00e7 dakika s\u00fcrebilir.<br \/>\n10. <strong>Ba\u011flant\u0131 Bilgilerini Not Al\u0131n:<\/strong> K\u00fcme olu\u015fturulduktan sonra, &#8220;Overview&#8221; sayfas\u0131ndan OpenSearch k\u00fcmenizin ana bilgisayar ad\u0131 (hostname), ba\u011flant\u0131 noktas\u0131 (port), kullan\u0131c\u0131 ad\u0131 (varsay\u0131lan: <code>doadmin<\/code>) ve parolas\u0131 gibi ba\u011flant\u0131 bilgilerini not al\u0131n. Bu bilgiler, Fluent Bit yap\u0131land\u0131rmas\u0131 i\u00e7in gereklidir.<\/p>\n<h3>5.2. Log Forwarder Droplet Olu\u015fturma ve Yap\u0131land\u0131rma<\/h3>\n<p>Loglar\u0131 App Platform&#8217;dan \u00e7ekecek ve OpenSearch&#8217;e iletecek bir Droplet&#8217;e ihtiyac\u0131m\u0131z var.<\/p>\n<p>1.  <strong>Droplet Olu\u015fturma:<\/strong><br \/>\n    *   DigitalOcean kontrol panelinden &#8220;Droplets&#8221; -> &#8220;Create Droplet&#8221; yolunu izleyin.<br \/>\n    *   <strong>\u0130\u015fletim Sistemi:<\/strong> Ubuntu 22.04 (LTS) veya benzeri bir Linux da\u011f\u0131t\u0131m\u0131 se\u00e7in.<br \/>\n    *   <strong>Plan:<\/strong> Log hacmine ba\u011fl\u0131 olarak uygun bir plan se\u00e7in. K\u00fc\u00e7\u00fck veya orta b\u00fcy\u00fckl\u00fckteki uygulamalar i\u00e7in en k\u00fc\u00e7\u00fck Droplet (Basic, 1GB RAM) genellikle yeterlidir.<br \/>\n    *   <strong>Veri Merkezi B\u00f6lgesi:<\/strong> OpenSearch k\u00fcmenizle ayn\u0131 b\u00f6lgeyi se\u00e7ti\u011finizden emin olun.<br \/>\n    *   <strong>Kimlik Do\u011frulama:<\/strong> SSH anahtar\u0131 kullanman\u0131z\u0131 \u015fiddetle tavsiye ederiz.<br \/>\n    *   <strong>Hostname:<\/strong> Droplet&#8217;inize a\u00e7\u0131klay\u0131c\u0131 bir ad verin (\u00f6rn: <code>app-log-forwarder<\/code>).<br \/>\n    *   <strong>Olu\u015ftur:<\/strong> Droplet&#8217;i olu\u015fturun.<br \/>\n2.  <strong>Droplet&#8217;e SSH ile Ba\u011flan\u0131n:<\/strong> Droplet&#8217;iniz haz\u0131r oldu\u011funda, SSH anahtar\u0131n\u0131z\u0131 kullanarak ba\u011flan\u0131n:<\/p>\n<pre><code class=\"language-bash\">ssh root@<droplet-genel-ip-adresi><\/code><\/pre>\n<p>3.  <strong>Sistem G\u00fcncellemesi:<\/strong><\/p>\n<pre><code class=\"language-bash\">apt update && apt upgrade -y<\/code><\/pre>\n<p>4.  <strong><code>doctl<\/code> Kurulumu:<\/strong> DigitalOcean API ile etkile\u015fim kurmak i\u00e7in <code>doctl<\/code> arac\u0131n\u0131 kurun.<\/p>\n<pre><code class=\"language-bash\">snap install doctl --classic # Ubuntu i\u00e7in en kolay yol<\/code><\/pre>\n<p>    Di\u011fer da\u011f\u0131t\u0131mlar i\u00e7in DigitalOcean dok\u00fcmantasyonunu kontrol edin.<br \/>\n5.  <strong><code>doctl<\/code> Kimlik Do\u011frulamas\u0131:<\/strong> Bir DigitalOcean API token&#8217;\u0131na ihtiyac\u0131n\u0131z olacak. Kontrol panelinden &#8220;API&#8221; -> &#8220;Tokens\/Keys&#8221; b\u00f6l\u00fcm\u00fcne gidin ve yeni bir token olu\u015fturun (Read &#038; Write izinleriyle). Bu token&#8217;\u0131 kullanarak <code>doctl<\/code>&#8216;i yap\u0131land\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">doctl auth init\n    # \u0130stendi\u011finde API token'\u0131n\u0131z\u0131 yap\u0131\u015ft\u0131r\u0131n.<\/code><\/pre>\n<p>6.  <strong>OpenSearch G\u00fcvenilen Kaynaklar\u0131 G\u00fcncelleme:<\/strong> Log Forwarder Droplet&#8217;inizin genel IP adresini OpenSearch k\u00fcmenizin &#8220;Trusted Sources&#8221; listesine ekledi\u011finizden emin olun. Bu, OpenSearch k\u00fcmenizin &#8220;Overview&#8221; sayfas\u0131ndan yap\u0131labilir.<\/p>\n<h3>5.3. DigitalOcean App Platform Loglar\u0131n\u0131 \u00c7ekme<\/h3>\n<p>\u015eimdi <code>doctl<\/code> kullanarak App Platform loglar\u0131n\u0131 \u00e7ekece\u011fiz ve Fluent Bit&#8217;in okuyabilece\u011fi bir dosyaya y\u00f6nlendirece\u011fiz.<\/p>\n<p>1.  <strong>App ID veya Ad\u0131n\u0131 Bulma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl app list\n    # Uygulaman\u0131z\u0131n ad\u0131n\u0131 veya ID'sini not al\u0131n.<\/code><\/pre>\n<p>2.  <strong>Loglar\u0131 Bir Dosyaya Y\u00f6nlendirme:<\/strong><br \/>\n    Bu ad\u0131mda, <code>doctl<\/code> komutunu s\u00fcrekli olarak \u00e7al\u0131\u015ft\u0131racak ve \u00e7\u0131kt\u0131s\u0131n\u0131 bir dosyaya y\u00f6nlendirecek bir <code>systemd<\/code> servisi olu\u015fturmak en iyi y\u00f6ntemdir. Bu, Droplet yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda bile log ak\u0131\u015f\u0131n\u0131n devam etmesini sa\u011flar.<\/p>\n<p>    \u00d6ncelikle, log dosyas\u0131n\u0131n depolanaca\u011f\u0131 bir dizin olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">mkdir -p \/var\/log\/app_platform<\/code><\/pre>\n<p>    Ard\u0131ndan, <code>doctl<\/code> komutunu \u00e7al\u0131\u015ft\u0131ran bir shell beti\u011fi olu\u015fturun (\u00f6rn: <code>\/usr\/local\/bin\/start_app_logs.sh<\/code>):<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n    LOG_FILE=\"\/var\/log\/app_platform\/app_logs.log\"\n    APP_ID=\"<uygulama-id-veya-ad\u0131>\" # Buraya uygulaman\u0131z\u0131n ID'sini veya ad\u0131n\u0131 yaz\u0131n\n\n    # Log dosyas\u0131n\u0131n boyutunu s\u0131n\u0131rlamak i\u00e7in logrotate kullanaca\u011f\u0131z,\n    # ancak burada basit bir \u00f6rnek i\u00e7in dosyay\u0131 s\u0131f\u0131rlama veya boyut kontrol\u00fc eklenebilir.\n    # \u015eimdilik, sadece loglar\u0131 takip etmeye odaklanal\u0131m.\n\n    exec doctl app logs \"$APP_ID\" --follow --format json >> \"$LOG_FILE\" 2>&1<\/code><\/pre>\n<p>    Betik dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131labilir yap\u0131n:<\/p>\n<pre><code class=\"language-bash\">chmod +x \/usr\/local\/bin\/start_app_logs.sh<\/code><\/pre>\n<p>    \u015eimdi bu beti\u011fi \u00e7al\u0131\u015ft\u0131ran bir <code>systemd<\/code> servisi olu\u015ftural\u0131m (<code>\/etc\/systemd\/system\/do-app-logs.service<\/code>):<\/p>\n<pre><code class=\"language-ini\">[Unit]\n    Description=DigitalOcean App Platform Log Forwarder\n    After=network.target\n\n    [Service]\n    ExecStart=\/usr\/local\/bin\/start_app_logs.sh\n    Restart=always\n    User=root # veya daha k\u0131s\u0131tl\u0131 bir kullan\u0131c\u0131\n    Group=root # veya daha k\u0131s\u0131tl\u0131 bir grup\n\n    [Install]\n    WantedBy=multi-user.target<\/code><\/pre>\n<p>    <code>systemd<\/code> servisini etkinle\u015ftirin ve ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">systemctl daemon-reload\n    systemctl enable do-app-logs.service\n    systemctl start do-app-logs.service<\/code><\/pre>\n<p>    Servisin durumunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">systemctl status do-app-logs.service<\/code><\/pre>\n<p>    Art\u0131k <code>\/var\/log\/app_platform\/app_logs.log<\/code> dosyas\u0131na App Platform loglar\u0131 akmaya ba\u015flayacakt\u0131r. Bu dosya, Fluent Bit taraf\u0131ndan okunacakt\u0131r.<\/p>\n<p>    <strong>Not:<\/strong> <code>doctl<\/code> \u00e7\u0131kt\u0131s\u0131 genellikle JSON format\u0131ndad\u0131r. <code>--format json<\/code> parametresi bunu sa\u011flamaya yard\u0131mc\u0131 olur. E\u011fer uygulaman\u0131z\u0131n loglar\u0131 JSON de\u011filse, Fluent Bit filtreleriyle ayr\u0131\u015ft\u0131rman\u0131z gerekecektir.<\/p>\n<h3>5.4. Fluent Bit Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Fluent Bit&#8217;i kurup, <code>\/var\/log\/app_platform\/app_logs.log<\/code> dosyas\u0131n\u0131 okuyacak ve loglar\u0131 OpenSearch k\u00fcmenize g\u00f6nderecek \u015fekilde yap\u0131land\u0131raca\u011f\u0131z.<\/p>\n<p>1.  <strong>Fluent Bit Kurulumu:<\/strong><br \/>\n    DigitalOcean&#8217;\u0131n resmi dok\u00fcmantasyonunda \u00f6nerilen ad\u0131mlar\u0131 izleyerek Fluent Bit&#8217;i kurun:<\/p>\n<pre><code class=\"language-bash\">curl https:\/\/raw.githubusercontent.com\/fluent\/fluent-bit-docs\/master\/installation\/debian\/fluent-bit.sh | sh<\/code><\/pre>\n<p>    Bu betik, Fluent Bit deposunu sisteminize ekler ve paketi kurar.<br \/>\n2.  <strong>Fluent Bit Yap\u0131land\u0131rmas\u0131 (<code>\/etc\/fluent-bit\/fluent-bit.conf<\/code>):<\/strong><br \/>\n    Varsay\u0131lan <code>fluent-bit.conf<\/code> dosyas\u0131n\u0131 yedekleyin ve i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi d\u00fczenleyin:<\/p>\n<pre><code class=\"language-ini\">[SERVICE]\n        Flush        5\n        Daemon       Off\n        Log_Level    info\n        Parsers_File parsers.conf\n        # Storage_Path \/var\/log\/flb-storage\/ # Disk tamponlamay\u0131 etkinle\u015ftirmek i\u00e7in\n        # Storage.Sync normal\n\n    [INPUT]\n        Name             tail\n        Tag              app_platform.logs\n        Path             \/var\/log\/app_platform\/app_logs.log\n        Parser           json_parser # E\u011fer loglar JSON ise bu parser'\u0131 kullan\u0131n\n        DB               \/var\/log\/flb-tail.db # Nerede kald\u0131\u011f\u0131n\u0131 takip etmek i\u00e7in\n        Mem_Buf_Limit    5MB\n        Skip_Long_Lines  On\n\n    [FILTER]\n        Name             nest\n        Match            app_platform.logs\n        Nested_log       log # E\u011fer JSON i\u00e7inde 'log' anahtar\u0131 alt\u0131nda log varsa\n        Operation        lift\n        # E\u011fer loglar\u0131n\u0131zda zaman damgas\u0131 farkl\u0131 bir alandaysa veya yoksa,\n        # bu filtreyi kullanarak zaman damgas\u0131n\u0131 i\u015fleyebilirsiniz.\n        # Name             modify\n        # Match            app_platform.logs\n        # Add              @timestamp ${time.iso8601} # Zaman damgas\u0131 ekler\n\n    [OUTPUT]\n        Name             opensearch\n        Match            app_platform.logs\n        Host             <opensearch-hostname> # OpenSearch k\u00fcmenizin hostname'i\n        Port             <opensearch-port>     # Genellikle 2433\n        Index            app-logs-${DATE:%Y.%m.%d} # G\u00fcnl\u00fck indeks rotasyonu\n        Type             _doc\n        HTTP_User        doadmin\n        HTTP_Passwd      <opensearch-password> # OpenSearch k\u00fcmenizin parolas\u0131\n        TLS              On\n        TLS.Verify       On\n        # TLS.CA_File      \/path\/to\/ca.pem # Gerekirse CA sertifikas\u0131\n        Suppress_Type_Name On # OpenSearch 7+ i\u00e7in \u00f6nerilir\n        # Buffer_Size      False # B\u00fcy\u00fck loglar i\u00e7in tampon boyutunu ayarlay\u0131n\n        # Retry_Limit      False # Sonsuz yeniden deneme<\/code><\/pre>\n<p>    <strong>A\u00e7\u0131klamalar:<\/strong><br \/>\n    *   <strong><code>[SERVICE]<\/code>:<\/strong> Fluent Bit&#8217;in genel ayarlar\u0131. <code>Flush<\/code> loglar\u0131n ne s\u0131kl\u0131kla hedefe g\u00f6nderilece\u011fini belirler.<br \/>\n    *   <strong><code>[INPUT]<\/code>:<\/strong> <code>tail<\/code> eklentisi, belirtilen log dosyas\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak okur.<br \/>\n        *   <code>Path<\/code>: Log dosyam\u0131z\u0131n yolu.<br \/>\n        *   <code>Parser<\/code>: E\u011fer <code>doctl<\/code> \u00e7\u0131kt\u0131s\u0131 JSON format\u0131ndaysa, <code>json_parser<\/code> kullanabiliriz. Bu parser, <code>parsers.conf<\/code> i\u00e7inde tan\u0131ml\u0131d\u0131r ve loglar\u0131 JSON olarak ayr\u0131\u015ft\u0131r\u0131r.<br \/>\n        *   <code>DB<\/code>: Fluent Bit&#8217;in dosya okumas\u0131nda nerede kald\u0131\u011f\u0131n\u0131 takip etmek i\u00e7in kullan\u0131l\u0131r, b\u00f6ylece yeniden ba\u015flatmalarda log kayb\u0131 ya\u015fanmaz.<br \/>\n    *   <strong><code>[FILTER]<\/code>:<\/strong> Loglar\u0131 OpenSearch&#8217;e g\u00f6ndermeden \u00f6nce i\u015flemek i\u00e7in kullan\u0131l\u0131r.<br \/>\n        *   <code>nest<\/code> filtresi, e\u011fer <code>doctl<\/code> \u00e7\u0131kt\u0131s\u0131 <code>{ \"log\": \"ger\u00e7ek log mesaj\u0131\", \"level\": \"info\" }<\/code> gibi nested bir yap\u0131ya sahipse, <code>log<\/code> anahtar\u0131n\u0131n i\u00e7eri\u011fini ana seviyeye \u00e7\u0131kar\u0131r. Bu, OpenSearch&#8217;te daha d\u00fczg\u00fcn bir yap\u0131 sa\u011flar.<br \/>\n        *   E\u011fer loglar\u0131n\u0131zda zaman damgas\u0131 yoksa veya do\u011fru formatta de\u011filse, <code>modify<\/code> filtresi ile <code>@timestamp<\/code> alan\u0131 ekleyebilir veya d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz.<br \/>\n    *   <strong><code>[OUTPUT]<\/code>:<\/strong> <code>opensearch<\/code> eklentisi, i\u015flenmi\u015f loglar\u0131 DigitalOcean Y\u00f6netilen OpenSearch k\u00fcmenize g\u00f6nderir.<br \/>\n        *   <code><opensearch-hostname><\/code> ve <code><opensearch-port><\/code>: OpenSearch k\u00fcmenizin ba\u011flant\u0131 bilgilerini buraya yaz\u0131n.<br \/>\n        *   <code>Index<\/code>: Loglar\u0131n OpenSearch&#8217;te hangi dizine yaz\u0131laca\u011f\u0131n\u0131 belirler. <code>${DATE:%Y.%m.%d}<\/code> ifadesi, loglar\u0131n g\u00fcnl\u00fck olarak yeni bir indekse yaz\u0131lmas\u0131n\u0131 sa\u011flar (\u00f6rn: <code>app-logs-2023.10.27<\/code>). Bu, indeks y\u00f6netimini kolayla\u015ft\u0131r\u0131r.<br \/>\n        *   <code>HTTP_User<\/code> ve <code>HTTP_Passwd<\/code>: OpenSearch k\u00fcmenizin <code>doadmin<\/code> kullan\u0131c\u0131 ad\u0131 ve parolas\u0131.<br \/>\n        *   <code>TLS On<\/code> ve <code>TLS.Verify On<\/code>: G\u00fcvenli ba\u011flant\u0131 i\u00e7in TLS\/SSL \u015fifrelemesini etkinle\u015ftirir ve sertifika do\u011frulamas\u0131 yapar.<\/p>\n<p>    <strong><code>parsers.conf<\/code> dosyas\u0131n\u0131 kontrol edin:<\/strong><br \/>\n    E\u011fer loglar\u0131n\u0131z JSON ise, <code>parsers.conf<\/code> dosyas\u0131nda <code>[PARSER]<\/code> b\u00f6l\u00fcm\u00fcnde <code>json_parser<\/code>&#8216;\u0131n tan\u0131ml\u0131 oldu\u011fundan emin olun. Genellikle varsay\u0131lan kurulumda bu mevcuttur:<\/p>\n<pre><code class=\"language-ini\">[PARSER]\n        Name        json_parser\n        Format      json\n        Time_Key    time # E\u011fer loglar\u0131n\u0131zda zaman damgas\u0131 'time' anahtar\u0131nda ise\n        Time_Format %Y-%m-%dT%H:%M:%S.%L%z # JSON loglar\u0131n\u0131zdaki zaman damgas\u0131 format\u0131na g\u00f6re ayarlay\u0131n<\/code><\/pre>\n<p>    JSON loglar\u0131n\u0131zdaki zaman damgas\u0131 format\u0131na dikkat edin ve <code>Time_Format<\/code>&#8216;\u0131 buna g\u00f6re ayarlay\u0131n. E\u011fer zaman damgas\u0131 yoksa veya <code>time<\/code> anahtar\u0131nda de\u011filse, <code>Time_Key<\/code> ve <code>Time_Format<\/code> sat\u0131rlar\u0131n\u0131 kald\u0131rabilir ve <code>modify<\/code> filtresi ile <code>@timestamp<\/code> ekleyebilirsiniz.<\/p>\n<p>3.  <strong>Fluent Bit Servisini Ba\u015flatma:<\/strong><\/p>\n<pre><code class=\"language-bash\">systemctl enable fluent-bit\n    systemctl start fluent-bit\n    systemctl status fluent-bit<\/code><\/pre>\n<p>    Loglar\u0131n d\u00fczg\u00fcn bir \u015fekilde OpenSearch&#8217;e g\u00f6nderilip g\u00f6nderilmedi\u011fini kontrol etmek i\u00e7in Fluent Bit&#8217;in loglar\u0131n\u0131 izleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">journalctl -u fluent-bit -f<\/code><\/pre>\n<h3>5.5. Entegrasyonu Test Etme ve Do\u011frulama<\/h3>\n<p>Loglar\u0131n OpenSearch&#8217;e ba\u015far\u0131yla ula\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in OpenSearch Dashboards&#8217;u kullanaca\u011f\u0131z.<\/p>\n<p>1.  <strong>OpenSearch Dashboards&#8217;a Eri\u015fim:<\/strong><br \/>\n    DigitalOcean kontrol panelinden OpenSearch k\u00fcmenizin &#8220;Overview&#8221; sayfas\u0131na gidin. &#8220;OpenSearch Dashboards&#8221; ba\u011flant\u0131s\u0131na t\u0131klay\u0131n. <code>doadmin<\/code> kullan\u0131c\u0131 ad\u0131 ve OpenSearch k\u00fcmenizin parolas\u0131 ile giri\u015f yap\u0131n.<br \/>\n2.  <strong>Index Pattern Olu\u015fturma:<\/strong><br \/>\n    OpenSearch Dashboards&#8217;a ilk kez giri\u015f yapt\u0131\u011f\u0131n\u0131zda veya yeni bir indeks t\u00fcr\u00fc ekledi\u011finizde, bir indeks deseni (index pattern) olu\u015fturman\u0131z gerekir.<br \/>\n    *   Sol men\u00fcden &#8220;Stack Management&#8221; -> &#8220;Index Patterns&#8221; -> &#8220;Create index pattern&#8221; yolunu izleyin.<br \/>\n    <em>   &#8220;Index pattern name&#8221; alan\u0131na <code>app-logs-<\/em><\/code> yaz\u0131n (Fluent Bit yap\u0131land\u0131rmam\u0131zdaki <code>app-logs-${DATE:%Y.%m.%d}<\/code> ile e\u015fle\u015fmesi i\u00e7in). &#8220;Next step&#8221;e t\u0131klay\u0131n.<br \/>\n    *   &#8220;Time field&#8221; olarak <code>@timestamp<\/code> alan\u0131n\u0131 se\u00e7in (Fluent Bit veya App Platform loglar\u0131 taraf\u0131ndan eklenen zaman damgas\u0131 alan\u0131). &#8220;Create index pattern&#8221;e t\u0131klay\u0131n.<br \/>\n3.  <strong>Loglar\u0131 Ke\u015ffetme (Discover):<\/strong><br \/>\n    Sol men\u00fcden &#8220;Discover&#8221; sekmesine t\u0131klay\u0131n.<br \/>\n    *   E\u011fer loglar ba\u015far\u0131yla geliyorsa, burada App Platform loglar\u0131n\u0131z\u0131 g\u00f6receksiniz.<br \/>\n    *   Zaman aral\u0131\u011f\u0131n\u0131 (sa\u011f \u00fcst k\u00f6\u015fede) &#8220;Last 15 minutes&#8221; veya &#8220;Last 1 hour&#8221; gibi uygun bir de\u011fere ayarlay\u0131n.<br \/>\n    *   Log alanlar\u0131n\u0131 geni\u015fleterek i\u00e7eri\u011fini inceleyebilirsiniz.<br \/>\n    *   Basit sorgular (<code>level: error<\/code>, <code>message: \"failed to connect\"<\/code>) \u00e7al\u0131\u015ft\u0131rarak loglar\u0131 filtreleyebilirsiniz.<\/p>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, DigitalOcean App Platform loglar\u0131n\u0131z DigitalOcean Y\u00f6netilen OpenSearch k\u00fcmenize ger\u00e7ek zamanl\u0131 olarak akmaya ba\u015flayacakt\u0131r.<\/p>\n<h2>Geli\u015fmi\u015f Yap\u0131land\u0131rmalar ve En \u0130yi Uygulamalar<\/h2>\n<p>Log y\u00f6netimi altyap\u0131n\u0131z\u0131n g\u00fcvenli\u011fini, performans\u0131n\u0131 ve dayan\u0131kl\u0131l\u0131\u011f\u0131n\u0131 art\u0131rmak i\u00e7in baz\u0131 geli\u015fmi\u015f yap\u0131land\u0131rmalar ve en iyi uygulamalar mevcuttur.<\/p>\n<h3>Log G\u00fcvenli\u011fi<\/h3>\n<p>1.  <strong>TLS\/SSL \u015eifrelemesi:<\/strong> Fluent Bit ile OpenSearch aras\u0131ndaki t\u00fcm ileti\u015fim TLS\/SSL ile \u015fifrelenmelidir. Yukar\u0131daki \u00f6rnekte <code>TLS On<\/code> ve <code>TLS.Verify On<\/code> ile bu zaten etkinle\u015ftirilmi\u015ftir.<br \/>\n2.  <strong>OpenSearch&#8217;te Kullan\u0131c\u0131 ve Rol Y\u00f6netimi (RBAC):<\/strong> <code>doadmin<\/code> kullan\u0131c\u0131s\u0131 y\u00f6netici yetkilerine sahiptir. \u00dcretim ortamlar\u0131nda, OpenSearch Dashboards&#8217;a eri\u015fen veya loglar\u0131 sorgulayan farkl\u0131 ekipler i\u00e7in daha k\u0131s\u0131tl\u0131 yetkilere sahip kullan\u0131c\u0131lar ve roller olu\u015fturulmal\u0131d\u0131r.<br \/>\n3.  <strong>Log Forwarder Droplet G\u00fcvenlik Duvar\u0131:<\/strong> Droplet&#8217;inizin g\u00fcvenlik duvar\u0131 (DigitalOcean Cloud Firewalls veya <code>ufw<\/code>) kurallar\u0131n\u0131 yap\u0131land\u0131rarak sadece SSH eri\u015fimine ve OpenSearch k\u00fcmesine giden trafi\u011fe izin verin. Gelen t\u00fcm di\u011fer portlar\u0131 kapat\u0131n. OpenSearch k\u00fcmenizin g\u00fcvenlik duvar\u0131 kurallar\u0131nda da sadece Log Forwarder Droplet&#8217;inizin IP adresine izin verdi\u011finizden emin olun.<br \/>\n4.  <strong>Hassas Veri Maskeleme\/Redaksiyonu:<\/strong> Loglarda kredi kart\u0131 numaralar\u0131, ki\u015fisel kimlik bilgileri (PII) veya parolalar gibi hassas veriler bulunuyorsa, Fluent Bit&#8217;in <code>rewrite_tag<\/code> veya <code>grep<\/code> filtrelerini kullanarak bu verileri OpenSearch&#8217;e g\u00f6ndermeden \u00f6nce maskeleyebilir veya tamamen kald\u0131rabilirsiniz. \u00d6rne\u011fin, regex tabanl\u0131 bir filtre ile belirli desenleri bulup de\u011fi\u015ftirebilirsiniz.<\/p>\n<h3>Performans ve \u00d6l\u00e7eklenebilirlik<\/h3>\n<p>1.  <strong>Fluent Bit Kaynak T\u00fcketimi Optimizasyonu:<\/strong><br \/>\n    *   <code>Mem_Buf_Limit<\/code>: Her bir giri\u015f eklentisi i\u00e7in bellek tamponu boyutunu ayarlar. \u00c7ok b\u00fcy\u00fck log hacimleri i\u00e7in bunu art\u0131rman\u0131z gerekebilir.<br \/>\n    *   <code>Flush<\/code>: Loglar\u0131n ne s\u0131kl\u0131kta OpenSearch&#8217;e g\u00f6nderilece\u011fini ayarlar. Daha b\u00fcy\u00fck bir <code>Flush<\/code> de\u011feri, daha az a\u011f iste\u011fi ancak daha y\u00fcksek gecikme anlam\u0131na gelir. Dengeyi bulmak \u00f6nemlidir.<br \/>\n2.  <strong>Disk Tamponlama (Disk Buffering):<\/strong> Fluent Bit&#8217;in <code>Storage_Path<\/code> ayar\u0131n\u0131 kullanarak disk tamponlamay\u0131 etkinle\u015ftirin. Bu, a\u011f kesintileri veya OpenSearch k\u00fcmesinin ge\u00e7ici olarak eri\u015filemez olmas\u0131 durumunda log kayb\u0131n\u0131 \u00f6nler. Loglar \u00f6nce diske yaz\u0131l\u0131r, ard\u0131ndan OpenSearch&#8217;e g\u00f6nderilir.<\/p>\n<pre><code class=\"language-ini\">[SERVICE]\n        # ...\n        Storage_Path \/var\/log\/flb-storage\/\n        Storage.Sync normal # veya full<\/code><\/pre>\n<p>3.  <strong>Birden Fazla Log Forwarder Droplet:<\/strong> \u00c7ok y\u00fcksek hacimli loglar\u0131n\u0131z varsa, tek bir Droplet darbo\u011faz haline gelebilir. Birden fazla Log Forwarder Droplet kullanarak y\u00fck\u00fc da\u011f\u0131tabilirsiniz. Her Droplet ayn\u0131 App Platform uygulamas\u0131n\u0131n loglar\u0131n\u0131 \u00e7ekebilir veya farkl\u0131 uygulamalar\u0131n loglar\u0131n\u0131 \u00e7ekmek \u00fczere yap\u0131land\u0131r\u0131labilir.<br \/>\n4.  <strong>OpenSearch K\u00fcmesi Boyutland\u0131rmas\u0131:<\/strong> Log hacminiz artt\u0131k\u00e7a veya daha uzun s\u00fcre saklama ihtiyac\u0131n\u0131z oldu\u011funda, OpenSearch k\u00fcmenizi \u00f6l\u00e7eklendirmeniz gerekebilir. DigitalOcean kontrol paneli \u00fczerinden d\u00fc\u011f\u00fcm say\u0131s\u0131n\u0131, RAM&#8217;i ve depolama alan\u0131n\u0131 kolayca art\u0131rabilirsiniz. Log hacminizi ve sorgu y\u00fck\u00fcn\u00fcz\u00fc d\u00fczenli olarak izleyerek uygun boyutland\u0131rmay\u0131 sa\u011flay\u0131n.<\/p>\n<h3>Hata Y\u00f6netimi ve Dayan\u0131kl\u0131l\u0131k<\/h3>\n<p>1.  <strong>Yeniden Deneme Mekanizmalar\u0131:<\/strong> Fluent Bit&#8217;in dahili yeniden deneme mekanizmalar\u0131, ge\u00e7ici a\u011f sorunlar\u0131nda veya OpenSearch k\u00fcmesinin k\u0131sa s\u00fcreli eri\u015filemezli\u011finde loglar\u0131n kaybolmamas\u0131n\u0131 sa\u011flar. <code>Retry_Limit<\/code> ayar\u0131n\u0131 <code>False<\/code> (sonsuz yeniden deneme) olarak ayarlamak, log kayb\u0131n\u0131 minimize etmek i\u00e7in iyi bir uygulamad\u0131r, ancak bu, birikmi\u015f loglar\u0131n uzun s\u00fcre diski doldurmas\u0131na neden olabilir.<br \/>\n2.  <strong>Logrotate ile <code>doctl<\/code> Log Dosyas\u0131n\u0131 Y\u00f6netme:<\/strong> <code>\/var\/log\/app_platform\/app_logs.log<\/code> dosyas\u0131 zamanla \u00e7ok b\u00fcy\u00fcyebilir. <code>logrotate<\/code> kullanarak bu dosyay\u0131 d\u00fczenli olarak d\u00f6nd\u00fcrebilir, s\u0131k\u0131\u015ft\u0131rabilir ve eski loglar\u0131 silebilirsiniz. Fluent Bit, <code>tail<\/code> eklentisi sayesinde logrotate taraf\u0131ndan d\u00f6nd\u00fcr\u00fclen dosyalar\u0131 sorunsuz bir \u015fekilde takip edebilir.<br \/>\n    \u00d6rnek <code>logrotate<\/code> yap\u0131land\u0131rmas\u0131 (<code>\/etc\/logrotate.d\/do-app-logs<\/code>):<\/p>\n<pre><code class=\"language-\">\/var\/log\/app_platform\/app_logs.log {\n        daily\n        rotate 7\n        compress\n        delaycompress\n        missingok\n        notifempty\n        create 0640 root root\n        postrotate\n            systemctl reload fluent-bit > \/dev\/null 2>&1 || true\n        endscript\n    }<\/code><\/pre>\n<p>    Bu yap\u0131land\u0131rma, log dosyas\u0131n\u0131 g\u00fcnl\u00fck olarak d\u00f6nd\u00fcr\u00fcr, son 7 g\u00fcn\u00fc saklar, s\u0131k\u0131\u015ft\u0131r\u0131r ve Fluent Bit&#8217;i yeniden y\u00fckleyerek yeni dosyay\u0131 takip etmesini sa\u011flar.<br \/>\n3.  <strong>\u0130zleme ve Uyar\u0131lar:<\/strong> Fluent Bit ve <code>do-app-logs.service<\/code> servislerinin durumunu izlemek i\u00e7in Prometheus\/Grafana gibi ara\u00e7lar kullan\u0131n. <code>systemd<\/code> servislerinin ba\u015far\u0131s\u0131z olmas\u0131 veya Fluent Bit&#8217;in hata loglar\u0131 \u00fcretmesi durumunda uyar\u0131lar olu\u015fturun.<\/p>\n<h3>Log Zenginle\u015ftirme<\/h3>\n<p>Fluent Bit&#8217;in filtreleme yeteneklerini kullanarak loglara ek ba\u011flam (context) ekleyebilirsiniz:<\/p>\n<p>*   <strong>Co\u011frafi Konum Bilgisi:<\/strong> Router loglar\u0131ndaki IP adreslerini kullanarak co\u011frafi konum bilgisi (\u00fclke, \u015fehir) ekleyebilirsiniz.<br \/>\n*   <strong>Uygulama Meta Verileri:<\/strong> Uygulama versiyonu, ortam (production, staging), da\u011f\u0131t\u0131m ID&#8217;si gibi bilgileri loglara ekleyerek daha kolay filtreleme ve analiz yapabilirsiniz. Bu bilgiler <code>add<\/code> veya <code>modify<\/code> filtreleri ile eklenebilir.<\/p>\n<h3>Uyar\u0131 ve Bildirimler<\/h3>\n<p>OpenSearch Dashboards&#8217;ta &#8220;Alerting&#8221; \u00f6zelli\u011fini kullanarak belirli ko\u015fullar alt\u0131nda bildirimler olu\u015fturabilirsiniz:<\/p>\n<p>*   <strong>Hata Oranlar\u0131:<\/strong> Belirli bir zaman diliminde <code>level: error<\/code> loglar\u0131n\u0131n say\u0131s\u0131n\u0131n e\u015fi\u011fi a\u015fmas\u0131 durumunda bildirim.<br \/>\n*   <strong>Performans Anomalileri:<\/strong> Router loglar\u0131ndaki yan\u0131t s\u00fcrelerinin anormal derecede artmas\u0131.<br \/>\n*   <strong>G\u00fcvenlik Olaylar\u0131:<\/strong> Ba\u015far\u0131s\u0131z giri\u015f denemeleri veya \u015f\u00fcpheli IP adreslerinden gelen istekler.<br \/>\n*   <strong>Kritik Kelimeler:<\/strong> Loglarda belirli kritik kelimelerin (\u00f6rn: &#8220;denied&#8221;, &#8220;failed to authenticate&#8221;) g\u00f6r\u00fcnmesi.<\/p>\n<p>Bu uyar\u0131lar e-posta, Slack, PagerDuty veya di\u011fer bildirim kanallar\u0131na g\u00f6nderilebilir, b\u00f6ylece operasyonel ekipler sorunlara h\u0131zla m\u00fcdahale edebilir.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>DigitalOcean Uygulama Platformu&#8217;nda \u00e7al\u0131\u015fan uygulamalar\u0131n loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#8217;e g\u00f6ndermek, modern uygulama geli\u015ftirme ve operasyonel s\u00fcre\u00e7ler i\u00e7in vazge\u00e7ilmez bir ad\u0131md\u0131r. Bu entegrasyon, loglar\u0131n merkezi bir konumda toplanmas\u0131n\u0131, depolanmas\u0131n\u0131 ve analiz edilmesini sa\u011flayarak geli\u015ftiricilere ve DevOps ekiplerine paha bi\u00e7ilmez bir g\u00f6r\u00fcn\u00fcrl\u00fck sunar.<\/p>\n<p>Bu makalede \u00f6zetlenen ad\u0131mlar\u0131 takip ederek, App Platform&#8217;dan gelen loglar\u0131 <code>doctl<\/code> ve Fluent Bit arac\u0131l\u0131\u011f\u0131yla g\u00fcvenli ve verimli bir \u015fekilde OpenSearch k\u00fcmenize aktarabilirsiniz. Bu sayede elde edece\u011finiz faydalar \u015funlard\u0131r:<\/p>\n<p>*   <strong>Merkezi Log Y\u00f6netimi:<\/strong> Farkl\u0131 bile\u015fenlerden gelen t\u00fcm loglar\u0131 tek bir yerde toplayarak operasyonel karma\u015f\u0131kl\u0131\u011f\u0131 azalt\u0131rs\u0131n\u0131z.<br \/>\n*   <strong>H\u0131zland\u0131r\u0131lm\u0131\u015f Hata Ay\u0131klama:<\/strong> G\u00fc\u00e7l\u00fc arama ve filtreleme yetenekleri sayesinde sorunlar\u0131n k\u00f6k nedenlerini \u00e7ok daha h\u0131zl\u0131 tespit edebilirsiniz.<br \/>\n*   <strong>Geli\u015fmi\u015f Analiz ve G\u00f6rselle\u015ftirme:<\/strong> OpenSearch Dashboards ile log verilerinden anlaml\u0131 g\u00f6sterge tablolar\u0131 ve grafikler olu\u015fturarak uygulama performans\u0131n\u0131, kullan\u0131c\u0131 davran\u0131\u015flar\u0131n\u0131 ve g\u00fcvenlik e\u011filimlerini izleyebilirsiniz.<br \/>\n*   <strong>Proaktif \u0130zleme ve Uyar\u0131lar:<\/strong> Belirli ko\u015fullar alt\u0131nda otomatik uyar\u0131lar olu\u015fturarak potansiyel sorunlara hen\u00fcz kullan\u0131c\u0131lar etkilenmeden m\u00fcdahale edebilirsiniz.<br \/>\n*   <strong>Operasyonel Verimlilik:<\/strong> Log toplama, i\u015fleme ve depolama s\u00fcre\u00e7lerini otomatikle\u015ftirerek manuel m\u00fcdahale ihtiyac\u0131n\u0131 azalt\u0131rs\u0131n\u0131z.<\/p>\n<p>DigitalOcean&#8217;\u0131n Uygulama Platformu&#8217;nun sundu\u011fu da\u011f\u0131t\u0131m kolayl\u0131\u011f\u0131 ile Y\u00f6netilen OpenSearch&#8217;in g\u00fc\u00e7l\u00fc log analizi yeteneklerini bir araya getirmek, uygulaman\u0131z\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn her a\u015famas\u0131nda daha bilin\u00e7li kararlar alman\u0131za olanak tan\u0131r. Bu entegrasyon, uygulaman\u0131z\u0131n \u00f6l\u00e7eklenmesi ve karma\u015f\u0131kl\u0131\u011f\u0131n\u0131n artmas\u0131yla birlikte operasyonel g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fcz\u00fc koruman\u0131n ve hatta art\u0131rman\u0131n temelini olu\u015fturur. Gelecekte, bu altyap\u0131y\u0131 kullanarak log tabanl\u0131 metrikler olu\u015fturmak, yapay zeka destekli anomali tespiti yapmak veya daha derinlemesine g\u00fcvenlik analizi ger\u00e7ekle\u015ftirmek gibi daha geli\u015fmi\u015f senaryolar\u0131 da kolayca uygulayabilirsiniz. DigitalOcean ekosistemi i\u00e7inde bu t\u00fcr entegrasyonlar, bulut tabanl\u0131 uygulamalar\u0131n\u0131z\u0131n potansiyelini tam olarak ortaya \u00e7\u0131karman\u0131za yard\u0131mc\u0131 olur.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#8217;e G\u00f6nderme\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla geli\u015fen yaz\u0131l\u0131m d\u00fcnyas\u0131n","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":[1401],"tags":[],"class_list":{"0":"post-39549","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-git","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>DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#039;e G\u00f6nderme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\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\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#039;e G\u00f6nderme\" \/>\n<meta property=\"og:description\" content=\"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#039;e G\u00f6nderme Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla geli\u015fen yaz\u0131l\u0131m d\u00fcnyas\u0131n\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-23T17:41:08+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=\"27 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#8217;e G\u00f6nderme\",\"datePublished\":\"2026-02-23T17:41:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/\"},\"wordCount\":4635,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Git\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/\",\"name\":\"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch'e G\u00f6nderme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-23T17:41:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#8217;e G\u00f6nderme\"}]},{\"@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":"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch'e G\u00f6nderme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/","og_locale":"tr_TR","og_type":"article","og_title":"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch'e G\u00f6nderme","og_description":"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch'e G\u00f6nderme Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla geli\u015fen yaz\u0131l\u0131m d\u00fcnyas\u0131n","og_url":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-23T17:41:08+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"27 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#8217;e G\u00f6nderme","datePublished":"2026-02-23T17:41:08+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/"},"wordCount":4635,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Git"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/","url":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/","name":"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch'e G\u00f6nderme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-23T17:41:08+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uygulama-platformu-loglarini-digitalocean-yonetilen-opensearche-gonderme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"DigitalOcean Uygulama Platformu Loglar\u0131n\u0131 DigitalOcean Y\u00f6netilen OpenSearch&#8217;e G\u00f6nderme"}]},{"@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\/39549","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=39549"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39549\/revisions"}],"predecessor-version":[{"id":39550,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39549\/revisions\/39550"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}