{"id":32287,"date":"2025-10-19T23:40:50","date_gmt":"2025-10-19T20:40:50","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32287"},"modified":"2025-10-19T23:40:50","modified_gmt":"2025-10-19T20:40:50","slug":"digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/","title":{"rendered":"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu"},"content":{"rendered":"<p><body><\/p>\n<h2>DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu<\/h2>\n<p>Kubernetes, modern uygulama geli\u015ftirmenin temel ta\u015flar\u0131ndan biri haline gelmi\u015f olsa da, da\u011f\u0131t\u0131k yap\u0131s\u0131 ve dinamik do\u011fas\u0131 gere\u011fi izlenmesi karma\u015f\u0131k bir sistemdir. Bir Kubernetes k\u00fcmesinin sa\u011fl\u0131\u011f\u0131n\u0131, performans\u0131n\u0131 ve kaynak kullan\u0131m\u0131n\u0131 s\u00fcrekli olarak takip etmek, olas\u0131 sorunlar\u0131 proaktif bir \u015fekilde tespit etmek ve h\u0131zl\u0131ca m\u00fcdahale etmek i\u00e7in kritik \u00f6neme sahiptir. Bu makalede, sekt\u00f6r standard\u0131 haline gelmi\u015f a\u00e7\u0131k kaynakl\u0131 izleme ara\u00e7lar\u0131 olan Prometheus, Grafana ve Alertmanager&#8217;\u0131 DigitalOcean Kubernetes (DOKS) \u00fczerinde nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Bu \u00fc\u00e7l\u00fc, Kubernetes ortam\u0131n\u0131z i\u00e7in g\u00fc\u00e7l\u00fc, esnek ve kapsaml\u0131 bir izleme ve uyar\u0131 sistemi olu\u015fturman\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>Neden Kubernetes \u0130zleme?<\/h3>\n<p>Kubernetes k\u00fcmeleri, y\u00fczlerce hatta binlerce pod, servis ve d\u00fc\u011f\u00fcmden olu\u015fabilir. Bu karma\u015f\u0131k yap\u0131 i\u00e7inde bir uygulaman\u0131n performans\u0131n\u0131 veya bir d\u00fc\u011f\u00fcm\u00fcn sa\u011fl\u0131\u011f\u0131n\u0131 manuel olarak takip etmek neredeyse imkans\u0131zd\u0131r. \u0130zleme, bu dinamik ortamda g\u00f6r\u00fcn\u00fcrl\u00fck sa\u011flaman\u0131n tek yoludur.<\/p>\n<p>*   <strong>Performans Optimizasyonu:<\/strong> Uygulama ve altyap\u0131 performans darbo\u011fazlar\u0131n\u0131 belirleyerek kaynak kullan\u0131m\u0131n\u0131 optimize etmenizi sa\u011flar.<br \/>\n*   <strong>Sorun Tespiti ve Giderme:<\/strong> Hata oranlar\u0131, gecikmeler veya kaynak t\u00fckenmeleri gibi sorunlar\u0131 erken a\u015famada tespit ederek kesinti s\u00fcrelerini minimize eder.<br \/>\n*   <strong>Kapasite Planlamas\u0131:<\/strong> Gelecekteki b\u00fcy\u00fcme i\u00e7in ne kadar kayna\u011fa ihtiyac\u0131n\u0131z olaca\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olur.<br \/>\n*   <strong>G\u00fcvenlik:<\/strong> Anormal davran\u0131\u015flar\u0131 veya g\u00fcvenlik ihlallerini g\u00f6sterebilecek kal\u0131plar\u0131 izlemenizi sa\u011flar.<br \/>\n*   <strong>Uyumluluk ve Denetim:<\/strong> Belirli standartlara uyum sa\u011flamak ve denetim gereksinimlerini kar\u015f\u0131lamak i\u00e7in metrik verilerini toplaman\u0131za olanak tan\u0131r.<\/p>\n<h3>Prometheus, Grafana ve Alertmanager \u00dc\u00e7l\u00fcs\u00fc<\/h3>\n<p>Bu \u00fc\u00e7 ara\u00e7, Kubernetes izleme ekosisteminde birbirini tamamlayan roller \u00fcstlenir:<\/p>\n<p>*   <strong>Prometheus:<\/strong> Zaman serisi verilerini toplar, depolar ve sorgular. Kubernetes ortam\u0131ndaki \u00e7e\u015fitli kaynaklardan (node&#8217;lar, pod&#8217;lar, servisler, etcd, kube-scheduler vb.) metrikleri \u00e7ekmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. G\u00fc\u00e7l\u00fc bir sorgu dili olan PromQL&#8217;e sahiptir.<br \/>\n*   <strong>Grafana:<\/strong> Prometheus taraf\u0131ndan toplanan metrikleri g\u00f6rselle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. \u00c7e\u015fitli grafikler, tablolar ve panolar arac\u0131l\u0131\u011f\u0131yla verileri anlaml\u0131 hale getirir. Kullan\u0131c\u0131 dostu aray\u00fcz\u00fc sayesinde karma\u015f\u0131k verileri kolayca yorumlaman\u0131z\u0131 sa\u011flar.<br \/>\n*   <strong>Alertmanager:<\/strong> Prometheus taraf\u0131ndan tetiklenen uyar\u0131lar\u0131 y\u00f6netir. Uyar\u0131lar\u0131 grupland\u0131r\u0131r, yinelenen uyar\u0131lar\u0131 bast\u0131r\u0131r ve \u00e7e\u015fitli kanallar (e-posta, Slack, PagerDuty vb.) arac\u0131l\u0131\u011f\u0131yla bildirimler g\u00f6nderir.<\/p>\n<p>Bu \u00fc\u00e7l\u00fc, Kubernetes k\u00fcmenizin t\u00fcm y\u00f6nlerini izlemek ve y\u00f6netmek i\u00e7in kapsaml\u0131 bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu makaledeki ad\u0131mlar\u0131 takip edebilmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6n gereksinimlere sahip olman\u0131z gerekmektedir:<\/p>\n<p>*   <strong>DigitalOcean Hesab\u0131:<\/strong> DigitalOcean platformunda bir hesab\u0131n\u0131z olmal\u0131 ve faturaland\u0131rma bilgileriniz ayarlanm\u0131\u015f olmal\u0131d\u0131r.<br \/>\n*   <strong><code>doctl<\/code> CLI:<\/strong> DigitalOcean API ile etkile\u015fim kurmak i\u00e7in <code>doctl<\/code> komut sat\u0131r\u0131 arac\u0131 bilgisayar\u0131n\u0131zda kurulu ve yap\u0131land\u0131r\u0131lm\u0131\u015f olmal\u0131d\u0131r.<br \/>\n*   <strong><code>kubectl<\/code> CLI:<\/strong> Kubernetes k\u00fcmeleriyle etkile\u015fim kurmak i\u00e7in <code>kubectl<\/code> komut sat\u0131r\u0131 arac\u0131 kurulu olmal\u0131d\u0131r.<br \/>\n*   <strong><code>helm<\/code> CLI:<\/strong> Kubernetes uygulamalar\u0131n\u0131 da\u011f\u0131tmak ve y\u00f6netmek i\u00e7in <code>helm<\/code> paket y\u00f6neticisi kurulu olmal\u0131d\u0131r. Helm, Prometheus ve Grafana gibi karma\u015f\u0131k uygulamalar\u0131 tek bir komutla da\u011f\u0131tmam\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<p>Bu ara\u00e7lar\u0131n kurulumu i\u00e7in ilgili resmi belgelere ba\u015fvurabilirsiniz. \u00d6rne\u011fin, <code>helm<\/code> kurulumu i\u00e7in <code>curl https:\/\/raw.githubusercontent.com\/helm\/helm\/main\/scripts\/get-helm-3 | bash<\/code> komutunu kullanabilirsiniz.<\/p>\n<h3>DigitalOcean Kubernetes (DOKS) K\u00fcmesi Olu\u015fturma<\/h3>\n<p>\u0130zleme y\u0131\u011f\u0131n\u0131m\u0131z\u0131 da\u011f\u0131tmadan \u00f6nce bir DigitalOcean Kubernetes k\u00fcmesine ihtiyac\u0131m\u0131z var. DOKS k\u00fcmesini DigitalOcean kontrol paneli \u00fczerinden veya <code>doctl<\/code> CLI kullanarak olu\u015fturabilirsiniz. CLI kullanarak olu\u015fturmak daha otomatiktir.<\/p>\n<h4>DigitalOcean Kontrol Paneli \u00dczerinden K\u00fcme Olu\u015fturma (\u00d6zet)<\/h4>\n<p>1.  DigitalOcean hesab\u0131n\u0131za giri\u015f yap\u0131n.<br \/>\n2.  Sol men\u00fcden &#8220;Kubernetes&#8221;e t\u0131klay\u0131n.<br \/>\n3.  &#8220;Create Kubernetes Cluster&#8221; d\u00fc\u011fmesine bas\u0131n.<br \/>\n4.  B\u00f6lge, Kubernetes s\u00fcr\u00fcm\u00fc, node havuzu boyutu ve adland\u0131rma gibi ayarlar\u0131 yap\u0131land\u0131r\u0131n. En az 2 adet 2vCPU\/4GB droplet i\u00e7eren bir node havuzu, izleme y\u0131\u011f\u0131n\u0131 i\u00e7in yeterli olacakt\u0131r.<br \/>\n5.  K\u00fcmenizi olu\u015fturun.<\/p>\n<h4><code>doctl<\/code> CLI \u00dczerinden K\u00fcme Olu\u015fturma (\u00d6nerilen)<\/h4>\n<p><code>doctl<\/code> kullanarak bir k\u00fcme olu\u015fturmak ve <code>kubectl<\/code> i\u00e7in yap\u0131land\u0131rma dosyas\u0131n\u0131 indirmek daha h\u0131zl\u0131d\u0131r.<\/p>\n<p>1.  <strong>K\u00fcme Olu\u015fturma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl kubernetes cluster create <k\u00fcme-ad\u0131> \\\n        --region <b\u00f6lge> \\\n        --version <kubernetes-s\u00fcr\u00fcm\u00fc> \\\n        --node-pool \"name=default-pool;size=s-2vcpu-4gb;count=2\"<\/code><\/pre>\n<p>    \u00d6rnek:<\/p>\n<pre><code class=\"language-bash\">doctl kubernetes cluster create my-monitoring-cluster \\\n        --region fra1 \\\n        --version 1.28.2-do.0 \\\n        --node-pool \"name=default-pool;size=s-2vcpu-4gb;count=2\"<\/code><\/pre>\n<p>    Bu i\u015flem birka\u00e7 dakika s\u00fcrebilir.<\/p>\n<p>2.  <strong><code>kubectl<\/code> Yap\u0131land\u0131rmas\u0131n\u0131 \u0130ndirme:<\/strong> K\u00fcme olu\u015fturulduktan sonra, <code>kubectl<\/code>&#8216;in k\u00fcmenizle etkile\u015fim kurabilmesi i\u00e7in yap\u0131land\u0131rma dosyas\u0131n\u0131 indirmeniz gerekir:<\/p>\n<pre><code class=\"language-bash\">doctl kubernetes cluster kubeconfig save <k\u00fcme-ad\u0131><\/code><\/pre>\n<p>    Bu komut, <code>~\/.kube\/config<\/code> dosyan\u0131z\u0131 g\u00fcncelleyecek veya yeni bir giri\u015f ekleyecektir.<\/p>\n<p>3.  <strong>K\u00fcme Ba\u011flant\u0131s\u0131n\u0131 Test Etme:<\/strong><\/p>\n<pre><code class=\"language-bash\">kubectl get nodes<\/code><\/pre>\n<p>    D\u00fc\u011f\u00fcmlerinizin &#8220;Ready&#8221; durumda oldu\u011funu g\u00f6rmelisiniz.<\/p>\n<p>Art\u0131k bir Kubernetes k\u00fcmemiz oldu\u011funa g\u00f6re, izleme y\u0131\u011f\u0131n\u0131m\u0131z\u0131 kurmaya ba\u015flayabiliriz.<\/p>\n<h3>Prometheus, Grafana ve Alertmanager Kurulumu (kube-prometheus-stack ile)<\/h3>\n<p>Prometheus, Grafana ve Alertmanager&#8217;\u0131 ayr\u0131 ayr\u0131 kurmak yerine, Helm toplulu\u011fu taraf\u0131ndan geli\u015ftirilen <code>kube-prometheus-stack<\/code> Helm grafi\u011fini kullanmak en kolay ve en kapsaml\u0131 yoldur. Bu grafik, Prometheus, Grafana, Alertmanager ve \u00e7e\u015fitli Kubernetes bile\u015fenleri i\u00e7in \u00f6nceden yap\u0131land\u0131r\u0131lm\u0131\u015f ServiceMonitor&#8217;lar ve exporter&#8217;lar\u0131 tek bir pakette sunar.<\/p>\n<h4>Helm Deposu Ekleme<\/h4>\n<p>\u0130lk olarak, Prometheus Helm deposunu eklememiz gerekiyor:<\/p>\n<pre><code class=\"language-bash\">helm repo add prometheus-community https:\/\/prometheus-community.github.io\/helm-charts\nhelm repo update<\/code><\/pre>\n<h4>Namespace Olu\u015fturma<\/h4>\n<p>\u0130zleme bile\u015fenlerini izole etmek i\u00e7in ayr\u0131 bir <code>namespace<\/code> olu\u015fturmak iyi bir uygulamad\u0131r:<\/p>\n<pre><code class=\"language-bash\">kubectl create namespace monitoring<\/code><\/pre>\n<h4><code>kube-prometheus-stack<\/code> Kurulumu<\/h4>\n<p>\u015eimdi <code>kube-prometheus-stack<\/code> grafi\u011fini <code>monitoring<\/code> namespace&#8217;ine kurabiliriz. Varsay\u0131lan yap\u0131land\u0131rma \u00e7o\u011fu durum i\u00e7in yeterli olsa da, baz\u0131 \u00f6zelle\u015ftirmeler yapabiliriz. \u00d6rne\u011fin, Grafana i\u00e7in bir y\u00f6netici \u015fifresi belirleyebiliriz.<\/p>\n<pre><code class=\"language-bash\">helm install prometheus prometheus-community\/kube-prometheus-stack \\\n    --namespace monitoring \\\n    --set grafana.adminPassword='your-secure-password' \\\n    --set prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage=\"50Gi\" \\\n    --set grafana.persistence.enabled=true \\\n    --set grafana.persistence.storageClassName=\"do-block-storage\" \\\n    --set grafana.persistence.size=\"10Gi\" \\\n    --set alertmanager.alertmanagerSpec.storage.volumeClaimTemplate.spec.resources.requests.storage=\"10Gi\" \\\n    --set alertmanager.alertmanagerSpec.storage.volumeClaimTemplate.spec.storageClassName=\"do-block-storage\"<\/code><\/pre>\n<p><strong>Yukar\u0131daki Komutun A\u00e7\u0131klamas\u0131:<\/strong><\/p>\n<p>*   <code>helm install prometheus prometheus-community\/kube-prometheus-stack<\/code>: <code>kube-prometheus-stack<\/code> grafi\u011fini <code>prometheus<\/code> ad\u0131yla kurar.<br \/>\n*   <code>--namespace monitoring<\/code>: T\u00fcm bile\u015fenleri <code>monitoring<\/code> namespace&#8217;ine da\u011f\u0131t\u0131r.<br \/>\n*   <code>--set grafana.adminPassword='your-secure-password'<\/code>: Grafana i\u00e7in y\u00f6netici \u015fifresini belirler. <strong>Bu \u015fifreyi g\u00fc\u00e7l\u00fc bir \u015fifreyle de\u011fi\u015ftirmeyi unutmay\u0131n!<\/strong><br \/>\n*   <code>--set prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage=\"50Gi\"<\/code>: Prometheus&#8217;un metrik verilerini depolamak i\u00e7in 50GB&#8217;l\u0131k bir Persistent Volume Claim (PVC) iste\u011finde bulunur. Bu, verilerin pod yeniden ba\u015flatmalar\u0131nda bile kal\u0131c\u0131 olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>--set grafana.persistence.enabled=true<\/code>: Grafana i\u00e7in kal\u0131c\u0131l\u0131\u011f\u0131 etkinle\u015ftirir. Bu, Grafana panolar\u0131n\u0131z\u0131n ve yap\u0131land\u0131rmalar\u0131n\u0131z\u0131n kal\u0131c\u0131 olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>--set grafana.persistence.storageClassName=\"do-block-storage\"<\/code>: Grafana&#8217;n\u0131n kal\u0131c\u0131 depolamas\u0131 i\u00e7in DigitalOcean Block Storage&#8217;\u0131 kullan\u0131r.<br \/>\n*   <code>--set grafana.persistence.size=\"10Gi\"<\/code>: Grafana i\u00e7in 10GB&#8217;l\u0131k bir PVC iste\u011finde bulunur.<br \/>\n*   <code>--set alertmanager.alertmanagerSpec.storage.volumeClaimTemplate.spec.resources.requests.storage=\"10Gi\"<\/code>: Alertmanager i\u00e7in 10GB&#8217;l\u0131k bir PVC iste\u011finde bulunur.<br \/>\n*   <code>--set alertmanager.alertmanagerSpec.storage.volumeClaimTemplate.spec.storageClassName=\"do-block-storage\"<\/code>: Alertmanager&#8217;\u0131n kal\u0131c\u0131 depolamas\u0131 i\u00e7in DigitalOcean Block Storage&#8217;\u0131 kullan\u0131r.<\/p>\n<p>Bu kurulum biraz zaman alabilir. T\u00fcm pod&#8217;lar\u0131n \u00e7al\u0131\u015f\u0131r duruma geldi\u011fini kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">kubectl get pods -n monitoring<\/code><\/pre>\n<p>T\u00fcm pod&#8217;lar\u0131n <code>Running<\/code> veya <code>Completed<\/code> durumda oldu\u011funu g\u00f6rmelisiniz.<\/p>\n<h3>Prometheus UI&#8217;ya Eri\u015fim<\/h3>\n<p>Prometheus UI, toplanan metrikleri sorgulaman\u0131za ve Prometheus&#8217;un yap\u0131land\u0131rmas\u0131n\u0131 g\u00f6rmenize olanak tan\u0131r. Varsay\u0131lan olarak, Prometheus k\u00fcme i\u00e7inde bir <code>ClusterIP<\/code> servisi olarak da\u011f\u0131t\u0131l\u0131r. D\u0131\u015far\u0131dan eri\u015fmek i\u00e7in <code>kubectl port-forward<\/code> kullanabiliriz:<\/p>\n<pre><code class=\"language-bash\">kubectl port-forward svc\/prometheus-kube-prometheus-prometheus -n monitoring 9090:9090<\/code><\/pre>\n<p>\u015eimdi taray\u0131c\u0131n\u0131zda <code>http:\/\/localhost:9090<\/code> adresine giderek Prometheus UI&#8217;ya eri\u015febilirsiniz. Burada PromQL sorgular\u0131 yazabilir ve toplanan metrikleri inceleyebilirsiniz.<\/p>\n<h3>Grafana UI&#8217;ya Eri\u015fim<\/h3>\n<p>Grafana, izleme y\u0131\u011f\u0131n\u0131m\u0131z\u0131n g\u00f6rselle\u015ftirme katman\u0131d\u0131r. <code>kube-prometheus-stack<\/code> taraf\u0131ndan kurulan Grafana da varsay\u0131lan olarak bir <code>ClusterIP<\/code> servisi olarak da\u011f\u0131t\u0131l\u0131r. Eri\u015fim i\u00e7in yine <code>kubectl port-forward<\/code> kullanabiliriz:<\/p>\n<pre><code class=\"language-bash\">kubectl port-forward svc\/prometheus-grafana -n monitoring 3000:80<\/code><\/pre>\n<p>Taray\u0131c\u0131n\u0131zda <code>http:\/\/localhost:3000<\/code> adresine giderek Grafana UI&#8217;ya eri\u015febilirsiniz. Giri\u015f yapman\u0131z istendi\u011finde:<\/p>\n<p>*   <strong>Kullan\u0131c\u0131 Ad\u0131:<\/strong> <code>admin<\/code><br \/>\n*   <strong>\u015eifre:<\/strong> Kurulum s\u0131ras\u0131nda <code>--set grafana.adminPassword='your-secure-password'<\/code> ile belirledi\u011finiz \u015fifre.<\/p>\n<p>Giri\u015f yapt\u0131ktan sonra, Grafana&#8217;n\u0131n \u00f6nceden yap\u0131land\u0131r\u0131lm\u0131\u015f Prometheus veri kayna\u011f\u0131n\u0131 ve Kubernetes i\u00e7in bir\u00e7ok varsay\u0131lan panoyu bulacaks\u0131n\u0131z. Sol men\u00fcden &#8220;Dashboards&#8221; -> &#8220;Manage&#8221; se\u00e7ene\u011fine giderek mevcut panolar\u0131 g\u00f6rebilirsiniz. \u00d6zellikle &#8220;Kubernetes \/ Compute Resources \/ Cluster&#8221; veya &#8220;Kubernetes \/ Kubelet&#8221; gibi panolar, k\u00fcmenizin genel sa\u011fl\u0131\u011f\u0131 ve performans\u0131na dair de\u011ferli bilgiler sunar.<\/p>\n<h4>Varsay\u0131lan Panolar\u0131 Ke\u015ffetme<\/h4>\n<p><code>kube-prometheus-stack<\/code> ile birlikte gelen baz\u0131 \u00f6nemli panolar \u015funlard\u0131r:<\/p>\n<p>*   <strong>Kubernetes \/ Compute Resources \/ Cluster:<\/strong> K\u00fcme genelinde CPU, bellek, disk ve a\u011f kullan\u0131m\u0131 gibi temel kaynak metriklerini g\u00f6sterir.<br \/>\n*   <strong>Kubernetes \/ Compute Resources \/ Namespace (Pods):<\/strong> Belirli bir namespace&#8217;deki pod&#8217;lar\u0131n kaynak kullan\u0131m\u0131n\u0131 izler.<br \/>\n*   <strong>Kubernetes \/ Compute Resources \/ Node:<\/strong> Her d\u00fc\u011f\u00fcm\u00fcn CPU, bellek, disk ve a\u011f kullan\u0131m\u0131n\u0131 detayl\u0131 olarak g\u00f6sterir.<br \/>\n*   <strong>Kubernetes \/ Kubelet:<\/strong> Kubelet bile\u015feninin sa\u011fl\u0131\u011f\u0131n\u0131 ve performans\u0131n\u0131 izler.<br \/>\n*   <strong>Prometheus \/ Overview:<\/strong> Prometheus sunucusunun kendi performans metriklerini g\u00f6sterir.<br \/>\n*   <strong>Alertmanager \/ Overview:<\/strong> Alertmanager&#8217;\u0131n durumunu ve g\u00f6nderilen uyar\u0131lar\u0131 g\u00f6sterir.<\/p>\n<p>Bu panolar, k\u00fcmenizin durumu hakk\u0131nda h\u0131zl\u0131 ve kapsaml\u0131 bir genel bak\u0131\u015f sa\u011flar.<\/p>\n<h3>Alertmanager Yap\u0131land\u0131rmas\u0131 ve Uyar\u0131lar<\/h3>\n<p>Alertmanager, Prometheus taraf\u0131ndan tetiklenen uyar\u0131lar\u0131 alarak bunlar\u0131 uygun al\u0131c\u0131lara y\u00f6nlendiren bile\u015fendir. <code>kube-prometheus-stack<\/code> ile Alertmanager da kurulur, ancak bildirimleri g\u00f6ndermek i\u00e7in yap\u0131land\u0131r\u0131lmas\u0131 gerekir.<\/p>\n<h4>Alertmanager Yap\u0131land\u0131rmas\u0131na Eri\u015fim<\/h4>\n<p>Alertmanager&#8217;\u0131n yap\u0131land\u0131rmas\u0131 genellikle bir Kubernetes <code>Secret<\/code> i\u00e7inde saklan\u0131r. Bu secret&#8217;\u0131 d\u00fczenleyerek Alertmanager&#8217;\u0131n nas\u0131l uyar\u0131 g\u00f6nderece\u011fini belirleyebiliriz.<\/p>\n<p>1.  <strong>Mevcut Secret&#8217;\u0131 D\u00fczenleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">kubectl get secret prometheus-kube-prometheus-alertmanager -n monitoring -o yaml > alertmanager-secret.yaml<\/code><\/pre>\n<p>    Bu komut, Alertmanager yap\u0131land\u0131rmas\u0131n\u0131 i\u00e7eren secret&#8217;\u0131 bir dosyaya kaydeder.<\/p>\n<p>2.  <strong><code>alertmanager-secret.yaml<\/code> Dosyas\u0131n\u0131 D\u00fczenleme:<\/strong><br \/>\n    Bu dosyan\u0131n i\u00e7inde <code>data.alertmanager.yaml<\/code> anahtar\u0131nda base64 ile kodlanm\u0131\u015f bir yap\u0131land\u0131rma dizesi bulacaks\u0131n\u0131z. Bu dizeyi \u00e7\u00f6zmeniz, d\u00fczenlemeniz ve tekrar kodlaman\u0131z gerekecek.<\/p>\n<p>    \u00d6rnek bir <code>alertmanager.yaml<\/code> i\u00e7eri\u011fi:<\/p>\n<pre><code class=\"language-yaml\">global:\n      resolve_timeout: 5m\n    \n    route:\n      group_by: ['alertname', 'job']\n      group_wait: 30s\n      group_interval: 5m\n      repeat_interval: 1h\n      receiver: 'email-receiver' # Varsay\u0131lan al\u0131c\u0131\n    \n      routes:\n      - match:\n          alertname: DeadMansSwitch\n        repeat_interval: 5m\n        receiver: 'email-receiver'\n    \n    receivers:\n    - name: 'null' # Varsay\u0131lan bo\u015f al\u0131c\u0131\n    - name: 'email-receiver'\n      email_configs:\n      - to: 'your-email@example.com' # Kendi e-posta adresinizle de\u011fi\u015ftirin\n        from: 'alertmanager@example.com' # Kendi g\u00f6nderen e-postan\u0131zla de\u011fi\u015ftirin\n        smarthost: 'smtp.example.com:587' # Kendi SMTP sunucunuzla de\u011fi\u015ftirin\n        auth_username: 'smtp-username' # Kendi SMTP kullan\u0131c\u0131 ad\u0131n\u0131zla de\u011fi\u015ftirin\n        auth_password: 'smtp-password' # Kendi SMTP \u015fifrenizle de\u011fi\u015ftirin\n        require_tls: true<\/code><\/pre>\n<p>    <strong>\u00d6nemli:<\/strong> Yukar\u0131daki <code>email_configs<\/code> b\u00f6l\u00fcm\u00fcn\u00fc kendi SMTP sunucu bilgilerinizle ve al\u0131c\u0131 e-posta adresinizle g\u00fcncelleyin. Slack veya PagerDuty gibi farkl\u0131 al\u0131c\u0131lar i\u00e7in Alertmanager belgelerine bakabilirsiniz.<\/p>\n<p>3.  <strong>Yap\u0131land\u0131rmay\u0131 Base64 ile Kodlama:<\/strong><br \/>\n    D\u00fczenledi\u011finiz <code>alertmanager.yaml<\/code> i\u00e7eri\u011fini tekrar base64 ile kodlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">cat alertmanager.yaml | base64 -w 0<\/code><\/pre>\n<p>    Bu komutun \u00e7\u0131kt\u0131s\u0131n\u0131 kopyalay\u0131n.<\/p>\n<p>4.  <strong>Secret&#8217;\u0131 G\u00fcncelleme:<\/strong><br \/>\n    <code>alertmanager-secret.yaml<\/code> dosyas\u0131ndaki <code>data.alertmanager.yaml<\/code> de\u011ferini kopyalad\u0131\u011f\u0131n\u0131z base64 \u00e7\u0131kt\u0131s\u0131yla de\u011fi\u015ftirin. Ard\u0131ndan Secret&#8217;\u0131 g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f alertmanager-secret.yaml -n monitoring<\/code><\/pre>\n<p>    De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in Alertmanager pod&#8217;unun yeniden ba\u015flat\u0131lmas\u0131 gerekebilir.<\/p>\n<h4>Prometheus Uyar\u0131 Kurallar\u0131 Olu\u015fturma<\/h4>\n<p>Prometheus, metrikler belirli ko\u015fullar\u0131 kar\u015f\u0131lad\u0131\u011f\u0131nda uyar\u0131lar\u0131 tetiklemek i\u00e7in uyar\u0131 kurallar\u0131 kullan\u0131r. <code>kube-prometheus-stack<\/code> bir\u00e7ok varsay\u0131lan uyar\u0131 kural\u0131yla gelir, ancak kendi \u00f6zel kurallar\u0131n\u0131z\u0131 da ekleyebilirsiniz.<\/p>\n<p>Uyar\u0131 kurallar\u0131 genellikle bir <code>PrometheusRule<\/code> kayna\u011f\u0131 olarak tan\u0131mlan\u0131r. \u00d6rne\u011fin, bir d\u00fc\u011f\u00fcm\u00fcn CPU kullan\u0131m\u0131n\u0131n \u00e7ok y\u00fcksek olmas\u0131 durumunda bir uyar\u0131 olu\u015fturmak i\u00e7in:<\/p>\n<p>1.  <strong><code>node-cpu-alert.yaml<\/code> Ad\u0131nda Bir Dosya Olu\u015fturun:<\/strong><\/p>\n<pre><code class=\"language-yaml\">apiVersion: monitoring.coreos.com\/v1\n    kind: PrometheusRule\n    metadata:\n      name: node-cpu-usage\n      labels:\n        prometheus: prometheus\n        role: alert-rules\n      namespace: monitoring\n    spec:\n      groups:\n      - name: node-cpu-usage\n        rules:\n        - alert: HighNodeCpuUsage\n          expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100) > 80\n          for: 5m\n          labels:\n            severity: warning\n          annotations:\n            summary: \"Node CPU kullan\u0131m\u0131 y\u00fcksek (instance {{ $labels.instance }})\"\n            description: \"D\u00fc\u011f\u00fcm {{ $labels.instance }} \u00fczerindeki CPU kullan\u0131m\u0131 5 dakikad\u0131r %80'in \u00fczerinde.\"<\/code><\/pre>\n<p>    Bu kural, bir d\u00fc\u011f\u00fcm\u00fcn CPU kullan\u0131m\u0131n\u0131n 5 dakika boyunca %80&#8217;in \u00fczerinde kalmas\u0131 durumunda <code>HighNodeCpuUsage<\/code> uyar\u0131s\u0131n\u0131 tetikler.<\/p>\n<p>2.  <strong>Kural\u0131 K\u00fcmenize Uygulay\u0131n:<\/strong><\/p>\n<pre><code class=\"language-bash\">kubectl apply -f node-cpu-alert.yaml -n monitoring<\/code><\/pre>\n<p>Prometheus, bu kural\u0131 otomatik olarak ke\u015ffedecek ve metrikleri izlemeye ba\u015flayacakt\u0131r. Bir uyar\u0131 tetiklendi\u011finde, Alertmanager&#8217;a g\u00f6nderilecek ve yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131z al\u0131c\u0131lara bildirimler gidecektir.<\/p>\n<h4>Alertmanager UI&#8217;ya Eri\u015fim<\/h4>\n<p>Alertmanager&#8217;\u0131n durumunu ve tetiklenen uyar\u0131lar\u0131 g\u00f6rmek i\u00e7in Alertmanager UI&#8217;ya eri\u015febilirsiniz:<\/p>\n<pre><code class=\"language-bash\">kubectl port-forward svc\/prometheus-kube-prometheus-alertmanager -n monitoring 9093:9093<\/code><\/pre>\n<p>Taray\u0131c\u0131n\u0131zda <code>http:\/\/localhost:9093<\/code> adresine giderek Alertmanager UI&#8217;ya eri\u015febilirsiniz. Burada tetiklenen, bekleyen ve susturulan uyar\u0131lar\u0131 g\u00f6rebilirsiniz.<\/p>\n<h3>Geli\u015fmi\u015f Yap\u0131land\u0131rmalar ve En \u0130yi Uygulamalar<\/h3>\n<p>\u0130zleme y\u0131\u011f\u0131n\u0131m\u0131z\u0131 kurduk, ancak daha kararl\u0131, g\u00fcvenli ve verimli hale getirmek i\u00e7in baz\u0131 ek ad\u0131mlar atabiliriz.<\/p>\n<h4>1. Kal\u0131c\u0131l\u0131k (Persistence)<\/h4>\n<p>Prometheus, Grafana ve Alertmanager i\u00e7in kal\u0131c\u0131l\u0131k (Persistent Volume Claims &#8211; PVC) ayarlamak, verilerinizin pod yeniden ba\u015flatmalar\u0131nda veya d\u00fc\u011f\u00fcm ar\u0131zalar\u0131nda kaybolmamas\u0131n\u0131 sa\u011flar. Yukar\u0131daki Helm kurulumunda bu ayarlar\u0131 zaten eklemi\u015ftik (<code>do-block-storage<\/code> kullanarak). DigitalOcean&#8217;da <code>do-block-storage<\/code> varsay\u0131lan StorageClass olarak mevcuttur ve blok depolama hacimleri sa\u011flar.<\/p>\n<h4>2. G\u00fcvenlik ve Eri\u015fim<\/h4>\n<p>Prometheus ve Grafana UI&#8217;lar\u0131n\u0131 do\u011frudan internete a\u00e7mak g\u00fcvenlik riski olu\u015fturabilir.<\/p>\n<p>*   <strong>Ingress Kullan\u0131m\u0131:<\/strong> <code>kubectl port-forward<\/code> sadece geli\u015ftirme ve test ama\u00e7l\u0131d\u0131r. \u00dcretim ortam\u0131nda, Grafana ve Prometheus UI&#8217;lar\u0131na g\u00fcvenli bir \u015fekilde eri\u015fmek i\u00e7in bir Kubernetes Ingress kayna\u011f\u0131 kullanmal\u0131s\u0131n\u0131z. Bu, bir Load Balancer (DigitalOcean&#8217;da otomatik olarak sa\u011flan\u0131r) ve bir alan ad\u0131 \u00fczerinden HTTPS eri\u015fimi sa\u011flar.<br \/>\n    *   Bir Ingress Controller (\u00f6rn. NGINX Ingress Controller) kurun.<br \/>\n    *   Grafana ve Prometheus i\u00e7in Ingress kaynaklar\u0131 olu\u015fturun.<br \/>\n    *   \u00d6rnek Grafana Ingress:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: networking.k8s.io\/v1\n        kind: Ingress\n        metadata:\n          name: grafana-ingress\n          namespace: monitoring\n          annotations:\n            kubernetes.io\/ingress.class: nginx\n            cert-manager.io\/cluster-issuer: letsencrypt-prod # E\u011fer cert-manager kullan\u0131yorsan\u0131z\n        spec:\n          rules:\n          - host: grafana.yourdomain.com # Kendi alan ad\u0131n\u0131zla de\u011fi\u015ftirin\n            http:\n              paths:\n              - path: \/\n                pathType: Prefix\n                backend:\n                  service:\n                    name: prometheus-grafana\n                    port:\n                      number: 80\n          tls: # HTTPS i\u00e7in\n          - hosts:\n            - grafana.yourdomain.com\n            secretName: grafana-tls-secret # Cert-manager taraf\u0131ndan olu\u015fturulur<\/code><\/pre>\n<p>*   <strong>Grafana Kimlik Do\u011frulamas\u0131:<\/strong> Grafana i\u00e7in g\u00fc\u00e7l\u00fc bir y\u00f6netici \u015fifresi belirledik. Ayr\u0131ca LDAP, OAuth veya di\u011fer kimlik do\u011frulama y\u00f6ntemlerini de yap\u0131land\u0131rabilirsiniz.<br \/>\n*   <strong>Prometheus Eri\u015fim Kontrol\u00fc:<\/strong> Prometheus UI genellikle sadece y\u00f6neticiler veya belirli IP adresleri taraf\u0131ndan eri\u015filebilir olmal\u0131d\u0131r. Bir Ingress kural\u0131nda IP k\u0131s\u0131tlamalar\u0131 uygulayabilir veya bir VPN \u00fczerinden eri\u015fimi zorunlu k\u0131labilirsiniz.<\/p>\n<h4>3. Kaynak Y\u00f6netimi<\/h4>\n<p>Prometheus ve Grafana, \u00f6zellikle b\u00fcy\u00fck k\u00fcmelerde \u00f6nemli miktarda CPU ve bellek t\u00fcketebilir. Helm grafi\u011fi arac\u0131l\u0131\u011f\u0131yla pod&#8217;lar i\u00e7in kaynak istekleri ve limitleri (resource requests\/limits) belirlemek \u00f6nemlidir:<\/p>\n<p>*   <code>--set prometheus.prometheusSpec.resources.requests.cpu=\"500m\"<\/code><br \/>\n*   <code>--set prometheus.prometheusSpec.resources.requests.memory=\"2Gi\"<\/code><br \/>\n*   <code>--set grafana.resources.requests.cpu=\"200m\"<\/code><br \/>\n*   <code>--set grafana.resources.requests.memory=\"1Gi\"<\/code><\/p>\n<p>Bu ayarlar, k\u00fcmenizin istikrarl\u0131 kalmas\u0131n\u0131 ve izleme y\u0131\u011f\u0131n\u0131n\u0131n di\u011fer uygulamalarla kaynak rekabetine girmemesini sa\u011flar.<\/p>\n<h4>4. Y\u00fcksek Eri\u015filebilirlik (High Availability)<\/h4>\n<p>\u00dcretim ortamlar\u0131 i\u00e7in Prometheus ve Alertmanager&#8217;\u0131n y\u00fcksek eri\u015filebilirlik modunda \u00e7al\u0131\u015fmas\u0131 \u00f6nemlidir.<\/p>\n<p>*   <strong>Prometheus HA:<\/strong> Birden fazla Prometheus replikas\u0131 da\u011f\u0131tarak ve bunlar\u0131 bir Load Balancer arkas\u0131na koyarak HA sa\u011flayabilirsiniz. Prometheus, verileri kopyalamaz, bu nedenle her replika kendi verilerini toplar. Federasyon veya Thanos\/Cortex gibi uzun s\u00fcreli depolama \u00e7\u00f6z\u00fcmleri daha geli\u015fmi\u015f HA ve \u00f6l\u00e7eklenebilirlik sa\u011flar. <code>kube-prometheus-stack<\/code> ile birden fazla Prometheus replikas\u0131 da\u011f\u0131tabilirsiniz (<code>--set prometheus.prometheusSpec.replicas=2<\/code>).<br \/>\n*   <strong>Alertmanager HA:<\/strong> Alertmanager replikalar\u0131 birbirleriyle durum bilgilerini senkronize edebilir. <code>--set alertmanager.alertmanagerSpec.replicas=2<\/code> ile birden fazla Alertmanager replikas\u0131 da\u011f\u0131tabilirsiniz.<\/p>\n<h4>5. Maliyet Optimizasyonu<\/h4>\n<p>DigitalOcean&#8217;da maliyetleri optimize etmek i\u00e7in:<\/p>\n<p>*   <strong>Node Boyutlar\u0131:<\/strong> \u0130zleme y\u0131\u011f\u0131n\u0131n\u0131z i\u00e7in yeterli ancak a\u015f\u0131r\u0131ya ka\u00e7mayan node boyutlar\u0131 se\u00e7in. K\u00fc\u00e7\u00fck bir k\u00fcme i\u00e7in <code>s-2vcpu-4gb<\/code> droplet&#8217;lar genellikle yeterlidir.<br \/>\n*   <strong>Depolama Alan\u0131:<\/strong> Prometheus ve Grafana i\u00e7in talep etti\u011finiz depolama alan\u0131n\u0131 ihtiya\u00e7lar\u0131n\u0131za g\u00f6re ayarlay\u0131n. \u00c7ok fazla depolama istemek gereksiz maliyetlere yol a\u00e7abilir. Veri saklama s\u00fcresini (retention) Prometheus yap\u0131land\u0131rmas\u0131nda d\u00fc\u015f\u00fcrerek depolama ihtiyac\u0131n\u0131 azaltabilirsiniz.<br \/>\n*   <strong>Otomatik \u00d6l\u00e7eklendirme:<\/strong> Node havuzlar\u0131n\u0131za otomatik \u00f6l\u00e7eklendirme ekleyerek sadece ihtiya\u00e7 duyuldu\u011funda ek d\u00fc\u011f\u00fcmlerin ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<h3>Temizleme (Cleanup)<\/h3>\n<p>Bu makaledeki \u00f6rnekleri denedikten sonra kaynaklar\u0131 temizlemek isterseniz, a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz:<\/p>\n<p>1.  <strong>Helm S\u00fcr\u00fcm\u00fcn\u00fc Kald\u0131rma:<\/strong><\/p>\n<pre><code class=\"language-bash\">helm uninstall prometheus -n monitoring<\/code><\/pre>\n<p>2.  <strong>Namespace&#8217;i Silme:<\/strong><\/p>\n<pre><code class=\"language-bash\">kubectl delete namespace monitoring<\/code><\/pre>\n<p>3.  <strong>DigitalOcean Kubernetes K\u00fcmesini Silme:<\/strong><br \/>\n    *   DigitalOcean kontrol paneli \u00fczerinden k\u00fcmenizi silebilirsiniz.<br \/>\n    *   <code>doctl<\/code> CLI \u00fczerinden:<\/p>\n<pre><code class=\"language-bash\">doctl kubernetes cluster delete <k\u00fcme-ad\u0131><\/code><\/pre>\n<p>    <strong>Dikkat:<\/strong> Bu i\u015flem t\u00fcm k\u00fcmenizi ve \u00fczerindeki t\u00fcm verileri kal\u0131c\u0131 olarak silecektir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, DigitalOcean Kubernetes \u00fczerinde Prometheus, Grafana ve Alertmanager&#8217;dan olu\u015fan g\u00fc\u00e7l\u00fc bir izleme y\u0131\u011f\u0131n\u0131n\u0131 nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 detayl\u0131 bir \u015fekilde inceledik. <code>kube-prometheus-stack<\/code> Helm grafi\u011fi sayesinde kurulum s\u00fcrecini basitle\u015ftirerek, k\u00fcme sa\u011fl\u0131\u011f\u0131 ve performans\u0131 hakk\u0131nda kapsaml\u0131 g\u00f6r\u00fcn\u00fcrl\u00fck elde ettik.<\/p>\n<p>Prometheus ile metrikleri toplad\u0131k, Grafana ile bu metrikleri g\u00f6rselle\u015ftirdik ve Alertmanager ile kritik durumlar i\u00e7in uyar\u0131 mekanizmalar\u0131 kurduk. Ayr\u0131ca, kal\u0131c\u0131l\u0131k, g\u00fcvenlik, kaynak y\u00f6netimi ve y\u00fcksek eri\u015filebilirlik gibi geli\u015fmi\u015f konulara de\u011finerek izleme y\u0131\u011f\u0131n\u0131n\u0131z\u0131 \u00fcretim ortamlar\u0131 i\u00e7in daha sa\u011flam hale getirme yollar\u0131n\u0131 g\u00f6sterdik.<\/p>\n<p>Art\u0131k DigitalOcean Kubernetes k\u00fcmenizin performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 proaktif bir \u015fekilde izleyebilir, potansiyel sorunlar\u0131 erkenden tespit edebilir ve uygulamalar\u0131n\u0131z\u0131n kesintisiz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz. \u0130zleme, modern bir Kubernetes stratejisinin ayr\u0131lmaz bir par\u00e7as\u0131d\u0131r ve bu ara\u00e7lar size bu konuda tam kontrol sa\u011flar.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu\nKubernetes, modern uygulama geli\u015ftirmenin teme","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-32287","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>DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 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\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu\" \/>\n<meta property=\"og:description\" content=\"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu Kubernetes, modern uygulama geli\u015ftirmenin teme\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-19T20:40:50+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=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu\",\"datePublished\":\"2025-10-19T20:40:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/\"},\"wordCount\":2537,\"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\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/\",\"name\":\"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-19T20:40:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 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":"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 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\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu","og_description":"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu Kubernetes, modern uygulama geli\u015ftirmenin teme","og_url":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-19T20:40:50+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu","datePublished":"2025-10-19T20:40:50+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/"},"wordCount":2537,"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\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/","name":"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-19T20:40:50+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-uzerinde-prometheus-grafana-ve-alertmanager-ile-kubernetes-izleme-yigini-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"DigitalOcean \u00dczerinde Prometheus, Grafana ve Alertmanager ile Kubernetes \u0130zleme Y\u0131\u011f\u0131n\u0131 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\/32287","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=32287"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32287\/revisions"}],"predecessor-version":[{"id":32288,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32287\/revisions\/32288"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}