{"id":33048,"date":"2025-10-29T00:41:02","date_gmt":"2025-10-28T21:41:02","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=33048"},"modified":"2025-10-29T00:41:02","modified_gmt":"2025-10-28T21:41:02","slug":"tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/","title":{"rendered":"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu"},"content":{"rendered":"<p><body><\/p>\n<h2>TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu<\/h2>\n<p>Kubernetes, modern uygulama geli\u015ftirmenin ve da\u011f\u0131t\u0131m\u0131n\u0131n temel ta\u015f\u0131 haline gelmi\u015f, konteynerli i\u015f y\u00fcklerini y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir platformdur. Ancak bu g\u00fcc\u00fcn ve esnekli\u011fin getirdi\u011fi karma\u015f\u0131kl\u0131k, Kubernetes k\u00fcmelerinin ve \u00fczerinde \u00e7al\u0131\u015fan uygulamalar\u0131n etkin bir \u015fekilde izlenmesini zorunlu k\u0131lar. Geleneksel izleme y\u00f6ntemleri, dinamik ve da\u011f\u0131t\u0131k yap\u0131daki Kubernetes ortamlar\u0131n\u0131n s\u00fcrekli de\u011fi\u015fen do\u011fas\u0131na ayak uydurmakta yetersiz kalabilir. \u0130\u015fte tam da bu noktada &#8220;Observability&#8221; (G\u00f6zlemlenebilirlik) kavram\u0131 devreye girer. G\u00f6zlemlenebilirlik, bir sistemin i\u00e7 durumunu, d\u0131\u015far\u0131dan g\u00f6zlemlenebilen veriler (metrikler, loglar ve trace&#8217;ler) arac\u0131l\u0131\u011f\u0131yla anlamam\u0131z\u0131 sa\u011flayan bir yetenektir. Bu makalede, Kubernetes k\u00fcmeleriniz i\u00e7in kapsaml\u0131 bir g\u00f6zlemlenebilirlik \u00e7\u00f6z\u00fcm\u00fc sunan TOBS (The Observability Stack) kurulumunu ve kullan\u0131m\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3>Kubernetes ve G\u00f6zlemlenebilirli\u011fin \u00d6nemi<\/h3>\n<p>Kubernetes, mikroservis mimarileri i\u00e7in ideal bir platform sunar. Uygulamalar k\u00fc\u00e7\u00fck, ba\u011f\u0131ms\u0131z servisler halinde da\u011f\u0131t\u0131l\u0131r ve dinamik olarak \u00f6l\u00e7eklenir. Bu dinamizm, izleme ve hata ay\u0131klama s\u00fcre\u00e7lerini karma\u015f\u0131kla\u015ft\u0131r\u0131r. Bir uygulaman\u0131n performans\u0131 d\u00fc\u015ferse veya bir hata meydana gelirse, sorunun hangi servisten, hangi pod&#8217;dan veya hangi d\u00fc\u011f\u00fcmden kaynakland\u0131\u011f\u0131n\u0131 h\u0131zl\u0131ca tespit etmek kritik \u00f6nem ta\u015f\u0131r. Geleneksel izleme ara\u00e7lar\u0131 genellikle statik altyap\u0131lar i\u00e7in tasarlanm\u0131\u015ft\u0131r ve Kubernetes&#8217;in pod&#8217;lar\u0131n, servislerin ve a\u011f politikalar\u0131n\u0131n s\u00fcrekli de\u011fi\u015fti\u011fi yap\u0131s\u0131na uyum sa\u011flamakta zorlan\u0131r.<\/p>\n<p>G\u00f6zlemlenebilirlik, sadece sistemin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 de\u011fil, <em>neden<\/em> \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 veya <em>neden<\/em> \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 anlamam\u0131z\u0131 sa\u011flar. \u00dc\u00e7 temel s\u00fctunu vard\u0131r:<\/p>\n<p>*   <strong>Metrikler (Metrics):<\/strong> Say\u0131sal verilerdir ve zaman serileri halinde toplan\u0131r. CPU kullan\u0131m\u0131, bellek t\u00fcketimi, a\u011f trafi\u011fi, istek gecikme s\u00fcreleri gibi performans g\u00f6stergelerini i\u00e7erir. Metrikler, sistemin genel durumu hakk\u0131nda h\u0131zl\u0131 bir bak\u0131\u015f sunar.<br \/>\n*   <strong>Loglar (Logs):<\/strong> Uygulamalar ve sistem bile\u015fenleri taraf\u0131ndan \u00fcretilen olay kay\u0131tlar\u0131d\u0131r. Hata mesajlar\u0131, uyar\u0131lar, bilgi notlar\u0131 gibi yap\u0131land\u0131r\u0131lm\u0131\u015f veya yap\u0131land\u0131r\u0131lmam\u0131\u015f metin verileridir. Loglar, belirli bir olay\u0131n veya hatan\u0131n detaylar\u0131n\u0131 anlamak i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong>Trace&#8217;ler (Traces):<\/strong> Da\u011f\u0131t\u0131k bir sistemde bir iste\u011fin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc, farkl\u0131 servisler aras\u0131ndaki etkile\u015fimleri ve bu etkile\u015fimlerin s\u00fcrelerini g\u00f6steren verilerdir. Trace&#8217;ler, mikroservis mimarilerinde performans darbo\u011fazlar\u0131n\u0131 ve hatalar\u0131 tespit etmek i\u00e7in \u00f6zellikle faydal\u0131d\u0131r.<\/p>\n<p>TOBS, bu \u00fc\u00e7 s\u00fctundan metrikler ve loglar \u00fczerine odaklanarak Kubernetes i\u00e7in g\u00fc\u00e7l\u00fc bir g\u00f6zlemlenebilirlik temeli olu\u015fturur.<\/p>\n<h3>TOBS: The Observability Stack Nedir?<\/h3>\n<p>TOBS, Kubernetes ortamlar\u0131 i\u00e7in \u00f6zel olarak tasarlanm\u0131\u015f, a\u00e7\u0131k kaynakl\u0131 ve entegre bir g\u00f6zlemlenebilirlik y\u0131\u011f\u0131n\u0131d\u0131r. Genellikle a\u015fa\u011f\u0131daki temel bile\u015fenleri i\u00e7erir:<\/p>\n<p>*   <strong>Prometheus:<\/strong> Metrik toplama ve depolama motoru. Kubernetes&#8217;in dinamik yap\u0131s\u0131na uygun servis ke\u015ffi yetenekleri ile \u00f6ne \u00e7\u0131kar.<br \/>\n*   <strong>Grafana:<\/strong> Metrikleri ve loglar\u0131 g\u00f6rselle\u015ftirmek i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir g\u00f6sterge paneli (dashboard) arac\u0131.<br \/>\n*   <strong>Loki:<\/strong> Prometheus&#8217;tan ilham alan, log toplama ve indeksleme sistemi. Loglar\u0131 etiket tabanl\u0131 olarak saklar ve sorgular.<br \/>\n*   <strong>Alertmanager:<\/strong> Prometheus&#8217;tan gelen uyar\u0131lar\u0131 i\u015fleyen, grupland\u0131ran, deduplicate eden ve \u00e7e\u015fitli kanallara (Slack, e-posta vb.) g\u00f6nderen bir uyar\u0131 y\u00f6netim arac\u0131.<br \/>\n*   <strong>kube-state-metrics:<\/strong> Kubernetes API&#8217;s\u0131ndan metrikler toplayan bir servis. Pod durumu, da\u011f\u0131t\u0131m durumu, d\u00fc\u011f\u00fcm durumu gibi Kubernetes objelerinin durumunu izler.<br \/>\n*   <strong>node-exporter:<\/strong> Sunucu d\u00fczeyindeki i\u015fletim sistemi metriklerini (CPU, bellek, disk, a\u011f) toplayan bir ajan.<br \/>\n*   <strong>Promtail:<\/strong> Loki i\u00e7in log toplama ajan\u0131. Pod&#8217;lardan ve d\u00fc\u011f\u00fcmlerden loglar\u0131 toplar ve Loki&#8217;ye g\u00f6nderir.<\/p>\n<p>Bu bile\u015fenler, bir araya gelerek Kubernetes k\u00fcmenizin ve \u00fczerinde \u00e7al\u0131\u015fan uygulamalar\u0131n her katman\u0131ndan kapsaml\u0131 g\u00f6r\u00fcn\u00fcrl\u00fck sa\u011flar.<\/p>\n<h3>Neden Kubernetes i\u00e7in TOBS?<\/h3>\n<p>TOBS&#8217;un Kubernetes i\u00e7in tercih edilmesinin bir\u00e7ok nedeni vard\u0131r:<\/p>\n<p>*   <strong>A\u00e7\u0131k Kaynak ve Topluluk Deste\u011fi:<\/strong> T\u00fcm bile\u015fenler a\u00e7\u0131k kaynakl\u0131d\u0131r, bu da esneklik, \u015feffafl\u0131k ve geni\u015f bir topluluk deste\u011fi anlam\u0131na gelir.<br \/>\n*   <strong>Kubernetes Yerel Entegrasyon:<\/strong> Prometheus&#8217;un servis ke\u015ffi mekanizmalar\u0131, <code>ServiceMonitor<\/code> ve <code>PodMonitor<\/code> gibi CRD&#8217;ler (Custom Resource Definitions) sayesinde Kubernetes kaynaklar\u0131n\u0131 otomatik olarak ke\u015ffedebilir ve metriklerini toplayabilir.<br \/>\n*   <strong>Kapsaml\u0131 G\u00f6zlemlenebilirlik:<\/strong> Metrikler, loglar ve uyar\u0131lar i\u00e7in tek bir entegre \u00e7\u00f6z\u00fcm sunar. Bu, farkl\u0131 ara\u00e7lar aras\u0131nda ge\u00e7i\u015f yapma ihtiyac\u0131n\u0131 azalt\u0131r.<br \/>\n*   <strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Bile\u015fenler, b\u00fcy\u00fck \u00f6l\u00e7ekli Kubernetes k\u00fcmelerinde bile performans g\u00f6sterecek \u015fekilde tasarlanm\u0131\u015ft\u0131r. Uzun vadeli depolama i\u00e7in Thanos, Mimir veya Cortex gibi \u00e7\u00f6z\u00fcmlerle entegre edilebilir.<br \/>\n*   <strong>Esneklik ve \u00d6zelle\u015ftirilebilirlik:<\/strong> Grafana&#8217;n\u0131n zengin g\u00f6sterge paneli yetenekleri ve PromQL\/LogQL gibi g\u00fc\u00e7l\u00fc sorgu dilleri sayesinde, ihtiya\u00e7lar\u0131n\u0131za \u00f6zel izleme ve analiz \u00e7\u00f6z\u00fcmleri olu\u015fturabilirsiniz.<br \/>\n*   <strong>Maliyet Etkinli\u011fi:<\/strong> A\u00e7\u0131k kaynakl\u0131 olmas\u0131, lisans maliyetlerinden tasarruf sa\u011flar. Bulut ortamlar\u0131nda altyap\u0131 maliyetleri optimize edilebilir.<\/p>\n<h3>TOBS Bile\u015fenlerine Derinlemesine Bak\u0131\u015f<\/h3>\n<p>TOBS&#8217;u olu\u015fturan temel bile\u015fenleri daha yak\u0131ndan inceleyelim.<\/p>\n<h4>Prometheus: Metriklerin Kalbi<\/h4>\n<p>Prometheus, CNCF (Cloud Native Computing Foundation) taraf\u0131ndan ink\u00fcbe edilen ve mezun olan ilk projelerden biridir. Temel \u00f6zellikleri \u015funlard\u0131r:<\/p>\n<p>*   <strong>\u00c7ekme Modeli (Pull Model):<\/strong> Hedeflerden metrikleri HTTP \u00fczerinden \u00e7eker. Bu, \u00f6zellikle servis ke\u015ffi ile birle\u015fti\u011finde Kubernetes gibi dinamik ortamlarda \u00e7ok etkilidir.<br \/>\n*   <strong>\u00c7ok Boyutlu Veri Modeli:<\/strong> Metrikler, anahtar-de\u011fer \u00e7iftleri (etiketler) ile etiketlenir. Bu etiketler, metrikleri filtrelemek ve grupland\u0131rmak i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, <code>http_requests_total{method=\"GET\", status=\"200\", instance=\"web-01\"}<\/code>.<br \/>\n*   <strong>PromQL (Prometheus Query Language):<\/strong> G\u00fc\u00e7l\u00fc ve esnek bir sorgu dilidir. Metrikleri zaman serileri \u00fczerinde toplamak, filtrelemek, birle\u015ftirmek ve matematiksel i\u015flemler yapmak i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong>Servis Ke\u015ffi:<\/strong> Kubernetes API&#8217;si ile entegre olarak, yeni pod&#8217;lar\u0131, servisleri ve endpoint&#8217;leri otomatik olarak ke\u015ffeder ve izlemeye ba\u015flar.<br \/>\n*   <strong>Yerel Depolama:<\/strong> Metrikleri yerel diskte zaman serisi veritaban\u0131 olarak depolar. Genellikle k\u0131sa vadeli depolama (birka\u00e7 hafta) i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>Prometheus, Kubernetes k\u00fcmenizin ve uygulamalar\u0131n\u0131z\u0131n performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 s\u00fcrekli olarak izlemek i\u00e7in temel veri kayna\u011f\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Grafana: G\u00f6rselle\u015ftirme ve G\u00f6sterge Panelleri<\/h4>\n<p>Grafana, metrikleri, loglar\u0131 ve di\u011fer zaman serisi verilerini g\u00f6rselle\u015ftirmek i\u00e7in kullan\u0131lan pop\u00fcler bir ara\u00e7t\u0131r.<\/p>\n<p>*   <strong>\u00c7oklu Veri Kayna\u011f\u0131 Deste\u011fi:<\/strong> Prometheus, Loki, Elasticsearch, InfluxDB gibi bir\u00e7ok farkl\u0131 veri kayna\u011f\u0131na ba\u011flanabilir.<br \/>\n*   <strong>Esnek G\u00f6sterge Panelleri:<\/strong> \u00c7e\u015fitli panel tipleri (grafikler, tablolar, tek de\u011fer g\u00f6stergeleri, \u0131s\u0131 haritalar\u0131) ile \u00f6zelle\u015ftirilebilir g\u00f6sterge panelleri olu\u015fturma imkan\u0131 sunar.<br \/>\n*   <strong>\u015eablonlama (Templating):<\/strong> Dinamik g\u00f6sterge panelleri olu\u015fturmak i\u00e7in de\u011fi\u015fkenler kullan\u0131r. \u00d6rne\u011fin, tek bir g\u00f6sterge paneli ile farkl\u0131 Kubernetes namespace&#8217;lerini veya pod&#8217;lar\u0131n\u0131 izleyebilirsiniz.<br \/>\n*   <strong>Uyar\u0131 Entegrasyonu:<\/strong> Grafana&#8217;n\u0131n kendisi de uyar\u0131 kurallar\u0131 tan\u0131mlayabilir ve Alertmanager&#8217;a veya do\u011frudan bildirim kanallar\u0131na g\u00f6nderebilir.<br \/>\n*   <strong>Kullan\u0131c\u0131 ve Rol Y\u00f6netimi:<\/strong> Ekiplerinize \u00f6zel eri\u015fim izinleri ve g\u00f6sterge paneli payla\u015f\u0131mlar\u0131 yapman\u0131z\u0131 sa\u011flar.<\/p>\n<p>Grafana, TOBS&#8217;ta Prometheus ve Loki&#8217;den gelen ham verileri anlaml\u0131 g\u00f6rselle\u015ftirmelere d\u00f6n\u00fc\u015ft\u00fcrerek sistem durumunu kolayca kavraman\u0131za yard\u0131mc\u0131 olur.<\/p>\n<h4>Loki: Log Y\u00f6netimi Basitle\u015ftirildi<\/h4>\n<p>Loki, Prometheus&#8217;tan esinlenerek tasarlanm\u0131\u015f, log toplama ve indeksleme sistemidir. Geleneksel log y\u00f6netim sistemlerinden farkl\u0131 bir yakla\u015f\u0131ma sahiptir:<\/p>\n<p>*   <strong>Etiket Tabanl\u0131 \u0130ndeksleme:<\/strong> Loglar\u0131n i\u00e7eri\u011fini indekslemek yerine, Prometheus&#8217;a benzer \u015fekilde loglar\u0131 etiketler (metadata) \u00fczerinden indeksler. Bu, daha d\u00fc\u015f\u00fck maliyetli ve daha h\u0131zl\u0131 bir indeksleme sa\u011flar.<br \/>\n*   <strong>Promtail Ajan\u0131:<\/strong> Kubernetes d\u00fc\u011f\u00fcmlerinde \u00e7al\u0131\u015fan Promtail, log dosyalar\u0131n\u0131 toplar, etiketler ekler ve Loki&#8217;ye g\u00f6nderir. <code>kubernetes_sd_config<\/code> kullanarak pod&#8217;lar\u0131n ve konteynerlerin metadata&#8217;s\u0131n\u0131 otomatik olarak etiket olarak ekleyebilir.<br \/>\n*   <strong>LogQL (Loki Query Language):<\/strong> PromQL&#8217;e benzer bir s\u00f6zdizimine sahip, loglar\u0131 sorgulamak i\u00e7in kullan\u0131lan bir dildir. Etiketlere g\u00f6re filtreleme, metin aramalar\u0131 ve log sat\u0131rlar\u0131 \u00fczerinde \u00e7e\u015fitli i\u015flemler yapabilir.<br \/>\n*   <strong>S\u0131k\u0131\u015ft\u0131rma ve Nesne Depolama:<\/strong> Loglar\u0131 s\u0131k\u0131\u015ft\u0131rarak ve S3 gibi nesne depolama hizmetlerinde saklayarak maliyetleri optimize eder.<\/p>\n<p>Loki, Kubernetes ortam\u0131ndaki log karma\u015fas\u0131n\u0131 y\u00f6netmek ve h\u0131zl\u0131ca anlaml\u0131 bilgilere ula\u015fmak i\u00e7in hafif ve etkili bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<h4>Alertmanager: Ak\u0131ll\u0131 Uyar\u0131 Y\u00f6netimi<\/h4>\n<p>Alertmanager, Prometheus taraf\u0131ndan tetiklenen uyar\u0131lar\u0131 i\u015fler.<\/p>\n<p>*   <strong>Uyar\u0131 Gruplama:<\/strong> Benzer uyar\u0131lar\u0131 tek bir bildirim alt\u0131nda toplar, b\u00f6ylece ayn\u0131 anda bir\u00e7ok uyar\u0131 tetiklendi\u011finde bildirim selini \u00f6nler.<br \/>\n*   <strong>Deduplication:<\/strong> Ayn\u0131 uyar\u0131lar\u0131n tekrar tekrar g\u00f6nderilmesini engeller.<br \/>\n*   <strong>Y\u00f6nlendirme (Routing):<\/strong> Uyar\u0131lar\u0131 \u00f6nceliklerine veya etiketlerine g\u00f6re farkl\u0131 al\u0131c\u0131lara (ekiplere, kanallara) y\u00f6nlendirir.<br \/>\n*   <strong>Susturma (Silencing):<\/strong> Bak\u0131m pencereleri veya bilinen sorunlar s\u0131ras\u0131nda uyar\u0131lar\u0131 ge\u00e7ici olarak susturma imkan\u0131 sunar.<br \/>\n*   <strong>\u00c7oklu Bildirim Kanallar\u0131:<\/strong> Slack, e-posta, PagerDuty, VictorOps gibi bir\u00e7ok bildirim kanal\u0131n\u0131 destekler.<\/p>\n<p>Alertmanager, kritik sorunlar hakk\u0131nda do\u011fru ki\u015filerin, do\u011fru zamanda bilgilendirilmesini sa\u011flayarak operasyonel verimlili\u011fi art\u0131r\u0131r.<\/p>\n<h3>TOBS&#8217;u Kubernetes&#8217;e Kurulumu<\/h3>\n<p>TOBS&#8217;u Kubernetes k\u00fcmenize kurman\u0131n en kolay ve \u00f6nerilen yolu Helm kullanmakt\u0131r. Helm, Kubernetes uygulamalar\u0131n\u0131 paketlemek ve da\u011f\u0131tmak i\u00e7in bir paket y\u00f6neticisidir.<\/p>\n<h4>\u00d6n Ko\u015fullar<\/h4>\n<p>Kuruluma ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n ko\u015fullar\u0131n kar\u015f\u0131land\u0131\u011f\u0131ndan emin olun:<\/p>\n<p>*   <strong>\u00c7al\u0131\u015f\u0131r Durumda Bir Kubernetes K\u00fcmesi:<\/strong> Minikube, Kind, k3s veya herhangi bir bulut sa\u011flay\u0131c\u0131s\u0131n\u0131n (AWS EKS, Azure AKS, GCP GKE) y\u00f6netilen Kubernetes hizmeti olabilir.<br \/>\n*   <strong>kubectl:<\/strong> Kubernetes k\u00fcmenizle etkile\u015fim kurmak i\u00e7in <code>kubectl<\/code> komut sat\u0131r\u0131 arac\u0131 kurulu ve yap\u0131land\u0131r\u0131lm\u0131\u015f olmal\u0131d\u0131r.<br \/>\n*   <strong>Helm:<\/strong> Helm v3 veya \u00fczeri kurulu olmal\u0131d\u0131r.<\/p>\n<h4>Helm ile Kurulum<\/h4>\n<p>TOBS&#8217;u genellikle iki ana Helm grafi\u011fi ile kurar\u0131z: <code>kube-prometheus-stack<\/code> ve <code>loki-stack<\/code>.<\/p>\n<h5>1. Helm Repolar\u0131n\u0131 Ekleme<\/h5>\n<p>\u0130lk olarak, ilgili Helm repolar\u0131n\u0131 eklememiz gerekir:<\/p>\n<pre><code class=\"language-bash\">helm repo add prometheus-community https:\/\/prometheus-community.github.io\/helm-charts\nhelm repo add grafana https:\/\/grafana.github.io\/helm-charts\nhelm repo add loki https:\/\/grafana.github.io\/helm-charts\nhelm repo update<\/code><\/pre>\n<h5>2. kube-prometheus-stack Kurulumu<\/h5>\n<p><code>kube-prometheus-stack<\/code> grafi\u011fi, Prometheus, Grafana, Alertmanager, kube-state-metrics ve node-exporter gibi bir\u00e7ok bile\u015feni tek bir pakette kurar.<\/p>\n<p>Varsay\u0131lan yap\u0131land\u0131rma genellikle \u00e7o\u011fu senaryo i\u00e7in yeterlidir, ancak kaynak k\u0131s\u0131tlamalar\u0131, depolama ayarlar\u0131 veya servis t\u00fcrleri gibi belirli \u00f6zelle\u015ftirmeler i\u00e7in bir <code>values.yaml<\/code> dosyas\u0131 olu\u015fturmak iyi bir uygulamad\u0131r.<\/p>\n<p>\u00d6rnek <code>values.yaml<\/code> (minimal \u00f6zelle\u015ftirmelerle):<\/p>\n<pre><code class=\"language-yaml\"># prometheus-values.yaml\nalertmanager:\n  ingress:\n    enabled: true\n    hosts:\n      - alertmanager.your-domain.com # Kendi domaininizi kullan\u0131n\n  alertmanagerSpec:\n    retention: 120h # Uyar\u0131 ge\u00e7mi\u015fi saklama s\u00fcresi\ngrafana:\n  ingress:\n    enabled: true\n    hosts:\n      - grafana.your-domain.com # Kendi domaininizi kullan\u0131n\n    annotations:\n      kubernetes.io\/ingress.class: nginx # Kullan\u0131lan ingress controller tipine g\u00f6re de\u011fi\u015febilir\n  adminPassword: \"your-strong-password\" # G\u00fc\u00e7l\u00fc bir \u015fifre belirleyin\n  persistence:\n    enabled: true\n    storageClassName: standard # Kullan\u0131lan depolama s\u0131n\u0131f\u0131na g\u00f6re de\u011fi\u015fir\n    size: 10Gi\nprometheus:\n  prometheusSpec:\n    retention: 15d # Metrik saklama s\u00fcresi\n    storageSpec:\n      volumeClaimTemplate:\n        spec:\n          storageClassName: standard # Kullan\u0131lan depolama s\u0131n\u0131f\u0131na g\u00f6re de\u011fi\u015fir\n          accessModes: [\"ReadWriteOnce\"]\n          resources:\n            requests:\n              storage: 50Gi<\/code><\/pre>\n<p>Bu <code>values.yaml<\/code> dosyas\u0131n\u0131 kullanarak kurulumu yapal\u0131m:<\/p>\n<pre><code class=\"language-bash\">kubectl create namespace monitoring # E\u011fer yoksa monitoring namespace'ini olu\u015fturun\nhelm install prometheus prometheus-community\/kube-prometheus-stack \\\n  --namespace monitoring \\\n  -f prometheus-values.yaml<\/code><\/pre>\n<p>Kurulumun tamamlanmas\u0131n\u0131 bekleyin. Pod&#8217;lar\u0131n ve servislerin <code>monitoring<\/code> namespace&#8217;inde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 <code>kubectl get pods -n monitoring<\/code> komutuyla kontrol edebilirsiniz.<\/p>\n<h5>3. Loki Stack Kurulumu<\/h5>\n<p>Loki ve Promtail&#8217;i ayr\u0131 bir Helm grafi\u011fi ile kurar\u0131z.<\/p>\n<p>\u00d6rnek <code>loki-values.yaml<\/code>:<\/p>\n<pre><code class=\"language-yaml\"># loki-values.yaml\nloki:\n  persistence:\n    enabled: true\n    storageClassName: standard # Kullan\u0131lan depolama s\u0131n\u0131f\u0131na g\u00f6re de\u011fi\u015fir\n    size: 200Gi # Loglar i\u00e7in yeterli depolama alan\u0131\n  # Loki'nin ingress \u00fczerinden eri\u015filebilir olmas\u0131 i\u00e7in\n  ingress:\n    enabled: true\n    hosts:\n      - loki.your-domain.com # Kendi domaininizi kullan\u0131n\n    annotations:\n      kubernetes.io\/ingress.class: nginx\npromtail:\n  # Promtail'in t\u00fcm d\u00fc\u011f\u00fcmlere DaemonSet olarak kurulmas\u0131n\u0131 sa\u011flar\n  # Kubernetes pod'lar\u0131ndan loglar\u0131 otomatik olarak toplar\n  # Bu k\u0131s\u0131m genellikle varsay\u0131lan de\u011ferleriyle yeterlidir<\/code><\/pre>\n<p>Bu <code>values.yaml<\/code> dosyas\u0131n\u0131 kullanarak kurulumu yapal\u0131m:<\/p>\n<pre><code class=\"language-bash\">helm install loki loki\/loki-stack \\\n  --namespace monitoring \\\n  -f loki-values.yaml<\/code><\/pre>\n<p>Promtail&#8217;in her Kubernetes d\u00fc\u011f\u00fcm\u00fcnde bir pod olarak \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve loglar\u0131 toplamaya ba\u015flad\u0131\u011f\u0131n\u0131 kontrol edin.<\/p>\n<h4>Yap\u0131land\u0131rma ve Entegrasyon<\/h4>\n<p>Kurulumdan sonra, Grafana&#8217;n\u0131n Loki&#8217;yi veri kayna\u011f\u0131 olarak tan\u0131mas\u0131 ve Prometheus&#8217;un uygulamalar\u0131n\u0131zdan metrikleri toplamas\u0131 i\u00e7in baz\u0131 yap\u0131land\u0131rmalar gerekebilir.<\/p>\n<h5>Grafana&#8217;ya Loki Veri Kayna\u011f\u0131 Ekleme<\/h5>\n<p>E\u011fer Grafana&#8217;y\u0131 <code>kube-prometheus-stack<\/code> ile kurduysan\u0131z, Prometheus zaten veri kayna\u011f\u0131 olarak ekli olacakt\u0131r. Loki&#8217;yi eklemek i\u00e7in:<\/p>\n<p>1.  Grafana paneline eri\u015fin (\u00f6rne\u011fin <code>grafana.your-domain.com<\/code>).<br \/>\n2.  Sol men\u00fcden &#8220;Configuration&#8221; (Di\u015fli simgesi) -> &#8220;Data Sources&#8221; se\u00e7ene\u011fine gidin.<br \/>\n3.  &#8220;Add data source&#8221; butonuna t\u0131klay\u0131n ve &#8220;Loki&#8221;yi se\u00e7in.<br \/>\n4.  URL alan\u0131na Loki servisi adresini girin. E\u011fer <code>loki<\/code> servisi <code>monitoring<\/code> namespace&#8217;inde ise, URL <code>http:\/\/loki.monitoring.svc.cluster.local:3100<\/code> olacakt\u0131r. E\u011fer ingress \u00fczerinden eri\u015fiyorsan\u0131z, ingress adresini kullan\u0131n.<br \/>\n5.  &#8220;Save &#038; Test&#8221; butonuna t\u0131klayarak ba\u011flant\u0131y\u0131 test edin.<\/p>\n<h5>Uygulama Metriklerini Toplama (Prometheus)<\/h5>\n<p>Uygulamalar\u0131n\u0131z\u0131n metriklerini Prometheus&#8217;a g\u00f6ndermek i\u00e7in genellikle iki y\u00f6ntem kullan\u0131l\u0131r:<\/p>\n<p>1.  <strong>Prometheus Client K\u00fct\u00fcphaneleri:<\/strong> Uygulaman\u0131z\u0131n i\u00e7ine Prometheus client k\u00fct\u00fcphanelerini entegre ederek kendi metriklerinizi a\u00e7\u0131\u011fa \u00e7\u0131kar\u0131n (\u00f6rne\u011fin <code>\/metrics<\/code> endpoint&#8217;inde).<br \/>\n2.  <strong>ServiceMonitor \/ PodMonitor:<\/strong> Prometheus Operator, <code>ServiceMonitor<\/code> ve <code>PodMonitor<\/code> adl\u0131 Custom Resource Definitions (CRD&#8217;ler) sa\u011flar. Bu CRD&#8217;ler, Prometheus&#8217;un hangi servislerden veya pod&#8217;lardan metrikleri \u00e7ekece\u011fini tan\u0131mlaman\u0131za olanak tan\u0131r.<\/p>\n<p>\u00d6rne\u011fin, uygulaman\u0131z\u0131n <code>\/metrics<\/code> endpoint&#8217;inde metrikleri yay\u0131nlad\u0131\u011f\u0131n\u0131 varsayal\u0131m:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: monitoring.coreos.com\/v1\nkind: ServiceMonitor\nmetadata:\n  name: my-app-monitor\n  namespace: my-app-namespace # Uygulaman\u0131z\u0131n namespace'i\nspec:\n  selector:\n    matchLabels:\n      app: my-app # Uygulaman\u0131z\u0131n label'\u0131\n  endpoints:\n  - port: http-metrics # Uygulaman\u0131z\u0131n metrik endpoint'inin servis port ad\u0131\n    path: \/metrics<\/code><\/pre>\n<p>Bu <code>ServiceMonitor<\/code> objesini olu\u015fturdu\u011funuzda, Prometheus otomatik olarak <code>my-app<\/code> etiketine sahip servisleri ke\u015ffedecek ve <code>http-metrics<\/code> portundaki <code>\/metrics<\/code> yolundan metrikleri toplamaya ba\u015flayacakt\u0131r.<\/p>\n<h3>TOBS ile Kubernetes \u0130zleme<\/h3>\n<p>Kurulum tamamland\u0131ktan sonra, TOBS&#8217;u Kubernetes k\u00fcmenizi izlemek i\u00e7in aktif olarak kullanmaya ba\u015flayabiliriz.<\/p>\n<h4>Metrikler ve G\u00f6sterge Panelleri<\/h4>\n<p>Grafana, Kubernetes izlemesi i\u00e7in bir\u00e7ok haz\u0131r g\u00f6sterge paneli \u015fablonu sunar. Bunlar\u0131 i\u00e7e aktararak h\u0131zla ba\u015flayabilirsiniz:<\/p>\n<p>*   <strong>Kubernetes \/ Compute Resources \/ Cluster (ID: 1860):<\/strong> K\u00fcme genelindeki CPU, bellek, a\u011f kullan\u0131m\u0131 gibi temel kaynak metriklerini g\u00f6sterir.<br \/>\n*   <strong>Kubernetes \/ Compute Resources \/ Namespace (ID: 1861):<\/strong> Namespace baz\u0131nda kaynak t\u00fcketimini izler.<br \/>\n*   <strong>Kubernetes \/ Compute Resources \/ Pod (ID: 1862):<\/strong> Pod d\u00fczeyinde detayl\u0131 kaynak kullan\u0131m\u0131n\u0131 g\u00f6sterir.<br \/>\n*   <strong>Node Exporter Full (ID: 1860):<\/strong> D\u00fc\u011f\u00fcm d\u00fczeyindeki i\u015fletim sistemi metriklerini (disk I\/O, CPU, bellek, a\u011f) detayl\u0131 olarak sunar.<br \/>\n*   <strong>Kube-state-metrics (ID: 10856):<\/strong> Kubernetes API&#8217;s\u0131ndan toplanan pod durumu, da\u011f\u0131t\u0131m durumu, PVC durumu gibi metrikleri g\u00f6rselle\u015ftirir.<\/p>\n<p>Bu panelleri Grafana&#8217;ya &#8220;Import&#8221; \u00f6zelli\u011fi ile ekleyerek k\u00fcmenizin sa\u011fl\u0131k durumunu an\u0131nda g\u00f6rebilirsiniz. Kendi \u00f6zel g\u00f6sterge panellerinizi olu\u015fturmak i\u00e7in PromQL&#8217;i kullanarak Prometheus metriklerini sorgulayabilirsiniz.<\/p>\n<p><strong>\u00d6rnek PromQL sorgular\u0131:<\/strong><\/p>\n<p>*   T\u00fcm d\u00fc\u011f\u00fcmlerin ortalama CPU kullan\u0131m\u0131: <code>avg(node_cpu_seconds_total{mode=\"idle\"}) by (instance)<\/code><br \/>\n*   Belirli bir namespace&#8217;deki pod&#8217;lar\u0131n bellek kullan\u0131m\u0131: <code>sum(container_memory_usage_bytes{namespace=\"my-app-namespace\", container!=\"\"}) by (pod)<\/code><br \/>\n*   HTTP isteklerinin gecikme s\u00fcresi (histogram): <code>histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, job))<\/code><\/p>\n<h4>Log Y\u00f6netimi ve Analizi<\/h4>\n<p>Loki ve Promtail, Kubernetes loglar\u0131n\u0131 merkezi bir yerde toplar. Grafana&#8217;n\u0131n &#8220;Explore&#8221; \u00f6zelli\u011fi veya \u00f6zel g\u00f6sterge panelleri arac\u0131l\u0131\u011f\u0131yla loglar\u0131 sorgulayabilir ve analiz edebilirsiniz.<\/p>\n<p>1.  Grafana&#8217;da &#8220;Explore&#8221; (Pusula simgesi) b\u00f6l\u00fcm\u00fcne gidin.<br \/>\n2.  Veri kayna\u011f\u0131 olarak Loki&#8217;yi se\u00e7in.<br \/>\n3.  LogQL kullanarak sorgular\u0131n\u0131z\u0131 yaz\u0131n.<\/p>\n<p><strong>\u00d6rnek LogQL sorgular\u0131:<\/strong><\/p>\n<p>*   Belirli bir namespace&#8217;deki t\u00fcm loglar: <code>{namespace=\"my-app-namespace\"}<\/code><br \/>\n*   Belirli bir pod&#8217;daki hata loglar\u0131: <code>{namespace=\"my-app-namespace\", pod=\"my-app-pod-xyz\"} |= \"error\"<\/code><br \/>\n*   Bir uygulaman\u0131n son 5 dakikadaki HTTP 500 hatalar\u0131: <code>{app=\"my-app\"} |= \"HTTP 500\"<\/code><br \/>\n*   Loglar\u0131 zaman damgas\u0131na g\u00f6re filtreleme ve s\u0131ralama: <code>{namespace=\"my-app-namespace\"} | logfmt | level = \"error\"<\/code><\/p>\n<p>Loglar ve metrikleri bir araya getirerek, bir performans d\u00fc\u015f\u00fc\u015f\u00fcn\u00fcn veya hatan\u0131n nedenini daha h\u0131zl\u0131 anlayabilirsiniz. \u00d6rne\u011fin, bir metrik grafi\u011finde CPU kullan\u0131m\u0131nda ani bir art\u0131\u015f g\u00f6rd\u00fc\u011f\u00fcn\u00fczde, ayn\u0131 zaman dilimindeki loglara bakarak sorunun k\u00f6k nedenini (\u00f6rne\u011fin, bir uygulama hatas\u0131 veya yo\u011fun bir istek ak\u0131\u015f\u0131) tespit edebilirsiniz.<\/p>\n<h4>Uyar\u0131 ve Bildirimler<\/h4>\n<p>Prometheus, belirli ko\u015fullar kar\u015f\u0131land\u0131\u011f\u0131nda uyar\u0131lar\u0131 tetiklemek i\u00e7in <code>PrometheusRule<\/code> kaynaklar\u0131n\u0131 kullan\u0131r. Bu uyar\u0131lar Alertmanager&#8217;a g\u00f6nderilir ve Alertmanager taraf\u0131ndan i\u015flenir.<\/p>\n<p><strong>\u00d6rnek PrometheusRule (bir YAML dosyas\u0131 olarak tan\u0131mlan\u0131r):<\/strong><\/p>\n<pre><code class=\"language-yaml\">apiVersion: monitoring.coreos.com\/v1\nkind: PrometheusRule\nmetadata:\n  name: kubernetes-critical-alerts\n  namespace: monitoring\nspec:\n  groups:\n  - name: kubernetes-critical\n    rules:\n    - alert: HighCPULoad\n      expr: sum(node_cpu_seconds_total{mode=\"idle\"}) by (instance) < 0.2 # CPU bo\u015fta kalma s\u00fcresi %20'nin alt\u0131na d\u00fc\u015ferse\n      for: 5m\n      labels:\n        severity: critical\n      annotations:\n        summary: \"Node {{ $labels.instance }} has high CPU load\"\n        description: \"CPU utilization on node {{ $labels.instance }} is above 80% for 5 minutes.\"\n    - alert: PodCrashLooping\n      expr: sum(kube_pod_container_status_restarts_total) by (namespace, pod, container) > 5 # Bir pod 5 dakikada 5'ten fazla yeniden ba\u015flarsa\n      for: 5m\n      labels:\n        severity: warning\n      annotations:\n        summary: \"Pod {{ $labels.namespace }}\/{{ $labels.pod }} is crashlooping\"\n        description: \"Container {{ $labels.container }} in pod {{ $labels.namespace }}\/{{ $labels.pod }} has restarted more than 5 times in the last 5 minutes.\"<\/code><\/pre>\n<p>Bu kural\u0131 k\u00fcmenize uygulad\u0131\u011f\u0131n\u0131zda, Prometheus belirtilen ko\u015fullar kar\u015f\u0131land\u0131\u011f\u0131nda uyar\u0131lar\u0131 tetikleyecektir. Alertmanager&#8217;\u0131 Slack, e-posta veya di\u011fer bildirim kanallar\u0131na uyar\u0131lar\u0131 g\u00f6nderecek \u015fekilde yap\u0131land\u0131rman\u0131z gerekir. Alertmanager&#8217;\u0131n yap\u0131land\u0131rmas\u0131 genellikle <code>kube-prometheus-stack<\/code> Helm grafi\u011finin <code>values.yaml<\/code> dosyas\u0131nda yap\u0131l\u0131r.<\/p>\n<pre><code class=\"language-yaml\"># prometheus-values.yaml i\u00e7inde alertmanager b\u00f6l\u00fcm\u00fc\nalertmanager:\n  config:\n    global:\n      resolve_timeout: 5m\n    route:\n      group_by: ['alertname', 'cluster', 'service']\n      group_wait: 30s\n      group_interval: 5m\n      repeat_interval: 1h\n      receiver: 'default-receiver'\n    receivers:\n      - name: 'default-receiver'\n        webhook_configs:\n          - url: 'https:\/\/hooks.slack.com\/services\/T00000000\/B00000000\/XXXXXXXXXXXXXXXXXXXXXXXX' # Slack webhook URL'niz\n      - name: 'email-receiver'\n        email_configs:\n          - to: 'your-email@example.com'\n            from: 'alertmanager@example.com'\n            smarthost: 'smtp.example.com:587'\n            auth_username: 'smtp_user'\n            auth_password: 'smtp_password'<\/code><\/pre>\n<h3>En \u0130yi Uygulamalar ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>TOBS kurulumunuzdan en iyi \u015fekilde yararlanmak i\u00e7in baz\u0131 en iyi uygulamalar ve ipu\u00e7lar\u0131:<\/p>\n<p>*   <strong>Kaynak Y\u00f6netimi:<\/strong> TOBS bile\u015fenleri (\u00f6zellikle Prometheus ve Loki) \u00f6nemli miktarda CPU, bellek ve depolama alan\u0131 t\u00fcketebilir. Pod&#8217;lar\u0131n\u0131za uygun kaynak limitleri ve istekleri (<code>resources.limits<\/code> ve <code>resources.requests<\/code>) tan\u0131mlay\u0131n.<br \/>\n*   <strong>Depolama Stratejisi:<\/strong> Prometheus&#8217;un yerel depolamas\u0131 k\u0131sa vadeli metrikler i\u00e7in iyidir. Uzun vadeli metrik depolama i\u00e7in Thanos, Mimir veya Cortex gibi \u00e7\u00f6z\u00fcmleri de\u011ferlendirin. Loki i\u00e7in ise loglar\u0131 S3 gibi nesne depolama hizmetlerinde saklay\u0131n.<br \/>\n*   <strong>Y\u00fcksek Eri\u015filebilirlik (HA):<\/strong> \u00dcretim ortamlar\u0131nda Prometheus ve Alertmanager&#8217;\u0131 y\u00fcksek eri\u015filebilirlik modunda \u00e7al\u0131\u015ft\u0131r\u0131n. Prometheus i\u00e7in iki ayr\u0131 Prometheus sunucusu kurabilir, Alertmanager i\u00e7in ise birden fazla Alertmanager pod&#8217;u \u00e7al\u0131\u015ft\u0131rabilirsiniz.<br \/>\n*   <strong>G\u00fcvenlik:<\/strong><br \/>\n    *   Grafana&#8217;ya eri\u015fimi \u015fifre veya SSO ile koruyun.<br \/>\n    *   TOBS bile\u015fenleri i\u00e7in Kubernetes RBAC (Role-Based Access Control) kurallar\u0131n\u0131 uygulay\u0131n.<br \/>\n    *   Gerekirse a\u011f politikalar\u0131 (Network Policies) ile TOBS bile\u015fenleri aras\u0131ndaki ileti\u015fimi k\u0131s\u0131tlay\u0131n.<br \/>\n*   <strong>\u00d6zelle\u015ftirme ve Otomasyon:<\/strong> Helm <code>values.yaml<\/code> dosyalar\u0131n\u0131z\u0131 versiyon kontrol sisteminde (Git) y\u00f6netin. CI\/CD pipeline&#8217;lar\u0131n\u0131za Helm chart g\u00fcncellemelerini entegre edin.<br \/>\n*   <strong>S\u00fcrekli \u0130yile\u015ftirme:<\/strong> \u0130zleme ihtiya\u00e7lar\u0131n\u0131z zamanla de\u011fi\u015fecektir. G\u00f6sterge panellerinizi ve uyar\u0131 kurallar\u0131n\u0131z\u0131 d\u00fczenli olarak g\u00f6zden ge\u00e7irin ve g\u00fcncelleyin. Yeni uygulamalar ekledik\u00e7e veya mevcut uygulamalar\u0131 de\u011fi\u015ftirdik\u00e7e izleme stratejinizi adapte edin.<br \/>\n*   <strong>Korelasyon:<\/strong> Metrikler ve loglar aras\u0131ndaki korelasyonu anlamak, sorun giderme s\u00fcrecini h\u0131zland\u0131r\u0131r. Grafana&#8217;da metrik ve log panellerini yan yana getirerek veya Grafana&#8217;n\u0131n &#8220;Logs&#8221; panelindeki metrik entegrasyonlar\u0131n\u0131 kullanarak bu korelasyonu sa\u011flay\u0131n.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Kubernetes, modern altyap\u0131lar\u0131n omurgas\u0131 haline gelirken, g\u00f6zlemlenebilirlik de operasyonel m\u00fckemmelli\u011fin vazge\u00e7ilmez bir par\u00e7as\u0131 olmu\u015ftur. TOBS (The Observability Stack), Prometheus, Grafana, Loki ve Alertmanager gibi g\u00fc\u00e7l\u00fc a\u00e7\u0131k kaynakl\u0131 ara\u00e7lar\u0131 bir araya getirerek Kubernetes k\u00fcmeleriniz i\u00e7in kapsaml\u0131 ve \u00f6l\u00e7eklenebilir bir izleme \u00e7\u00f6z\u00fcm\u00fc sunar. Bu makalede ele ald\u0131\u011f\u0131m\u0131z kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131yla, k\u00fcmenizin ve uygulamalar\u0131n\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131, performans\u0131n\u0131 ve davran\u0131\u015f\u0131n\u0131 derinlemesine anlayabilir, sorunlar\u0131 proaktif olarak tespit edebilir ve h\u0131zl\u0131ca \u00e7\u00f6z\u00fcme kavu\u015fturabilirsiniz. TOBS&#8217;u benimsemek, Kubernetes yolculu\u011funuzda daha fazla g\u00fcven ve kontrol sahibi olman\u0131z\u0131 sa\u011flayacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu\nKubernetes, modern uygulama geli\u015ftirmenin ve da\u011f\u0131t\u0131m\u0131n\u0131n temel ta\u015f\u0131 haline gel","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":[1328],"tags":[],"class_list":{"0":"post-33048","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-bash","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>TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu - 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\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu\" \/>\n<meta property=\"og:description\" content=\"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu Kubernetes, modern uygulama geli\u015ftirmenin ve da\u011f\u0131t\u0131m\u0131n\u0131n temel ta\u015f\u0131 haline gel\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-28T21:41:02+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=\"17 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu\",\"datePublished\":\"2025-10-28T21:41:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/\"},\"wordCount\":2804,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Bash\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/\",\"name\":\"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-28T21:41:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu\"}]},{\"@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":"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu - 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\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu","og_description":"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu Kubernetes, modern uygulama geli\u015ftirmenin ve da\u011f\u0131t\u0131m\u0131n\u0131n temel ta\u015f\u0131 haline gel","og_url":"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-28T21:41:02+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"17 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu","datePublished":"2025-10-28T21:41:02+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/"},"wordCount":2804,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Bash"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/","name":"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-28T21:41:02+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/tobs-the-observability-stack-ile-kubernetes-izleme-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"TOBS, The Observability Stack, ile Kubernetes \u0130zleme Kurulumu"}]},{"@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\/33048","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=33048"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33048\/revisions"}],"predecessor-version":[{"id":33049,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33048\/revisions\/33049"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33048"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33048"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}