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

Özet Şema

Prometheus stack

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.

grafana login page

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.

image 8

Yeni Dashboard Ekleme

Default olarak Prometheus Stack ile birlikte bir çok dashboard hazır olarak geliyor.

grafana dashboards
grafana inferface

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

Grafana Dashboards

Ö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.

image 11

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.

image 12

Son olarak “Import” butonuna basıp işlemi tamamlıyorum.

image 13
image

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.