{"id":32547,"date":"2025-10-23T05:01:41","date_gmt":"2025-10-23T02:01:41","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/"},"modified":"2025-10-23T05:01:41","modified_gmt":"2025-10-23T02:01:41","slug":"opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/","title":{"rendered":"OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber"},"content":{"rendered":"<div class=\"article-container\">\n<p>Modern yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n performans\u0131 ve sa\u011fl\u0131\u011f\u0131 hakk\u0131nda derinlemesine bilgi sahibi olmak hayati \u00f6nem ta\u015f\u0131r. Ancak t\u00fcm telemetri verilerini toplamak ve analiz etmek, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli sistemlerde, ciddi maliyetler yaratabilir. Bu kapsaml\u0131 rehber, OpenTelemetry sampling stratejilerini kullanarak observability maliyetlerinden nas\u0131l tasarruf edece\u011finizi detayl\u0131ca a\u00e7\u0131klayacakt\u0131r.<\/p>\n<p>Mikroservis mimarileri, bulut tabanl\u0131 \u00e7\u00f6z\u00fcmler ve da\u011f\u0131t\u0131k sistemler giderek daha karma\u015f\u0131k hale geldik\u00e7e, bu sistemlerin g\u00f6zlemlenebilirli\u011fini (observability) sa\u011flamak, uygulama performans\u0131n\u0131 art\u0131rmak ve sorunlar\u0131 h\u0131zl\u0131ca gidermek i\u00e7in kritik bir ihtiya\u00e7 haline gelmi\u015ftir. Observability, loglar, metrikler ve izlemeler (traces) gibi \u00fc\u00e7 temel bile\u015fenle sa\u011flan\u0131r. Ancak bu verilerin \u00fcretimi, transferi, depolanmas\u0131 ve analizi, y\u00fcksek hacimli ortamlarda beklenmedik b\u00fct\u00e7e a\u015f\u0131m\u0131na yol a\u00e7abilir. \u00d6zellikle izleme verileri, her bir iste\u011fin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc ba\u015ftan sona kaydederek \u00e7ok detayl\u0131 bilgiler sundu\u011fu i\u00e7in, en b\u00fcy\u00fck maliyet kalemlerinden biri haline gelme potansiyeline sahiptir. Peki, bu de\u011ferli bilgiyi toplarken c\u00fczdan\u0131m\u0131z\u0131 nas\u0131l koruyabiliriz? \u0130\u015fte bu noktada OpenTelemetry sampling devreye giriyor.<\/p>\n<p>OpenTelemetry, telemetri verisi toplama ve d\u0131\u015fa aktarma konusunda standartla\u015fm\u0131\u015f, sat\u0131c\u0131dan ba\u011f\u0131ms\u0131z bir \u00e7er\u00e7eve sunar. Bu standartlar sayesinde, uygulamalar\u0131n\u0131zdan log, metrik ve izleme verilerini kolayca toplayabilir ve \u00e7e\u015fitli observability platformlar\u0131na g\u00f6nderebilirsiniz. Ancak OpenTelemetry&#8217;nin sa\u011flad\u0131\u011f\u0131 en g\u00fc\u00e7l\u00fc ara\u00e7lardan biri de sampling yani \u00f6rnekleme yetene\u011fidir. Sampling, t\u00fcm izleme verilerini toplamak yerine, belirli kriterlere g\u00f6re yaln\u0131zca en alakal\u0131 veya en \u00f6nemli izlemeleri se\u00e7me s\u00fcrecidir. Bu yakla\u015f\u0131m, hem depolama hem de i\u015fleme maliyetlerini \u00f6nemli \u00f6l\u00e7\u00fcde d\u00fc\u015f\u00fcr\u00fcrken, yine de sisteminizin sa\u011fl\u0131\u011f\u0131 hakk\u0131nda yeterli i\u00e7g\u00f6r\u00fcy\u00fc elde etmenizi sa\u011flar. Bu makalede, OpenTelemetry sampling&#8217;in temel prensiplerinden, farkl\u0131 t\u00fcrlerine, pratik uygulama \u00f6rneklerine ve ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki kullan\u0131m\u0131na kadar her \u015feyi ele alaca\u011f\u0131z. Hedefimiz, hem b\u00fct\u00e7enizden tasarruf etmenize yard\u0131mc\u0131 olmak hem de observability stratejinizi daha ak\u0131ll\u0131 hale getirmektir.<\/p>\n<h2>OpenTelemetry ve \u0130zlemenin Temelleri Nelerdir?<\/h2>\n<p>OpenTelemetry, da\u011f\u0131t\u0131k sistemlerde telemetri verisi (metrikler, loglar ve izlemeler) toplamak i\u00e7in a\u00e7\u0131k kaynakl\u0131 bir standartlar ve ara\u00e7lar koleksiyonudur. Temel amac\u0131, \u00e7e\u015fitli programlama dillerinde ve altyap\u0131larda \u00e7al\u0131\u015fabilen, sat\u0131c\u0131dan ba\u011f\u0131ms\u0131z bir \u00e7er\u00e7eve sunarak geli\u015ftiricilerin observability \u00e7\u00f6z\u00fcmlerini entegre etmesini kolayla\u015ft\u0131rmakt\u0131r. Bir uygulama geli\u015ftirdi\u011finizde, performans\u0131n\u0131, hatalar\u0131n\u0131 ve genel sa\u011fl\u0131\u011f\u0131n\u0131 anlamak i\u00e7in s\u00fcrekli olarak izlemeniz gerekir. \u0130\u015fte bu noktada OpenTelemetry, bu izleme verilerini standart bir formatta toplaman\u0131za ve istedi\u011finiz analiz arac\u0131na g\u00f6ndermenize olanak tan\u0131r. Ger\u00e7ekten de, OpenTelemetry&#8217;nin arkas\u0131ndaki itici g\u00fc\u00e7, farkl\u0131 APM (Uygulama Performans Y\u00f6netimi) veya observability ara\u00e7lar\u0131 aras\u0131nda ge\u00e7i\u015f yaparken yeniden kodlama veya \u00f6zel entegrasyonlar geli\u015ftirme ihtiyac\u0131n\u0131 ortadan kald\u0131rmakt\u0131r. Bu sayede, geli\u015ftiriciler ana i\u015f mant\u0131\u011f\u0131na odaklanabilirken, operasyon ekipleri de daha tutarl\u0131 ve zengin telemetri verilerine eri\u015febilir.<\/p>\n<p>\u0130zleme (Tracing), OpenTelemetry&#8217;nin en g\u00fc\u00e7l\u00fc bile\u015fenlerinden biridir ve \u00f6zellikle da\u011f\u0131t\u0131k sistemlerde bir iste\u011fin birden fazla hizmet \u00fczerinden nas\u0131l ge\u00e7ti\u011fini g\u00f6rselle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. Her bir iste\u011fin ya\u015fam d\u00f6ng\u00fcs\u00fc, bir &#8220;trace&#8221; olarak adland\u0131r\u0131l\u0131r ve bu trace, iste\u011fin ba\u015flang\u0131c\u0131ndan biti\u015fine kadar yapt\u0131\u011f\u0131 her i\u015flemi temsil eden bir dizi &#8220;span&#8221;dan olu\u015fur. \u00d6rne\u011fin, bir web uygulamas\u0131nda kullan\u0131c\u0131 bir d\u00fc\u011fmeye t\u0131klad\u0131\u011f\u0131nda, bu istek \u00f6nce bir \u00f6n u\u00e7 servisine, ard\u0131ndan bir arka u\u00e7 API&#8217;sine ve oradan da bir veritaban\u0131na veya ba\u015fka mikroservislere gidebilir. Her bir hizmetteki her bir i\u015flem (veritaban\u0131 sorgusu, API \u00e7a\u011fr\u0131s\u0131 vb.) bir span olarak kaydedilir. Bu span&#8217;ler, trace ID&#8217;si ile birbirine ba\u011flan\u0131r ve hiyerar\u015fik bir yap\u0131 olu\u015fturarak iste\u011fin hangi a\u015famalarda ne kadar zaman ge\u00e7irdi\u011fini, hangi hatalar\u0131n olu\u015ftu\u011funu ve genel olarak performans darbo\u011fazlar\u0131n\u0131n nerede oldu\u011funu anlamam\u0131z\u0131 sa\u011flar. \u0130zleme verisi, karma\u015f\u0131k sistemlerde hata ay\u0131klama ve performans optimizasyonu i\u00e7in paha bi\u00e7ilmez bir kaynakt\u0131r.<\/p>\n<p>Ancak bu kadar detayl\u0131 bilgi toplaman\u0131n bir bedeli vard\u0131r. \u00d6zellikle y\u00fcksek trafikli uygulamalarda her bir iste\u011fin her bir span&#8217;ini kaydetmek, muazzam miktarda veri \u00fcretimine yol a\u00e7ar. Bu veri hacmi, depolama alan\u0131n\u0131 h\u0131zla t\u00fcketir, veri transferi maliyetlerini art\u0131r\u0131r ve analiz platformlar\u0131nda y\u00fcksek i\u015flem g\u00fcc\u00fc gerektirir. Sonu\u00e7 olarak, observability i\u00e7in ayr\u0131lan b\u00fct\u00e7e kolayca kontrol d\u0131\u015f\u0131na \u00e7\u0131kabilir. \u0130\u015fte tam da bu nedenle OpenTelemetry, bu veri y\u00fck\u00fcn\u00fc y\u00f6netmek ve maliyetleri optimize etmek i\u00e7in g\u00fc\u00e7l\u00fc sampling (\u00f6rnekleme) stratejileri sunar. Sampling, sisteminizin genel sa\u011fl\u0131\u011f\u0131 hakk\u0131nda yeterli i\u00e7g\u00f6r\u00fc sa\u011flamakla birlikte, gereksiz veya d\u00fc\u015f\u00fck de\u011ferli verilerin kaydedilmesini \u00f6nleyerek kaynak t\u00fcketimini azalt\u0131r. Bir sonraki b\u00f6l\u00fcmde, neden sampling yapmam\u0131z gerekti\u011fini ve hangi durumlarda kritik bir ara\u00e7 haline geldi\u011fini daha yak\u0131ndan inceleyece\u011fiz.<\/p>\n<h3>Veri Y\u00fck\u00fcn\u00fc Azaltmak \u0130\u00e7in Neden Sampling Yapmal\u0131y\u0131z?<\/h3>\n<p>Observability, modern uygulama geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olsa da, beraberinde \u00f6nemli bir maliyet y\u00fck\u00fc getirir. \u00d6zellikle izleme (tracing) verileri, sisteminizdeki her bir iste\u011fin her ad\u0131m\u0131n\u0131 detayl\u0131 bir \u015fekilde kaydetti\u011fi i\u00e7in, y\u00fcksek trafikli uygulamalarda h\u0131zla petabaytlarca veriye ula\u015fabilir. Bu durum, veri depolama, transfer ve i\u015fleme maliyetlerini katlayarak art\u0131r\u0131r. AWS CloudWatch, Datadog, New Relic gibi pop\u00fcler observability platformlar\u0131n\u0131n \u00e7o\u011fu, toplad\u0131klar\u0131 veri hacmine g\u00f6re \u00fccretlendirme yapar. Dolay\u0131s\u0131yla, ne kadar \u00e7ok veri g\u00f6nderirseniz, o kadar \u00e7ok \u00f6dersiniz. Veri y\u00fck\u00fcn\u00fc azaltmak, do\u011frudan b\u00fct\u00e7enizden tasarruf etmek anlam\u0131na gelir ve bu noktada sampling, vazge\u00e7ilmez bir strateji haline gelir.<\/p>\n<p>Sampling&#8217;in temel amac\u0131, t\u00fcm veriyi kaydetmek yerine, sisteminiz hakk\u0131nda anlaml\u0131 i\u00e7g\u00f6r\u00fcler sunacak temsili bir veri k\u00fcmesi olu\u015fturmakt\u0131r. Diyelim ki saniyede binlerce istek alan bir e-ticaret siteniz var. Her bir iste\u011fin her bir veritaban\u0131 sorgusunu, her bir API \u00e7a\u011fr\u0131s\u0131n\u0131 kaydetmek teorik olarak m\u00fckemmel g\u00f6r\u00fcnse de, pratik olarak \u00e7o\u011fu zaman a\u015f\u0131r\u0131ya ka\u00e7makt\u0131r. Normal \u00e7al\u0131\u015fan isteklerin b\u00fcy\u00fck bir \u00e7o\u011funlu\u011fu birbirine benzer ve her birini kaydetmek, veri y\u0131\u011f\u0131n\u0131nda tekrara neden olur. Ancak, yava\u015f \u00e7al\u0131\u015fan istekler, hata veren istekler veya belirli i\u015f ak\u0131\u015flar\u0131n\u0131 temsil eden istekler, sistemin sa\u011fl\u0131\u011f\u0131 hakk\u0131nda \u00e7ok daha de\u011ferli bilgiler sunar. Sampling ile tam da bu de\u011ferli izlemeleri yakalamay\u0131 hedefleriz.<\/p>\n<p>Ayr\u0131ca, y\u00fcksek veri hacmi sadece maliyetleri art\u0131rmakla kalmaz, ayn\u0131 zamanda analiz s\u00fcrecini de zorla\u015ft\u0131r\u0131r. \u00c7ok fazla veri oldu\u011funda, \u00f6nemli anomalileri veya performans darbo\u011fazlar\u0131n\u0131 tespit etmek, &#8220;g\u00fcr\u00fclt\u00fc&#8221; i\u00e7inde &#8220;sinyal&#8221; aramak gibi bir hal alabilir. Sampling, bu g\u00fcr\u00fclt\u00fcy\u00fc azaltarak, analistlerin ve geli\u015ftiricilerin daha h\u0131zl\u0131 ve etkili bir \u015fekilde sorunlar\u0131 bulmalar\u0131na yard\u0131mc\u0131 olur. Daha az veriyle \u00e7al\u0131\u015fmak, sorgu s\u00fcrelerini k\u0131salt\u0131r, g\u00f6rselle\u015ftirme panolar\u0131n\u0131n daha h\u0131zl\u0131 y\u00fcklenmesini sa\u011flar ve genel olarak observability ara\u00e7lar\u0131n\u0131n kullan\u0131labilirli\u011fini art\u0131r\u0131r. B\u00f6ylece, hem maliyetlerden tasarruf eder hem de elde etti\u011finiz i\u00e7g\u00f6r\u00fcn\u00fcn kalitesini y\u00fckseltirsiniz.<\/p>\n<p>Son olarak, sampling sadece finansal bir avantaj sa\u011flamakla kalmaz, ayn\u0131 zamanda g\u00fcvenlik ve uyumluluk konular\u0131nda da faydal\u0131 olabilir. Baz\u0131 hassas verilerin izleme kapsam\u0131nda kaydedilmesini istemeyebilirsiniz. Sampling stratejileri ile belirli kriterlere uyan izlemeleri tamamen d\u0131\u015far\u0131da b\u0131rakarak bu t\u00fcr riskleri de azaltabilirsiniz. \u00d6zetle, sampling, veri toplama ve analizi aras\u0131nda ak\u0131ll\u0131 bir denge kurarak, hem b\u00fct\u00e7e dostu hem de etkili bir observability stratejisi olu\u015fturman\u0131n anahtar\u0131d\u0131r. Bu sayede, uygulaman\u0131z\u0131n kritik operasyonel bilgilerini kaybetmeden, veri y\u00fck\u00fcn\u00fc ve dolay\u0131s\u0131yla maliyetleri makul seviyelere \u00e7ekebilirsiniz.<\/p>\n<h2>OpenTelemetry&#8217;de Hangi Sampling Stratejilerini Kullanabiliriz?<\/h2>\n<p>OpenTelemetry, telemetri verisi toplarken hangi izlemelerin (traces) saklanaca\u011f\u0131na ve hangilerinin at\u0131laca\u011f\u0131na karar vermek i\u00e7in \u00e7e\u015fitli \u00f6rnekleme (sampling) stratejileri sunar. Bu stratejiler, farkl\u0131 kullan\u0131m durumlar\u0131na ve maliyet\/g\u00f6r\u00fcn\u00fcrl\u00fck dengesi ihtiya\u00e7lar\u0131na g\u00f6re tasarlanm\u0131\u015ft\u0131r. Do\u011fru sampling stratejisini se\u00e7mek, hem b\u00fct\u00e7enizden tasarruf etmenizi hem de uygulamalar\u0131n\u0131z\u0131n performans\u0131 ve sa\u011fl\u0131\u011f\u0131 hakk\u0131nda yeterli i\u00e7g\u00f6r\u00fcy\u00fc koruman\u0131z\u0131 sa\u011flar. \u0130\u015fte OpenTelemetry&#8217;de s\u0131k\u00e7a kullan\u0131lan sampling stratejileri ve bunlar\u0131n temel prensipleri:<\/p>\n<ol>\n<li><strong>AlwaysOnSampler:<\/strong>\n<ul>\n<li><strong>A\u00e7\u0131klama:<\/strong> Ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, bu \u00f6rnekleyici t\u00fcm izlemeleri kaydeder. Hi\u00e7bir izleme at\u0131lmaz.<\/li>\n<li><strong>Kullan\u0131m Senaryosu:<\/strong> Genellikle geli\u015ftirme ortamlar\u0131nda veya \u00e7ok d\u00fc\u015f\u00fck trafikli, kritik uygulamalarda kullan\u0131l\u0131r. Tam detayland\u0131rma gerekti\u011finde tercih edilir.<\/li>\n<li><strong>Maliyet Etkisi:<\/strong> En y\u00fcksek maliyetli stratejidir \u00e7\u00fcnk\u00fc t\u00fcm veriyi toplar.<\/li>\n<\/ul>\n<\/li>\n<li><strong>AlwaysOffSampler:<\/strong>\n<ul>\n<li><strong>A\u00e7\u0131klama:<\/strong> Bu \u00f6rnekleyici hi\u00e7bir izlemeyi kaydetmez. T\u00fcm izlemeler at\u0131l\u0131r.<\/li>\n<li><strong>Kullan\u0131m Senaryosu:<\/strong> Genellikle test ortamlar\u0131nda veya izlemenin kesinlikle istenmedi\u011fi durumlarda kullan\u0131l\u0131r.<\/li>\n<li><strong>Maliyet Etkisi:<\/strong> En d\u00fc\u015f\u00fck maliyetlidir ancak hi\u00e7bir observability sa\u011flamaz.<\/li>\n<\/ul>\n<\/li>\n<li><strong>TraceIdRatioBasedSampler:<\/strong>\n<ul>\n<li><strong>A\u00e7\u0131klama:<\/strong> Bu \u00f6rnekleyici, bir izlemenin Trace ID&#8217;sine dayanarak belirli bir orana (\u00f6rne\u011fin 0.1 i\u00e7in %10) g\u00f6re izlemeleri rastgele se\u00e7er. Karar, izlemenin ba\u015flang\u0131c\u0131nda verilir.<\/li>\n<li><strong>Kullan\u0131m Senaryosu:<\/strong> En yayg\u0131n kullan\u0131lan \u00f6rnekleyicilerden biridir. Y\u00fcksek trafikli uygulamalarda maliyetleri d\u00fc\u015f\u00fcrmek ve temsili bir veri k\u00fcmesi elde etmek i\u00e7in idealdir.<\/li>\n<li><strong>Maliyet Etkisi:<\/strong> Ayarlanan orana g\u00f6re maliyetleri do\u011frusal olarak d\u00fc\u015f\u00fcr\u00fcr. \u00d6rne\u011fin, %10&#8217;luk bir oran, maliyetleri yakla\u015f\u0131k %90 azalt\u0131r.<\/li>\n<\/ul>\n<\/li>\n<li><strong>ParentBased Sampler:<\/strong>\n<ul>\n<li><strong>A\u00e7\u0131klama:<\/strong> Bu \u00f6rnekleyici, mevcut izlemenin \u00fcst (parent) span&#8217;inin \u00f6rnekleme karar\u0131n\u0131 miras al\u0131r. E\u011fer bir \u00fcst span varsa ve o span \u00f6rneklenmi\u015fse, mevcut span de \u00f6rneklenir. E\u011fer yoksa (yani yeni bir trace ba\u015fl\u0131yorsa), bir yedek \u00f6rnekleyici (fallback sampler) kullan\u0131l\u0131r. Genellikle <code>TraceIdRatioBasedSampler<\/code> ile birlikte kullan\u0131l\u0131r.<\/li>\n<li><strong>Kullan\u0131m Senaryosu:<\/strong> Da\u011f\u0131t\u0131k sistemlerde izlemelerin b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korumak i\u00e7in \u00f6nemlidir. Bir trace&#8217;in ba\u015flang\u0131c\u0131nda verilen \u00f6rnekleme karar\u0131n\u0131n t\u00fcm trace boyunca ge\u00e7erli olmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Maliyet Etkisi:<\/strong> Yedek \u00f6rnekleyicinin maliyet etkisine benzer, ancak trace b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korudu\u011fu i\u00e7in daha tutarl\u0131 veri sa\u011flar.<\/li>\n<\/ul>\n<\/li>\n<li><strong>RateLimitingSampler:<\/strong>\n<ul>\n<li><strong>A\u00e7\u0131klama:<\/strong> Bu \u00f6rnekleyici, belirli bir saniyede \u00f6rneklenen izleme say\u0131s\u0131n\u0131 s\u0131n\u0131rlar. \u00d6rne\u011fin, saniyede en fazla 100 trace \u00f6rneklenebilir.<\/li>\n<li><strong>Kullan\u0131m Senaryosu:<\/strong> Ani trafik art\u0131\u015flar\u0131nda veya DoS sald\u0131r\u0131lar\u0131 gibi durumlarda maliyetlerin kontrol d\u0131\u015f\u0131na \u00e7\u0131kmas\u0131n\u0131 \u00f6nlemek i\u00e7in bir g\u00fcvenlik a\u011f\u0131 sa\u011flar.<\/li>\n<li><strong>Maliyet Etkisi:<\/strong> Maksimum bir maliyet s\u0131n\u0131r\u0131 belirlemenizi sa\u011flar.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Bu stratejilerin \u00f6tesinde, OpenTelemetry&#8217;de iki ana \u00f6rnekleme yakla\u015f\u0131m\u0131 vard\u0131r: Head Sampling ve Tail Sampling. Bu yakla\u015f\u0131mlar, \u00f6rnekleme karar\u0131n\u0131n ne zaman verildi\u011fine g\u00f6re ayr\u0131l\u0131r ve her birinin kendine \u00f6zg\u00fc avantajlar\u0131 ve dezavantajlar\u0131 bulunur.<\/p>\n<ul>\n<li><strong>Head Sampling (\u00d6n-\u00d6rnekleme):<\/strong>\n<ul>\n<li><strong>A\u00e7\u0131klama:<\/strong> \u00d6rnekleme karar\u0131, bir izlemenin ba\u015flang\u0131c\u0131nda (trace&#8217;in ilk span&#8217;i olu\u015fturuldu\u011funda) verilir. Bu, uygulaman\u0131n kendisi veya ilk hizmet taraf\u0131ndan yap\u0131l\u0131r.<\/li>\n<li><strong>Avantajlar\u0131:<\/strong> Uygulama d\u00fczeyinde basitlik, kaynak t\u00fcketiminin erken azalt\u0131lmas\u0131, toplay\u0131c\u0131 (collector) \u00fczerindeki y\u00fck\u00fcn hafifletilmesi.<\/li>\n<li><strong>Dezavantajlar\u0131:<\/strong> \u0130zleme hakk\u0131nda hen\u00fcz yeterli bilgi olmad\u0131\u011f\u0131ndan (hata durumu, s\u00fcre gibi), ak\u0131ll\u0131 kararlar vermek zordur. \u00d6nemli izlemeler atlanabilir.<\/li>\n<li><strong>\u00d6rnek Sampler&#8217;lar:<\/strong> <code>AlwaysOnSampler<\/code>, <code>AlwaysOffSampler<\/code>, <code>TraceIdRatioBasedSampler<\/code>, <code>ParentBasedSampler<\/code>.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Tail Sampling (Son-\u00d6rnekleme):<\/strong>\n<ul>\n<li><strong>A\u00e7\u0131klama:<\/strong> \u00d6rnekleme karar\u0131, bir izleme tamamland\u0131ktan sonra, genellikle bir OpenTelemetry Collector veya ara bir servis taraf\u0131ndan verilir. Bu, t\u00fcm span&#8217;lerin toplan\u0131p analiz edildikten sonra en anlaml\u0131 olanlar\u0131n se\u00e7ilmesine olanak tan\u0131r.<\/li>\n<li><strong>Avantajlar\u0131:<\/strong> Daha ak\u0131ll\u0131 \u00f6rnekleme kararlar\u0131 (\u00f6rne\u011fin, hata i\u00e7eren t\u00fcm izlemeleri kaydet, belirli bir s\u00fcreden uzun s\u00fcren izlemeleri kaydet, belirli bir kullan\u0131c\u0131 grubuna ait izlemeleri kaydet). Bu sayede, sorunlu izlemelerin ka\u00e7\u0131r\u0131lma olas\u0131l\u0131\u011f\u0131 azal\u0131r.<\/li>\n<li><strong>Dezavantajlar\u0131:<\/strong> T\u00fcm izleme verisinin bir ara noktada (collector) toplanmas\u0131 ve ge\u00e7ici olarak depolanmas\u0131 gerekti\u011finden, daha fazla kaynak (CPU, bellek) gerektirir. Daha y\u00fcksek gecikme (latency) s\u00f6z konusu olabilir.<\/li>\n<li><strong>\u00d6rnek Sampler&#8217;lar:<\/strong> Genellikle OpenTelemetry Collector i\u00e7inde \u00f6zel i\u015flemciler (processors) kullan\u0131larak uygulan\u0131r.<\/li>\n<\/ul>\n<\/ul>\n<p>Bu farkl\u0131 sampling stratejilerini ve yakla\u015f\u0131mlar\u0131n\u0131 anlamak, uygulaman\u0131z\u0131n ihtiya\u00e7lar\u0131na en uygun dengeyi bulman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Genellikle, head sampling, geni\u015f bir g\u00f6r\u00fcn\u00fcrl\u00fck sa\u011flamak ve maliyetleri d\u00fc\u015f\u00fcrmek i\u00e7in bir ba\u015flang\u0131\u00e7 noktas\u0131 olarak kullan\u0131l\u0131rken, tail sampling, daha hedeflenmi\u015f ve ak\u0131ll\u0131 izleme i\u00e7in tercih edilir. Her iki yakla\u015f\u0131m\u0131n da kendi g\u00fc\u00e7l\u00fc y\u00f6nleri ve kullan\u0131m alanlar\u0131 vard\u0131r ve \u00e7o\u011fu zaman, en iyi sonu\u00e7lar i\u00e7in bu stratejilerin bir kombinasyonu kullan\u0131l\u0131r.<\/p>\n<h3>Head Sampling ile Maliyetleri Nas\u0131l Kontrol Alt\u0131na Al\u0131r\u0131z?<\/h3>\n<p>Head sampling, OpenTelemetry&#8217;deki en basit ve do\u011frudan maliyet azaltma stratejilerinden biridir. Temel prensibi, bir izlemenin (trace) daha en ba\u015fta, yani uygulaman\u0131n kendisinde veya ilk hizmete ula\u015ft\u0131\u011f\u0131 anda \u00f6rneklenip \u00f6rneklenmeyece\u011fine karar vermektir. Bu karar, Trace ID gibi \u00f6nceden bilinen bilgilere veya basit bir orana dayan\u0131r. Bu yakla\u015f\u0131m, gereksiz verilerin sisteminize girmesini ve i\u015flenmesini engelleyerek \u00f6nemli \u00f6l\u00e7\u00fcde kaynak tasarrufu sa\u011flar.<\/p>\n<p>Head sampling&#8217;in en b\u00fcy\u00fck avantaj\u0131, veri y\u00fck\u00fcn\u00fc erken a\u015famada azaltmas\u0131d\u0131r. Bir trace, ilk span&#8217;i olu\u015fturuldu\u011funda \u00f6rneklenmemeye karar verilirse, bu trace&#8217;e ait sonraki hi\u00e7bir span olu\u015fturulmaz, toplanmaz veya d\u0131\u015fa aktar\u0131lmaz. Bu, hem uygulaman\u0131n kendisindeki i\u015flem y\u00fck\u00fcn\u00fc (span olu\u015fturma, ba\u011flam yayma) hem de OpenTelemetry Collector&#8217;lara ve son olarak da arka u\u00e7 observability platformlar\u0131na g\u00f6nderilen veri hacmini do\u011frudan azalt\u0131r. \u00d6zellikle y\u00fcksek trafikli uygulamalarda, bu durum bant geni\u015fli\u011fi, depolama ve i\u015fleme maliyetlerinde dramatik d\u00fc\u015f\u00fc\u015fler sa\u011flayabilir. \u00d6rne\u011fin, bir web uygulamas\u0131n\u0131n milyarlarca iste\u011fi i\u015fledi\u011fi bir senaryoda, %1&#8217;lik bir \u00f6rnekleme oran\u0131yla \u00e7al\u0131\u015fmak, veri hacmini %99 oran\u0131nda azalt\u0131r ve bu da do\u011frudan b\u00fct\u00e7enizde b\u00fcy\u00fck bir fark yarat\u0131r.<\/p>\n<p><strong>Uygulama \u00d6rne\u011fi: Python ile TraceIdRatioBasedSampler<\/strong><\/p>\n<p>Head sampling genellikle uygulaman\u0131z\u0131n OpenTelemetry SDK&#8217;s\u0131nda yap\u0131land\u0131r\u0131l\u0131r. En s\u0131k kullan\u0131lan head sampling stratejilerinden biri <code>TraceIdRatioBasedSampler<\/code>&#8216;d\u0131r. Bu \u00f6rnekleyici, bir izlemenin Trace ID&#8217;sini kullanarak belirli bir orana g\u00f6re \u00f6rnekleme yapar. A\u015fa\u011f\u0131da, Python&#8217;da bu \u00f6rnekleyicinin nas\u0131l yap\u0131land\u0131r\u0131laca\u011f\u0131na dair bir \u00f6rnek verilmi\u015ftir:<\/p>\n<pre><code class=\"language-python\">\nfrom opentelemetry import trace\nfrom opentelemetry.sdk.resources import Resource\nfrom opentelemetry.sdk.trace import TracerProvider\nfrom opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor\nfrom opentelemetry.sdk.trace.sampling import TraceIdRatioBasedSampler\n\n# Kaynak (Resource) bilgilerini tan\u0131mla\nresource = Resource.create({\n    \"service.name\": \"my-python-app\",\n    \"application.version\": \"1.0.0\"\n})\n\n# TraceIdRatioBasedSampler ile \u00f6rnekleme oran\u0131n\u0131 belirle (\u00f6rn: %10)\n# E\u011fer 0.1 olarak ayarlan\u0131rsa, 10 trace'ten yakla\u015f\u0131k 1'i \u00f6rneklenir.\nsampler = TraceIdRatioBasedSampler(0.1)\n\n# TracerProvider'\u0131 ba\u015flat ve sampler'\u0131 ata\nprovider = TracerProvider(\n    resource=resource,\n    sampler=sampler\n)\ntrace.set_tracer_provider(provider)\n\n# Span i\u015flemcisini ve d\u0131\u015fa aktar\u0131c\u0131y\u0131 ayarla (\u00f6rne\u011fin konsola yazd\u0131rma)\nspan_processor = SimpleSpanProcessor(ConsoleSpanExporter())\nprovider.add_span_processor(span_processor)\n\n# Tracer'\u0131 al\ntracer = trace.get_tracer(\"my-app-tracer\")\n\ndef my_function():\n    with tracer.start_as_current_span(\"my_function_span\"):\n        print(\"Hello from my_function!\")\n        # \u0130\u015flemler...\n\nif __name__ == \"__main__\":\n    for i in range(20):\n        print(f\"\u0130stek {i+1} ba\u015flat\u0131l\u0131yor...\")\n        my_function()\n        print(f\"\u0130stek {i+1} tamamland\u0131.\")\n\n# \u00d6rnek: console.log(\"Modern Kod \u00d6rne\u011fi\");\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod blo\u011funda, <code>TraceIdRatioBasedSampler(0.1)<\/code> ile \u00f6rnekleme oran\u0131 %10 olarak ayarlanm\u0131\u015ft\u0131r. Bu, her 10 izlemeden yakla\u015f\u0131k birinin OpenTelemetry taraf\u0131ndan toplanaca\u011f\u0131 ve d\u0131\u015fa aktar\u0131laca\u011f\u0131 anlam\u0131na gelir. Geri kalan %90'l\u0131k k\u0131s\u0131m ise daha ba\u015flang\u0131\u00e7ta at\u0131lacak, bu da hem i\u015flem g\u00fcc\u00fcnden hem de bant geni\u015fli\u011finden tasarruf sa\u011flayacakt\u0131r.<\/p>\n<p><aside class=\"expert-tip\">\n            Uzman \u0130pucu: Head sampling'de ideal \u00f6rnekleme oran\u0131n\u0131 bulmak, uygulaman\u0131z\u0131n trafik hacmine, hata oran\u0131na ve kritiklik seviyesine ba\u011fl\u0131d\u0131r. Genellikle %1 ile %10 aras\u0131nda bir oranla ba\u015flan\u0131r ve observability platformunuzdaki verileri inceleyerek ince ayar yap\u0131l\u0131r. Ama\u00e7, yeterli i\u00e7g\u00f6r\u00fc sa\u011flarken maliyetleri minimumda tutmakt\u0131r.<br \/>\n        <\/aside>\n<\/p>\n<p>Head sampling'in dezavantaj\u0131, \u00f6rnekleme karar\u0131n\u0131n izlemenin ba\u015flar\u0131nda verilmesidir. Bu a\u015famada, izlemenin sonunda bir hata olu\u015fup olu\u015fmayaca\u011f\u0131n\u0131 veya ne kadar s\u00fcrece\u011fini bilemeyiz. Dolay\u0131s\u0131yla, kritik bir hata i\u00e7eren veya a\u015f\u0131r\u0131 yava\u015f \u00e7al\u0131\u015fan bir izlemenin, rastgele \u00f6rnekleme sonucu at\u0131lma riski bulunur. Bu durum, \u00f6zellikle \"canary\" da\u011f\u0131t\u0131mlar veya yeni \u00f6zelliklerin test edildi\u011fi senaryolarda sorun yaratabilir. Ancak, genel sistem sa\u011fl\u0131\u011f\u0131n\u0131 izlemek ve temel performans metriklerini toplamak i\u00e7in head sampling olduk\u00e7a etkilidir. Kritik veya ak\u0131ll\u0131 \u00f6rnekleme kararlar\u0131n\u0131n gerekli oldu\u011fu durumlar i\u00e7in ise tail sampling gibi daha sofistike yakla\u015f\u0131mlara ihtiya\u00e7 duyar\u0131z.<\/p>\n<h3>Tail Sampling ile Daha Kapsaml\u0131 ve Ak\u0131ll\u0131 \u0130zleme Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>Head sampling, maliyetleri etkin bir \u015fekilde azalt\u0131r, ancak izlemenin ba\u015flar\u0131nda karar verildi\u011fi i\u00e7in, sonunda olu\u015fabilecek kritik hatalar\u0131 veya performans sorunlar\u0131n\u0131 g\u00f6zden ka\u00e7\u0131rma riski ta\u015f\u0131r. \u0130\u015fte bu noktada tail sampling (son \u00f6rnekleme) devreye girer. Tail sampling, \u00f6rnekleme karar\u0131n\u0131 izleme tamamland\u0131ktan sonra, yani t\u00fcm span'ler topland\u0131ktan sonra veren daha ak\u0131ll\u0131 bir stratejidir. Bu sayede, izlemenin t\u00fcm i\u00e7eri\u011fi de\u011ferlendirilerek daha bilin\u00e7li bir karar verilebilir ve en de\u011ferli izlemelerin ka\u00e7\u0131r\u0131lma olas\u0131l\u0131\u011f\u0131 minimuma iner.<\/p>\n<p>Tail sampling genellikle OpenTelemetry Collector gibi ara bir bile\u015fen \u00fczerinde uygulan\u0131r. Uygulaman\u0131z, t\u00fcm izleme verilerini (\u00f6rnekleme yapmadan veya sadece \u00e7ok temel head sampling ile) OpenTelemetry Collector'a g\u00f6nderir. Collector, gelen t\u00fcm span'leri ge\u00e7ici olarak bellekte veya diskte depolar ve bir izleme tamamland\u0131\u011f\u0131nda (yani t\u00fcm beklenen span'ler geldi\u011finde veya belirli bir zaman a\u015f\u0131m\u0131 s\u00fcresi ge\u00e7ti\u011finde), bu izlemenin tamam\u0131n\u0131 analiz eder. Bu analiz sonucunda, belirli kriterlere g\u00f6re izlemenin saklan\u0131p saklanmayaca\u011f\u0131na karar verilir. Bu kriterler \u015funlar olabilir:<\/p>\n<ul>\n<li>Hata i\u00e7eren t\u00fcm izlemeleri kaydet.<\/li>\n<li>Belirli bir s\u00fcreden (\u00f6rne\u011fin 5 saniye) daha uzun s\u00fcren t\u00fcm izlemeleri kaydet.<\/li>\n<li>Belirli bir kullan\u0131c\u0131 ID'si veya i\u015flem tipi i\u00e7eren izlemeleri kaydet.<\/li>\n<li>Belirli bir HTTP durum koduyla (\u00f6rne\u011fin 5xx hatalar\u0131) biten izlemeleri kaydet.<\/li>\n<\/ul>\n<p>Bu ak\u0131ll\u0131 kararlar sayesinde, \"ihtiya\u00e7 duydu\u011funuz\" veriyi daha y\u00fcksek bir g\u00fcvenilirlikle toplarken, \"gereksiz\" veriyi atm\u0131\u015f olursunuz. Tail sampling'in en \u00f6nemli avantaj\u0131, problem \u00e7\u00f6zme ve hata ay\u0131klama s\u00fcre\u00e7lerinde kritik olan izlemeleri ka\u00e7\u0131rmama yetene\u011fidir. Performans d\u00fc\u015f\u00fc\u015fleri veya hata durumlar\u0131 gibi anormallikler ortaya \u00e7\u0131kt\u0131\u011f\u0131nda, bu izlemelerin tamam\u0131n\u0131n elimizde olmas\u0131, k\u00f6k neden analizi i\u00e7in paha bi\u00e7ilmezdir.<\/p>\n<p><strong>Uygulama \u00d6rne\u011fi: OpenTelemetry Collector ile Tail Sampling<\/strong><\/p>\n<p>Tail sampling'i uygulamak i\u00e7in, OpenTelemetry Collector'\u0131n yap\u0131land\u0131rmas\u0131na bir <code>tail_sampling<\/code> i\u015flemcisi eklemeniz gerekir. A\u015fa\u011f\u0131da, \u00f6rnek bir OpenTelemetry Collector yap\u0131land\u0131rmas\u0131 bulunmaktad\u0131r:<\/p>\n<pre><code class=\"language-yaml\">\nreceivers:\n  otlp:\n    protocols:\n      grpc:\n      http:\n\nprocessors:\n  batch:\n    send_batch_size: 1000\n    timeout: 10s\n  tail_sampling:\n    # Belirli bir izleme i\u00e7in t\u00fcm span'lerin gelmesini bekleyece\u011fimiz maksimum s\u00fcre\n    decision_wait: 10s\n    # Ayn\u0131 anda i\u015flenecek maksimum trace say\u0131s\u0131\n    num_traces: 100000\n    # \u00d6rnekleme politikalar\u0131\n    policies:\n      - name: always-sample-errors\n        type: status_code\n        status_code: [ ERROR ]\n      - name: sample-slow-traces\n        type: latency\n        latency: 5s # 5 saniyeden uzun s\u00fcren t\u00fcm izlemeleri \u00f6rnekle\n      - name: default-sampling-ratio\n        type: probabilistic\n        sampling_percentage: 1 # %1 ihtimalle rastgele \u00f6rnekle (hatas\u0131z ve yava\u015f olmayanlar i\u00e7in)\n\nexporters:\n  otlp:\n    endpoint: \"your-apm-provider-endpoint:4317\"\n    headers:\n      \"api-key\": \"YOUR_API_KEY\"\n\nservice:\n  pipelines:\n    traces:\n      receivers: [otlp]\n      processors: [batch, tail_sampling]\n      exporters: [otlp]\n<\/pre>\n<p><\/code><\/p>\n<p>Bu yap\u0131land\u0131rmada:<\/p>\n<ul>\n<li><code>decision_wait<\/code>: Collector'\u0131n bir izleme i\u00e7in t\u00fcm span'lerin gelmesini bekleyece\u011fi s\u00fcreyi belirtir. Bu s\u00fcre doldu\u011funda, \u00f6rnekleme karar\u0131 verilir.<\/li>\n<li><code>num_traces<\/code>: Bellekte tutulacak maksimum izleme say\u0131s\u0131n\u0131 belirler.<\/li>\n<li><code>policies<\/code>: \u00d6rnekleme karar\u0131 vermek i\u00e7in kullan\u0131lan kurallar\u0131 tan\u0131mlar.\n<ul>\n<li><code>always-sample-errors<\/code>: Hata (ERROR) i\u00e7eren t\u00fcm izlemelerin \u00f6rneklenmesini sa\u011flar.<\/li>\n<li><code>sample-slow-traces<\/code>: 5 saniyeden uzun s\u00fcren t\u00fcm izlemelerin \u00f6rneklenmesini sa\u011flar.<\/li>\n<li><code>default-sampling-ratio<\/code>: Yukar\u0131daki ko\u015fullar\u0131 sa\u011flamayan izlemeler i\u00e7in %1'lik bir olas\u0131l\u0131kla rastgele \u00f6rnekleme yapar.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>Vaka Analizi: E-ticaret Sitesi \u00d6rne\u011fi<\/h4>\n<p>Bir e-ticaret sitesi, Black Friday gibi y\u00fcksek trafik d\u00f6nemlerinde performans sorunlar\u0131 ya\u015f\u0131yor ancak bu sorunlar\u0131n k\u00f6k nedenlerini bulmakta zorlan\u0131yordu. Ba\u015flang\u0131\u00e7ta t\u00fcm izlemeleri kaydediyorlard\u0131, ancak bu durum APM maliyetlerini kontrol edilemez hale getirmi\u015fti. Head sampling uygulad\u0131klar\u0131nda ise, rastgele at\u0131lan izlemeler aras\u0131nda kritik yava\u015flama veya hata durumlar\u0131n\u0131n bulunmas\u0131ndan endi\u015feleniyorlard\u0131.<\/p>\n<p>\u00c7\u00f6z\u00fcm olarak tail sampling'e ge\u00e7tiler. OpenTelemetry Collector'lar\u0131n\u0131 a\u015fa\u011f\u0131daki politikalarla yap\u0131land\u0131rd\u0131lar:<\/p>\n<ul>\n<li>Kritik \u00f6deme ad\u0131mlar\u0131nda olu\u015fan t\u00fcm hatalar\u0131 kaydedin.<\/li>\n<li>Sepete ekleme, \u00f6deme ve sipari\u015f tamamlama gibi kritik i\u015f ak\u0131\u015flar\u0131nda 2 saniyeden uzun s\u00fcren t\u00fcm izlemeleri kaydedin.<\/li>\n<li>Di\u011fer t\u00fcm izlemeler i\u00e7in %0.5'lik bir olas\u0131l\u0131kla rastgele \u00f6rnekleme yap\u0131n.<\/li>\n<\/ul>\n<p>Bu strateji sayesinde, e-ticaret sitesi normal i\u015fleyi\u015fteki rutin izlemelerin b\u00fcy\u00fck \u00e7o\u011funlu\u011funu atmay\u0131 ba\u015far\u0131rken, kritik i\u015f ak\u0131\u015flar\u0131ndaki performans sorunlar\u0131 ve hatalar\u0131n %100'\u00fcn\u00fc yakalayabildi. Sonu\u00e7 olarak, observability maliyetlerini %70 oran\u0131nda azaltt\u0131lar ve e\u015f zamanl\u0131 olarak sorun giderme s\u00fcrelerini %40 k\u0131saltt\u0131lar \u00e7\u00fcnk\u00fc art\u0131k sadece ger\u00e7ekten \u00f6nemli olan verilere odaklanabiliyorlard\u0131. Bu yakla\u015f\u0131m, sadece b\u00fct\u00e7e dostu olmakla kalmad\u0131, ayn\u0131 zamanda operasyonel verimlili\u011fi de \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rd\u0131.<\/p>\n<p><aside class=\"expert-tip\">\n            Uzman \u0130pucu: Tail sampling, daha fazla Collector kayna\u011f\u0131 gerektirir. Bu nedenle Collector'lar\u0131n\u0131z\u0131 yeterli CPU ve bellek ile \u00f6l\u00e7eklendirdi\u011finizden emin olun. Ayr\u0131ca, <code>decision_wait<\/code> s\u00fcresi, izlemelerin toplanma s\u00fcresi ve analiz i\u00e7in bekletilmesi aras\u0131nda bir denge olmal\u0131d\u0131r; \u00e7ok k\u0131sa olmas\u0131 eksik izlemelere, \u00e7ok uzun olmas\u0131 ise gecikmeye neden olabilir.<br \/>\n        <\/aside>\n<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve \u0130leri D\u00fczey \u0130pu\u00e7lar\u0131: Hangi Senaryoda Hangi Sampling Stratejisi Uygun?<\/h2>\n<p>OpenTelemetry sampling stratejilerini anlamak bir ba\u015flang\u0131\u00e7t\u0131r; bunlar\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131na uygulamak ise as\u0131l zorluktur. Her uygulaman\u0131n ve her i\u015fin kendine \u00f6zg\u00fc gereksinimleri ve b\u00fct\u00e7e k\u0131s\u0131tlamalar\u0131 vard\u0131r. Bu b\u00f6l\u00fcmde, farkl\u0131 senaryolara uygun sampling yakla\u015f\u0131mlar\u0131n\u0131 inceleyecek ve deneyimli kullan\u0131c\u0131lar i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 sunaca\u011f\u0131z.<\/p>\n<h3>Farkl\u0131 Uygulama T\u00fcrleri \u0130\u00e7in Sampling Se\u00e7enekleri<\/h3>\n<ul>\n<li><strong>Y\u00fcksek Hacimli, Genel Kullan\u0131m API'leri (\u00d6rn: Mobil Uygulama Backend'i):<\/strong>\n<ul>\n<li><strong>Yakla\u015f\u0131m:<\/strong> Bu t\u00fcr uygulamalar, \u00e7ok say\u0131da benzer iste\u011fi i\u015fler ve her bir iste\u011fi detayl\u0131ca izlemek pratik de\u011fildir. Head sampling, maliyetleri y\u00f6netmek i\u00e7in en iyi ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/li>\n<li><strong>\u00d6nerilen Strateji:<\/strong> <code>ParentBased<\/code> ile birlikte <code>TraceIdRatioBasedSampler<\/code> (\u00f6rne\u011fin %1-5 oran\u0131nda) uygulaman\u0131z\u0131n SDK's\u0131nda yap\u0131land\u0131r\u0131n. Kritik hatalar veya yava\u015flamalar i\u00e7in daha hassas izleme gerekiyorsa, Collector'da basit bir <code>tail_sampling<\/code> (sadece ERROR durum kodlar\u0131n\u0131 veya belirli bir s\u00fcreyi a\u015fanlar\u0131 yakalayan) ekleyebilirsiniz.<\/li>\n<li><strong>\u0130pucu:<\/strong> T\u00fcm sa\u011fl\u0131kl\u0131 ve h\u0131zl\u0131 izlemelerin %99'unu atmak, genellikle sistem hakk\u0131nda yeterli bilgi sa\u011flarken maliyetleri dramatik \u015fekilde d\u00fc\u015f\u00fcr\u00fcr.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Kritik \u0130\u015f Ak\u0131\u015flar\u0131na Sahip Uygulamalar (\u00d6rn: Finansal \u0130\u015flemler, Sa\u011fl\u0131k Sistemleri):<\/strong>\n<ul>\n<li><strong>Yakla\u015f\u0131m:<\/strong> Bu uygulamalarda her bir i\u015flemin ba\u015far\u0131l\u0131 bir \u015fekilde tamamlanmas\u0131 hayati \u00f6nem ta\u015f\u0131r. Hata veya yava\u015flama durumlar\u0131n\u0131n %100'\u00fcn\u00fc yakalamak istenirken, normal \u00e7al\u0131\u015fan i\u015flemlerin t\u00fcm\u00fcn\u00fc kaydetmek a\u015f\u0131r\u0131ya ka\u00e7abilir.<\/li>\n<li><strong>\u00d6nerilen Strateji:<\/strong> \u00d6ncelikle uygulaman\u0131zda \u00e7ok d\u00fc\u015f\u00fck bir <code>TraceIdRatioBasedSampler<\/code> (%0.1 veya daha d\u00fc\u015f\u00fck) ile head sampling yaparak genel maliyeti d\u00fc\u015f\u00fcr\u00fcn. As\u0131l i\u015fi Collector'daki <code>tail_sampling<\/code> yapacakt\u0131r. Burada, i\u015f mant\u0131\u011f\u0131na \u00f6zel politikalar tan\u0131mlayabilirsiniz:\n<ul>\n<li>Belirli bir i\u015f ak\u0131\u015f\u0131ndaki (\u00f6rne\u011fin <code>&#039;\/api\/transfer&#039;<\/code> veya <code>&#039;\/api\/payment&#039;<\/code>) t\u00fcm hatalar\u0131 kaydet.<\/li>\n<li>Belirli bir m\u00fc\u015fteri segmentine ait (\u00f6rne\u011fin <code>premium_user_id<\/code> i\u00e7eren) izlemeleri her zaman kaydet.<\/li>\n<li>Kritik bir i\u015flemde belirli bir SLA'y\u0131 (Servis Seviyesi Anla\u015fmas\u0131) a\u015fan t\u00fcm izlemeleri kaydet.<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u0130pucu:<\/strong> \u0130\u015f mant\u0131\u011f\u0131n\u0131za \u00f6zel <code>attributes<\/code> (\u00f6znitelikler) kullanarak tail sampling politikalar\u0131n\u0131z\u0131 zenginle\u015ftirin. \u00d6rne\u011fin, <code>user.type: premium<\/code> gibi custom attributeler ekleyebilirsiniz.<\/li>\n<\/ul>\n<\/li>\n<li><strong>D\u00fc\u015f\u00fck Hacimli, Ancak Her \u0130zlemenin De\u011ferli Oldu\u011fu Uygulamalar (\u00d6rn: Batch \u0130\u015fler, Nadir Kullan\u0131lan Y\u00f6netim Ara\u00e7lar\u0131):<\/strong>\n<ul>\n<li><strong>Yakla\u015f\u0131m:<\/strong> Bu senaryolarda veri hacmi do\u011fal olarak d\u00fc\u015f\u00fckt\u00fcr, bu nedenle her izlemenin kaydedilmesi genellikle uygun maliyetli ve faydal\u0131d\u0131r.<\/li>\n<li><strong>\u00d6nerilen Strateji:<\/strong> <code>AlwaysOnSampler<\/code> kullan\u0131n. T\u00fcm veriyi kaydetmek, gelecekteki olas\u0131 sorun giderme s\u00fcre\u00e7leri i\u00e7in tam bir ge\u00e7mi\u015f sa\u011flar.<\/li>\n<li><strong>\u0130pucu:<\/strong> Veri hacmi zaten d\u00fc\u015f\u00fck oldu\u011fu i\u00e7in, sampling'e odaklanmak yerine, izlemelerin zenginli\u011fini (do\u011fru span'ler, do\u011fru attributeler) art\u0131rmaya odaklan\u0131n.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve P\u00fcf Noktalar\u0131<\/h3>\n<ol>\n<li><strong>Kombine Yakla\u015f\u0131mlar:<\/strong> Genellikle en iyi sonu\u00e7lar, head sampling ve tail sampling'in kombinasyonuyla elde edilir. Uygulaman\u0131zda genel bir <code>TraceIdRatioBasedSampler<\/code> ile ba\u015flar, ard\u0131ndan Collector'da daha ak\u0131ll\u0131 tail sampling politikalar\u0131 uygulars\u0131n\u0131z. Bu, Collector'a ula\u015fan veri miktar\u0131n\u0131 azalt\u0131rken, kritik izlemelerin ka\u00e7\u0131r\u0131lmamas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>\u00d6zel (Custom) Sampler'lar Yazma:<\/strong> OpenTelemetry SDK'lar\u0131, kendi \u00f6zel \u00f6rnekleyici mant\u0131\u011f\u0131n\u0131z\u0131 (custom sampler) yazman\u0131za olanak tan\u0131r. E\u011fer standart \u00f6rnekleyiciler ihtiya\u00e7lar\u0131n\u0131z\u0131 kar\u015f\u0131lam\u0131yorsa, uygulaman\u0131z\u0131n anl\u0131k durumuna, belirli \u00f6zellik bayraklar\u0131na veya harici bir servisten al\u0131nan kararlara g\u00f6re dinamik \u00f6rnekleme yapabilirsiniz.\n<pre><code class=\"language-python\">\n# \u00d6rnek Python Custom Sampler Tasla\u011f\u0131\nfrom opentelemetry.sdk.trace.sampling import Sampler, SamplingResult, Decision\n\nclass DynamicFeatureFlagSampler(Sampler):\n    def __init__(self, feature_flag_service):\n        self._feature_flag_service = feature_flag_service\n\n    def should_sample(\n        self,\n        parent_context: trace.Context,\n        trace_id: int,\n        name: str,\n        kind: SpanKind,\n        attributes: Attributes,\n        links: Sequence[Link],\n    ) -> SamplingResult:\n        # Diyelim ki feature_flag_service, \"critical_feature_enabled\" bayra\u011f\u0131n\u0131 sorguluyor\n        if self._feature_flag_service.is_enabled(\"critical_feature_enabled\"):\n            return SamplingResult(Decision.RECORD_AND_SAMPLE)\n        \n        # Aksi takdirde, varsay\u0131lan bir oranla \u00f6rnekle\n        if trace_id % 100 == 0: # Basit %1 rastgele \u00f6rnekleme\n            return SamplingResult(Decision.RECORD_AND_SAMPLE)\n        \n        return SamplingResult(Decision.DROP)\n\n    def get_description(self) -> str:\n        return \"DynamicFeatureFlagSampler\"\n            <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>DynamicFeatureFlagSampler<\/code>, harici bir \u00f6zellik bayra\u011f\u0131 (feature flag) servisine ba\u011flanarak kritik bir \u00f6zellik etkin oldu\u011funda her zaman \u00f6rnekleme yapar, aksi takdirde %1 oran\u0131nda rastgele \u00f6rnekler.<\/p>\n<\/li>\n<li><strong>A\/B Testleri ve Yeni \u00d6zellik Da\u011f\u0131t\u0131mlar\u0131:<\/strong> Yeni bir \u00f6zellik da\u011f\u0131t\u0131ld\u0131\u011f\u0131nda veya A\/B testi yap\u0131ld\u0131\u011f\u0131nda, bu \u00f6zelli\u011fe \u00f6zel t\u00fcm izlemeleri %100 oran\u0131nda \u00f6rneklemek isteyebilirsiniz. Bu, yeni \u00f6zelli\u011fin performans\u0131 \u00fczerindeki etkisini veya potansiyel hatalar\u0131 daha h\u0131zl\u0131 tespit etmenizi sa\u011flar. Daha sonra, \u00f6zellik stabil hale geldi\u011finde normal \u00f6rnekleme oranlar\u0131na geri d\u00f6nebilirsiniz.<\/li>\n<li><strong>Maliyet Monit\u00f6ringi:<\/strong> Kulland\u0131\u011f\u0131n\u0131z observability platformu \u00fczerinde ayl\u0131k veya g\u00fcnl\u00fck veri hacminizi ve maliyetlerinizi d\u00fczenli olarak izleyin. \u00d6rnekleme oranlar\u0131n\u0131z\u0131 bu verilere g\u00f6re ayarlayarak b\u00fct\u00e7enizi kontrol alt\u0131nda tutun. Bazen k\u00fc\u00e7\u00fck bir oran de\u011fi\u015fikli\u011fi bile b\u00fcy\u00fck tasarruflar sa\u011flayabilir.<\/li>\n<li><strong>Politikalar\u0131n \u00d6nceli\u011fi:<\/strong> Tail sampling'de politikalar\u0131n s\u0131ralamas\u0131 \u00f6nemlidir. Daha spesifik ve kritik politikalar\u0131 (\u00f6rne\u011fin hata politikalar\u0131) genel politikalardan (\u00f6rne\u011fin rastgele \u00f6rnekleme) \u00f6nce tan\u0131mlay\u0131n, b\u00f6ylece kritik izlemeler her zaman do\u011fru \u015fekilde yakalan\u0131r.<\/li>\n<\/ol>\n<p>Bu ileri d\u00fczey ipu\u00e7lar\u0131 ve senaryo bazl\u0131 yakla\u015f\u0131mlar, OpenTelemetry sampling'den maksimum fayday\u0131 sa\u011flaman\u0131za ve b\u00fct\u00e7enizi etkili bir \u015fekilde y\u00f6netmenize yard\u0131mc\u0131 olacakt\u0131r. Unutmay\u0131n ki \"tek beden herkese uyar\" bir \u00e7\u00f6z\u00fcm yoktur; en iyi strateji, uygulaman\u0131z\u0131n ve i\u015finizin benzersiz ihtiya\u00e7lar\u0131na g\u00f6re uyarlanm\u0131\u015f olan\u0131d\u0131r.<\/p>\n<h3>Mobil Cihazlarda Observability ve HTML Best Practices<\/h3>\n<p>Mobil uygulamalar ve web siteleri i\u00e7in observability, kullan\u0131c\u0131 deneyimini anlamak ve performans sorunlar\u0131n\u0131 gidermek a\u00e7\u0131s\u0131ndan hayati \u00f6neme sahiptir. OpenTelemetry, mobil SDK'lar\u0131 arac\u0131l\u0131\u011f\u0131yla (\u00f6rne\u011fin, OpenTelemetry Swift\/Kotlin SDK'lar\u0131 veya web i\u00e7in JavaScript SDK's\u0131) mobil platformlarda da izleme verisi toplaman\u0131za olanak tan\u0131r. Ancak mobil cihazlarda kaynak k\u0131s\u0131tlamalar\u0131 (pil \u00f6mr\u00fc, veri kullan\u0131m\u0131) ve a\u011f ko\u015fullar\u0131 (istikrars\u0131z ba\u011flant\u0131lar) g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, sampling stratejileri daha da kritik hale gelir. A\u015f\u0131r\u0131 veri toplama, kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir ve mobil veri faturalar\u0131na yans\u0131yabilir.<\/p>\n<p><strong>Mobil Uygulamalarda Sampling \u0130pu\u00e7lar\u0131:<\/strong><\/p>\n<ul>\n<li><strong>D\u00fc\u015f\u00fck Sampling Oranlar\u0131:<\/strong> Mobil cihazlarda genellikle daha d\u00fc\u015f\u00fck head sampling oranlar\u0131 (%0.1 - %0.5) tercih edilir. Kritik hatalar\u0131 veya \u00e7\u00f6kmeleri yakalamak i\u00e7in tail sampling benzeri (ancak cihaz \u00fczerinde kaynak k\u0131s\u0131tlamalar\u0131 nedeniyle daha basit) mekanizmalar kullan\u0131labilir.<\/li>\n<li><strong>Kullan\u0131c\u0131 \u0130zni:<\/strong> \u00d6zellikle ki\u015fisel veri toplarken kullan\u0131c\u0131dan a\u00e7\u0131k r\u0131za almak \u00f6nemlidir. Sampling, toplanan veri miktar\u0131n\u0131 azaltarak gizlilik endi\u015felerini hafifletebilir.<\/li>\n<li><strong>Network Ko\u015fullar\u0131na Duyarl\u0131 Sampling:<\/strong> Uygulama, kullan\u0131c\u0131n\u0131n Wi-Fi'da m\u0131 yoksa mobil veride mi oldu\u011funu alg\u0131layabilir ve mobil veri kullan\u0131l\u0131yorsa daha agresif bir sampling oran\u0131 uygulayabilir.<\/li>\n<li><strong>Hata \u00d6nceli\u011fi:<\/strong> Mobil uygulamalarda hata izleme, performans izlemeden daha kritik olabilir. T\u00fcm hata izlemelerini kaydetmeye \u00f6ncelik verin.<\/li>\n<\/ul>\n<p><strong>HTML Best Practices ve Mobil Uyumlu Tasar\u0131m:<\/strong><\/p>\n<p>Bu teknik makale HTML format\u0131nda sunuldu\u011fu i\u00e7in, mobil uyumlulu\u011fun \u00f6nemine de\u011finmek gerekir. G\u00fcn\u00fcm\u00fczde web trafi\u011finin b\u00fcy\u00fck bir k\u0131sm\u0131 mobil cihazlardan gelmektedir. Bu nedenle, teknik makaleler dahil her t\u00fcrl\u00fc web i\u00e7eri\u011finin mobil cihazlarda d\u00fczg\u00fcn g\u00f6r\u00fcnt\u00fclenmesi ve okunmas\u0131 gerekmektedir.<\/p>\n<p><strong>Temel Mobil Uyumlu HTML Kurallar\u0131:<\/strong><\/p>\n<ol>\n<li><strong>Viewport Meta Etiketi:<\/strong> En temel kural, HTML <code><head><\/code> etiketine viewport meta etiketini eklemektir. Bu etiket, taray\u0131c\u0131ya sayfan\u0131n cihaz\u0131n geni\u015fli\u011fine g\u00f6re \u00f6l\u00e7eklenmesini s\u00f6yler.\n<pre><code class=\"language-html\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li><strong>Esnek Resimler ve Medya:<\/strong> Resimlerin ve di\u011fer medya \u00f6\u011felerinin, ekran boyutuna g\u00f6re otomatik olarak yeniden boyutland\u0131r\u0131ld\u0131\u011f\u0131ndan emin olun.\n<pre><code class=\"language-css\">\nimg {\n    max-width: 100%;\n    height: auto;\n    display: block; \/* Gereksiz bo\u015fluklar\u0131 \u00f6nler *\/\n}\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li><strong>Duyarl\u0131 Tipografi:<\/strong> Metinlerin k\u00fc\u00e7\u00fck ekranlarda okunabilir oldu\u011fundan emin olun. <code>font-size<\/code> ve <code>line-height<\/code> de\u011ferlerini mobil i\u00e7in optimize edin.<\/li>\n<li><strong>Media Queries Kullan\u0131m\u0131:<\/strong> Farkl\u0131 ekran boyutlar\u0131 i\u00e7in farkl\u0131 stiller uygulamak \u00fczere CSS media query'lerini kullan\u0131n. Bu, i\u00e7eri\u011fin belirli cihazlara g\u00f6re nas\u0131l g\u00f6r\u00fcnece\u011fini kontrol etmenizi sa\u011flar. \u00d6rne\u011fin, bu makaledeki kod bloklar\u0131n\u0131 veya tablolar\u0131 mobil cihazlarda yatay kayd\u0131r\u0131labilir yapmak i\u00e7in kullan\u0131labilir:\n<pre><code class=\"language-css\">\n\/* Genel stil *\/\n.article-container {\n    max-width: 960px;\n    margin: 0 auto;\n    padding: 15px;\n    font-family: sans-serif;\n    line-height: 1.6;\n    color: #333;\n}\n\n\/* Kod bloklar\u0131 i\u00e7in duyarl\u0131 stil *\/\npre {\n    background-color: #f4f4f4;\n    padding: 15px;\n    border-radius: 5px;\n    overflow-x: auto; \/* Yatay kayd\u0131rma \u00e7ubu\u011fu ekler *\/\n    white-space: pre-wrap; \/* Uzun sat\u0131rlar\u0131 sarar *\/\n    word-wrap: break-word;\n    margin-bottom: 20px;\n}\n\n\/* K\u00fc\u00e7\u00fck ekranlar i\u00e7in (mobil cihazlar) *\/\n@media (max-width: 768px) {\n    .article-container {\n        padding: 10px;\n    }\n    h2, h3 {\n        font-size: 1.5em; \/* Ba\u015fl\u0131k boyutlar\u0131n\u0131 ayarlar *\/\n    }\n    p, li {\n        font-size: 0.95em;\n    }\n    pre {\n        font-size: 0.8em;\n    }\n    table {\n        display: block;\n        overflow-x: auto;\n        white-space: nowrap;\n        border-collapse: collapse;\n        width: 100%;\n    }\n    table thead, table tbody, table tr, table th, table td {\n        display: block;\n    }\n    table tr {\n        margin-bottom: 10px;\n        border: 1px solid #ddd;\n    }\n    table td {\n        border-bottom: 1px solid #ddd;\n        position: relative;\n        padding-left: 50%;\n        text-align: right;\n    }\n    table td:before {\n        position: absolute;\n        left: 6px;\n        content: attr(data-label); \/* Tablo ba\u015fl\u0131\u011f\u0131n\u0131 etikete d\u00f6n\u00fc\u015ft\u00fcr\u00fcr *\/\n        font-weight: bold;\n        text-align: left;\n    }\n}\n\n\/* Uzman ipucu kutusu *\/\n.expert-tip {\n    background-color: #e6f7ff;\n    border-left: 5px solid #3399ff;\n    padding: 15px;\n    margin: 20px 0;\n    border-radius: 4px;\n    font-style: italic;\n    color: #333;\n}\n            <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki CSS \u00f6rne\u011finde, 768px geni\u015fli\u011fin alt\u0131ndaki ekranlar i\u00e7in (yani \u00e7o\u011fu mobil cihaz), yaz\u0131 tipleri k\u00fc\u00e7\u00fclt\u00fcl\u00fcr, kod bloklar\u0131 yatay kayd\u0131r\u0131labilir hale getirilir ve tablolar daha dikey bir g\u00f6r\u00fcn\u00fcme d\u00f6n\u00fc\u015ft\u00fcr\u00fclerek okunabilirlik art\u0131r\u0131l\u0131r. HTML tablosunda <code>data-label<\/code> \u00f6zelli\u011fini kullanarak tablo ba\u015fl\u0131klar\u0131n\u0131 mobil g\u00f6r\u00fcn\u00fcmde her h\u00fccrenin \u00f6n\u00fcne eklemek iyi bir tekniktir. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-html\">\n<table>\n  <thead>\n    <tr>\n      <th>Kriter<\/th>\n      <th>Head Sampling<\/th>\n      <th>Tail Sampling<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td data-label=\"Kriter\">Karar Zaman\u0131<\/td>\n      <td data-label=\"Head Sampling\">Trace'in ba\u015f\u0131nda<\/td>\n      <td data-label=\"Tail Sampling\">Trace tamamland\u0131ktan sonra<\/td>\n    <\/tr>\n    <tr>\n      <td data-label=\"Kriter\">Maliyet Optimizasyonu<\/td>\n      <td data-label=\"Head Sampling\">Y\u00fcksek<\/td>\n      <td data-label=\"Tail Sampling\">Orta (Collector maliyeti)<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li><strong>Performans:<\/strong> Mobil cihazlar i\u00e7in sayfa y\u00fckleme h\u0131z\u0131n\u0131 optimize edin. K\u00fc\u00e7\u00fck dosya boyutlar\u0131, optimize edilmi\u015f resimler ve az JavaScript kullan\u0131m\u0131 \u00f6nemlidir.<\/li>\n<\/ol>\n<p>Bu HTML best practices'lerini takip ederek, OpenTelemetry ile toplad\u0131\u011f\u0131n\u0131z observability verilerini analiz eden herkesin, kulland\u0131\u011f\u0131 cihazdan ba\u011f\u0131ms\u0131z olarak, makalenizi kolayca okuyabilmesini sa\u011flars\u0131n\u0131z.<\/p>\n<h2>Sonu\u00e7: Sampling ile B\u00fct\u00e7enizi Kurtar\u0131rken Kaliteyi Korumak M\u00fcmk\u00fcn<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k ve da\u011f\u0131t\u0131k sistemlerinde, uygulamalar\u0131n g\u00f6zlemlenebilirli\u011fi (observability) sadece bir l\u00fcks de\u011fil, ayn\u0131 zamanda operasyonel verimlilik ve kullan\u0131c\u0131 memnuniyeti i\u00e7in temel bir gerekliliktir. Ancak bu de\u011ferli i\u00e7g\u00f6r\u00fcy\u00fc elde etmenin maliyeti, \u00f6zellikle y\u00fcksek trafikli ortamlarda h\u0131zla tavan yapabilir. OpenTelemetry sampling, bu maliyet y\u00fck\u00fcn\u00fc hafifletmek i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir \u00e7\u00f6z\u00fcm sunar. Bu makale boyunca g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, sampling, t\u00fcm telemetri verisini k\u00f6r\u00fc k\u00f6r\u00fcne kaydetmek yerine, hangi izlemelerin ger\u00e7ekten \u00f6nemli oldu\u011funa dair ak\u0131ll\u0131 kararlar alarak b\u00fct\u00e7enizden tasarruf etmenizi sa\u011flar.<\/p>\n<p>Head sampling ile erken a\u015famada veri hacmini azaltabilir, Tail sampling ile ise kritik hatalar\u0131 ve performans sorunlar\u0131n\u0131 y\u00fcksek g\u00fcvenilirlikle yakalayabilirsiniz. Her iki yakla\u015f\u0131m\u0131n da kendine \u00f6zg\u00fc avantajlar\u0131 ve kullan\u0131m senaryolar\u0131 vard\u0131r ve genellikle en iyi sonu\u00e7lar i\u00e7in bu stratejilerin ak\u0131ll\u0131ca bir kombinasyonu kullan\u0131l\u0131r. OpenTelemetry'nin sa\u011flad\u0131\u011f\u0131 esneklik sayesinde, <code>TraceIdRatioBasedSampler<\/code> gibi basit oran tabanl\u0131 \u00f6rnekleyicilerden, i\u015f mant\u0131\u011f\u0131na \u00f6zel kurallar uygulayan sofistike <code>tail_sampling<\/code> politikalar\u0131na ve hatta tamamen \u00f6zel \u00f6rnekleyicilere kadar geni\u015f bir yelpazede \u00e7\u00f6z\u00fcmler geli\u015ftirebilirsiniz.<\/p>\n<p>\u00d6nemli olan, uygulaman\u0131z\u0131n do\u011fas\u0131n\u0131, i\u015f hedeflerinizi ve b\u00fct\u00e7e k\u0131s\u0131tlamalar\u0131n\u0131z\u0131 dikkatlice de\u011ferlendirerek size en uygun sampling stratejisini belirlemektir. Veri toplama oranlar\u0131n\u0131z\u0131 s\u00fcrekli olarak izlemek, observability platformunuzdaki maliyetleri takip etmek ve stratejinizi buna g\u00f6re ayarlamak, s\u00fcrekli bir optimizasyon s\u00fcrecidir. Unutmay\u0131n, hedef, \"her \u015feyi\" izlemek de\u011fil, \"\u00f6nemli olan\u0131\" en etkili \u015fekilde izlemektir. OpenTelemetry sampling ile, hem b\u00fct\u00e7enizi koruyabilir hem de uygulama performans\u0131n\u0131z ve sa\u011fl\u0131\u011f\u0131n\u0131z hakk\u0131nda kritik i\u00e7g\u00f6r\u00fcleri kaybetmeden, daha ak\u0131ll\u0131 ve s\u00fcrd\u00fcr\u00fclebilir bir observability stratejisi olu\u015fturabilirsiniz. Bu, sadece finansal bir avantaj sa\u011flamakla kalmaz, ayn\u0131 zamanda operasyonel ekiplerinizin daha az \"g\u00fcr\u00fclt\u00fc\" ile daha h\u0131zl\u0131 ve do\u011fru kararlar almas\u0131na da olanak tan\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<dl>\n<dt>Sampling t\u00fcm veriyi kaybetmeme neden olmaz m\u0131?<\/dt>\n<dd>Hay\u0131r, do\u011fru uyguland\u0131\u011f\u0131nda sampling, t\u00fcm veriyi kaybetmek anlam\u0131na gelmez. Aksine, size en de\u011ferli ve eyleme ge\u00e7irilebilir i\u00e7g\u00f6r\u00fcleri sa\u011flayacak temsili bir veri k\u00fcmesi elde etmenizi ama\u00e7lar. Head sampling rastgele se\u00e7erken, tail sampling hatalar, yava\u015fl\u0131klar veya belirli i\u015f ak\u0131\u015flar\u0131 gibi \u00f6nemli kriterlere g\u00f6re se\u00e7im yaparak kritik izlemelerin ka\u00e7\u0131r\u0131lmamas\u0131n\u0131 sa\u011flar. Bu sayede, \"g\u00fcr\u00fclt\u00fcy\u00fc\" azalt\u0131rken \"sinyali\" korursunuz.<\/dd>\n<dt>Head ve Tail sampling aras\u0131nda ne zaman se\u00e7im yapmal\u0131y\u0131m?<\/dt>\n<dd>Genellikle her ikisini bir arada kullanmak en iyisidir. Y\u00fcksek hacimli ve genel kullan\u0131m senaryolar\u0131 i\u00e7in uygulaman\u0131zda d\u00fc\u015f\u00fck oranl\u0131 (\u00f6rne\u011fin %1-5) head sampling uygulayarak ilk maliyet optimizasyonunu sa\u011flayabilirsiniz. Ard\u0131ndan, daha kritik ve ak\u0131ll\u0131 kararlar i\u00e7in OpenTelemetry Collector'da tail sampling'i (hata i\u00e7erenleri veya belirli bir s\u00fcreyi a\u015fanlar\u0131 her zaman \u00f6rnekleyen) yap\u0131land\u0131r\u0131n. Head sampling, erken a\u015famada y\u00fck\u00fc azalt\u0131rken, tail sampling \u00f6nemli sorunlar\u0131n ka\u00e7\u0131r\u0131lmamas\u0131n\u0131 garanti eder.<\/dd>\n<dt>\u0130deal sampling oran\u0131 ne olmal\u0131?<\/dt>\n<dd>\u0130deal sampling oran\u0131, uygulaman\u0131z\u0131n trafik hacmine, kritiklik seviyesine, hata oran\u0131na ve b\u00fct\u00e7e k\u0131s\u0131tlamalar\u0131n\u0131za ba\u011fl\u0131 olarak de\u011fi\u015fir. Genellikle %1 ile %10 aras\u0131nda bir head sampling oran\u0131yla ba\u015flan\u0131r. Tail sampling'de ise, kritik izlemeler i\u00e7in %100, geri kalan\u0131 i\u00e7in ise \u00e7ok d\u00fc\u015f\u00fck bir olas\u0131l\u0131k (%0.1-%1) belirlenir. En iyi oran\u0131 bulmak i\u00e7in, observability platformunuzdaki verileri (toplam izleme say\u0131s\u0131, hata oranlar\u0131, ortalama gecikme) izleyerek ve maliyet-fayda analizi yaparak deneme yan\u0131lma yoluyla ince ayar yapman\u0131z gerekir.<\/dd>\n<dt>Custom sampler yazmak ne zaman gerekli olur?<\/dt>\n<dd>Custom sampler yazmak, standart OpenTelemetry \u00f6rnekleyicileri mevcut i\u015f mant\u0131\u011f\u0131n\u0131za veya karma\u015f\u0131k dinamik gereksinimlerinize uymad\u0131\u011f\u0131nda gerekli olur. \u00d6rne\u011fin, belirli bir \u00f6zellik bayra\u011f\u0131na (feature flag) g\u00f6re dinamik olarak \u00f6rnekleme yapmak, belirli bir co\u011frafi b\u00f6lgeden gelen istekleri daha y\u00fcksek oranlarda izlemek veya harici bir sisteme dan\u0131\u015farak \u00f6rnekleme karar\u0131 vermek istedi\u011finizde \u00f6zel bir \u00f6rnekleyici geli\u015ftirebilirsiniz.<\/dd>\n<dt>Sampling maliyetleri ne kadar azaltabilir?<\/dt>\n<dd>Sampling, observability maliyetlerini \u00f6nemli \u00f6l\u00e7\u00fcde azaltabilir. Uygulaman\u0131z\u0131n trafik hacmine ve uygulad\u0131\u011f\u0131n\u0131z sampling oran\u0131na ba\u011fl\u0131 olarak %50'den %95'e kadar hatta daha fazla tasarruf sa\u011flamak m\u00fcmk\u00fcnd\u00fcr. \u00d6rne\u011fin, %1'lik bir sampling oran\u0131yla, g\u00f6nderilen veri hacmini teorik olarak %99 oran\u0131nda azalt\u0131rs\u0131n\u0131z. Bu da do\u011frudan depolama, transfer ve i\u015fleme maliyetlerine yans\u0131r ve bulut faturan\u0131zda ciddi bir d\u00fc\u015f\u00fc\u015f anlam\u0131na gelir.<\/dd>\n<\/dl>\n<\/div>\n","protected":false},"excerpt":{"rendered":"Modern yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n performans\u0131 ve sa\u011fl\u0131\u011f\u0131 hakk\u0131nda derinlemesine bilgi sahibi olmak hayati \u00f6nem ta\u015f\u0131r. Ancak t\u00fcm telemetri&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":[1],"tags":[],"class_list":{"0":"post-32547","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","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>OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber<\/title>\n<meta name=\"description\" content=\"Modern yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n performans\u0131 ve sa\u011fl\u0131\u011f\u0131 hakk\u0131nda derinlemesine bilgi sahibi olmak hayati \u00f6nem ta\u015f\u0131r. Ancak t\u00fcm telemetri verilerini toplamak ve analiz etmek, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli sistemlerde, ciddi maliyetler yaratabilir. Bu kapsaml\u0131 rehber, OpenTelemetry sampling stratejilerini kullanarak observability maliyetlerinden nas\u0131l tasarruf edece\u011finizi detayl\u0131ca a\u00e7\u0131klayacakt\u0131r.\" \/>\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\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber\" \/>\n<meta property=\"og:description\" content=\"Modern yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n performans\u0131 ve sa\u011fl\u0131\u011f\u0131 hakk\u0131nda derinlemesine bilgi sahibi olmak hayati \u00f6nem ta\u015f\u0131r. Ancak t\u00fcm telemetri verilerini toplamak ve analiz etmek, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli sistemlerde, ciddi maliyetler yaratabilir. Bu kapsaml\u0131 rehber, OpenTelemetry sampling stratejilerini kullanarak observability maliyetlerinden nas\u0131l tasarruf edece\u011finizi detayl\u0131ca a\u00e7\u0131klayacakt\u0131r.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-23T02:01:41+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=\"31 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber\",\"datePublished\":\"2025-10-23T02:01:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/\"},\"wordCount\":5645,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/\",\"name\":\"OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-23T02:01:41+00:00\",\"description\":\"Modern yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n performans\u0131 ve sa\u011fl\u0131\u011f\u0131 hakk\u0131nda derinlemesine bilgi sahibi olmak hayati \u00f6nem ta\u015f\u0131r. Ancak t\u00fcm telemetri verilerini toplamak ve analiz etmek, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli sistemlerde, ciddi maliyetler yaratabilir. Bu kapsaml\u0131 rehber, OpenTelemetry sampling stratejilerini kullanarak observability maliyetlerinden nas\u0131l tasarruf edece\u011finizi detayl\u0131ca a\u00e7\u0131klayacakt\u0131r.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber","description":"Modern yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n performans\u0131 ve sa\u011fl\u0131\u011f\u0131 hakk\u0131nda derinlemesine bilgi sahibi olmak hayati \u00f6nem ta\u015f\u0131r. Ancak t\u00fcm telemetri verilerini toplamak ve analiz etmek, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli sistemlerde, ciddi maliyetler yaratabilir. Bu kapsaml\u0131 rehber, OpenTelemetry sampling stratejilerini kullanarak observability maliyetlerinden nas\u0131l tasarruf edece\u011finizi detayl\u0131ca a\u00e7\u0131klayacakt\u0131r.","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\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber","og_description":"Modern yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n performans\u0131 ve sa\u011fl\u0131\u011f\u0131 hakk\u0131nda derinlemesine bilgi sahibi olmak hayati \u00f6nem ta\u015f\u0131r. Ancak t\u00fcm telemetri verilerini toplamak ve analiz etmek, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli sistemlerde, ciddi maliyetler yaratabilir. Bu kapsaml\u0131 rehber, OpenTelemetry sampling stratejilerini kullanarak observability maliyetlerinden nas\u0131l tasarruf edece\u011finizi detayl\u0131ca a\u00e7\u0131klayacakt\u0131r.","og_url":"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-23T02:01:41+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"31 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber","datePublished":"2025-10-23T02:01:41+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/"},"wordCount":5645,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/","name":"OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-23T02:01:41+00:00","description":"Modern yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n performans\u0131 ve sa\u011fl\u0131\u011f\u0131 hakk\u0131nda derinlemesine bilgi sahibi olmak hayati \u00f6nem ta\u015f\u0131r. Ancak t\u00fcm telemetri verilerini toplamak ve analiz etmek, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli sistemlerde, ciddi maliyetler yaratabilir. Bu kapsaml\u0131 rehber, OpenTelemetry sampling stratejilerini kullanarak observability maliyetlerinden nas\u0131l tasarruf edece\u011finizi detayl\u0131ca a\u00e7\u0131klayacakt\u0131r.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/opentelemetry-sampling-ile-butceden-tasarruf-kapsamli-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"OpenTelemetry Sampling ile B\u00fct\u00e7eden Tasarruf: Kapsaml\u0131 Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32547","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=32547"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32547\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}