İçerik
Bu yazıda Prometheus Stack kurulumunu Kubernetes üzerinde nasıl yapabileceğinize değineceğim. Grafana ile tüm Kubernetes Clusterımızı detaylı bir şekilde izleyebileceğiz. Aklınıza gelebilecek tüm metrikleri izleyebilirsiniz ve gireceğiniz kurallar ile belirli durumlarda bellirli platformlara alert gönderebileceksiniz.
Prometheus nedir?
Bir metrics altyapısıdır / sunucusudur. Şu anda çok popülerdir. Bir CNCF (Cloud Native Computing Foundation) projesidir. En büyük özelliği pullbase çalışmasıdır. Metrikleri merkezi bir yerde toplamanızı sağlar. Kubernetes’in standart metrik toplama aracı haline geldi.
Web URL: https://prometheus.io
Grafana nedir?
Toplanan metriklerin görselleştirilmesini sağlayan araçtır. Grafana da bir CNCF (Cloud Native Computing Foundation) projesidir. Grafanayı sadece Prometheus ile değil bir çok araçla uyumlu çalışıyor.
Web URL: https://grafana.com
Prometheus Stack Kurulumu Nasıl Yapılır?
Kubernetes master sunucusu üzerinden helm komutu ile hızlı bir şekilde kurulum sağlanabilir. Manuel konfigürasyonlara ihtiyaç duymaz.
Prometheus Stack nedir?
Node Exporter, Kubernetes Metrics, Application Metrics, Grafana, Alerting gibi araçları toplu olarak kurulabilmesini sağlayan, Helm paket sağlayıcısı üzerinde toparlanmış bir pakettir.
Web URL: Prometheus Stack
Gereksinimler
- Kubernetes Cluster (Rancher Kurulumu)
- Helm Paket Yöneticisi (Helm Kurulumu)
Özet Şema
Kurulum Aşaması
Öncelikle “monitoring” adında kubernetes üzerinde bir namespace oluşturuyoruz.
kubectl create namespace monitoring
Prometheus-comunity reposunu helm’e ekliyoruz.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
Helm repolarımızı güncelliyoruz.
helm repo update
Ardından oluşturduğumuz namespace üzerine helm ile Prometheus Stack kurulumunu gerçekleştiriyoruz.
helm install prometheus-stack prometheus-community/kube-prometheus-stack --namespace monitoring
Oluşturulan podları kontrol edelim.
kubectl get pods -n monitoring
NAME READY STATUS RESTARTS AGE
alertmanager-prometheus-stack-kube-prom-alertmanager-0 2/2 Running 0 2m32s
prometheus-prometheus-stack-kube-prom-prometheus-0 2/2 Running 0 2m31s
prometheus-stack-grafana-777fc5f879-qrfqt 3/3 Running 0 2m36s
prometheus-stack-kube-prom-operator-84885fcd68-xtl5h 1/1 Running 0 2m36s
prometheus-stack-kube-state-metrics-6bd588fd5-crstx 1/1 Running 0 2m36s
prometheus-stack-prometheus-node-exporter-8mnnh 1/1 Running 0 2m36s
prometheus-stack-prometheus-node-exporter-gdlrb 1/1 Running 0 2m36s
prometheus-stack-prometheus-node-exporter-m6dbr 1/1 Running 0 2m36s
Nginx Ingress (Opsiyonel)
Doğrudan internal ip adresi ile bağlanacaksanız bunu yapmayın. Bu arayüzün dışarıya açılması anlamını taşır.
Daha önce kurmuş olduğum MetaLB üzerinden Ingress’i kibana web arayüz için Kubernetes’te kaldırıyorum. MetalLB kurulumuna bu bağlantıdaki yazımdan erişebilirsiniz.
sezergrafana.test kısmını kendi domain name adresinize göre değiştirin.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
generation: 1
name: grafana
namespace: monitoring
spec:
ingressClassName: nginx
rules:
- host: sezergrafana.test
http:
paths:
- backend:
service:
name: prometheus-stack-grafana
port:
number: 80
path: /
pathType: Prefix
Default Şifreyi Değiştirmek
Grafana adresimize browser üzerinden bağlantığımızda Login sayfası bizi karşılayacaktır.
Kullanıcı adı ve şifremizi aşağıdaki komut ile öğrenebiliriz.
kubectl get secret prometheus-stack-grafana -n monitoring -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Default olarak kullanıcı bilgisi aşağıdaki gibidir. Mutlaka değiştirmeyi unutmayın!
Username: admin
Password: prom-operator
Sol menüden kullanıcı profil resmine tıkladıktan sonra > “Change Password” seçeneğine tıklayın.
Yeni Dashboard Ekleme
Default olarak Prometheus Stack ile birlikte bir çok dashboard hazır olarak geliyor.
Yine de hazır olan başka dashboard’lar eklemek isteyebilirsiniz ya da kendiniz de sıfırdan bir dashboard oluşturabilirsiniz. Şayet hazır olanları tercih etmek isterseniz bu kısımda aşağıdaki adımları takip etmeniz gerekiyor. Öncelikle aşağıdaki bağlantıdan Grafana’nın websitesindeki dashboards sayfasına gidelim
Örneğin şu bağlantıdaki dashboard’u eklemek istiyorum. Dashboard ID ‘sini (14336) kopyalıyorum.
Sol menüden “Import” seçeneğine tıklıyorum.
Karşıma çıkan ekranda “Import via grafana.com” kısmına kopyaladığım ID ‘i (14336) yapıştırıyorum ve yanındaki “Load” butonuna basıyorum.
Son olarak “Import” butonuna basıp işlemi tamamlıyorum.
Olası hatalar
Github issue URL: buradan ulaşabilirsiniz
Sorun:
Error: INSTALLATION FAILED: failed to create resource: Internal error occurred: failed calling webhook "prometheusrulemutate.monitoring.coreos.com": Post "https://prometheus-stack-kube-prom-operator.monitoring.svc:443/admission-prometheusrules/validate?timeout=10s": dial tcp 10.43.67.15:443: connect: connection refused
Çözüm:
Kuruluma baştan başlamak için ilgili namespace’i silin.
kubectl delete ns monitoring
Validating webhook configlerini kontrol edin.
kubectl get validatingwebhookconfiguration -A
prometheus-stack-kube-prom-admission 1 52m
İlgili config’i silin
kubectl delete validatingwebhookconfiguration/prometheus-stack-kube-prom-admission -A
Mutanting webhook configlerini kontrol edin.
kubectl get mutatingwebhookconfiguration -A
prometheus-stack-kube-prom-admission 1 58m
İlgili config’i silin
kubectl delete mutatingwebhookconfiguration/prometheus-stack-kube-prom-admission -A
Tekrardan kurulum yönergelerini izleyin.