Prometheus Stack - Monitoring
Last updated
Last updated
Production ortamlarda, kubernetes cluster durumunu ve benzeri şeyleri kontrol etmemiz ve olası sorunlarda alertler oluşturmamız önemli bir konudur. Monitoring konusunu aşağıdaki maddelere ayırabiliriz;
=> Kubernetes Cluster'ın durumunu gözlemlememiz gerekiyor. Objelerin durumu, deploy edilen obje miktarını vb. ( Bunu promethues ile monitor edeceğiz )
=> Objelerin mevcut durumu nedir? İstenilen şekilde çalışıyor mu? Podlar ne kadarlık bir kaynak tüketiyor gibi soruların cevaplarını öğrenmemiz gerekiyor. ( Bunu prometheus ile monitor edeceğiz )
=> Worker, Manager nodeları izlememiz ve anlık kaynak kullanımlarını gözlemlememiz gerekiyor. ( Bunu prometheus ile monitor edeceğiz )
=> Pod içerisinde çalışan uygulamalarımıza ait logları incelememiz gerekiyor. ( Prometheus ile yapabiliriz fakat, bunu daha efektif bir şekilde arama yapabileceğimiz EFK stack ile monitor edeceğiz, bir sonraki bölümde )
Prometheus 'a geçmeden, kubectl ile bilgi toplama;
Yukarıdaki komutlar ile gerekli tüm bilgilere/loglara ulaşabiliriz fakat, production ortamlarda bu komutlar ile tek, tek toplamak uğraştırıcı ve zaman kaybı olacaktır ve yönetilemez hale gelecektir.
Misal çok fazla objenin bulunduğu Kubernetes cluster ortamlarında, bu şekilde kubectl ile manuel olarak log toplamaya çalışmak tavsiye etmeyeceğimiz bir davranış olacaktır.
Bunun yerine merkezi bir loglama sunucusu veya merkezi bir metric sunucusuna, kubernetes cluster'dan edindiğimiz loglar ve metricleri göndermemiz daha mantıklı bir çözüm olacaktır. Böylelikle, edindiğimiz loglardan ve metric'leri görselleştirip, alertler oluşturabiliriz. Misal, node1 down olursa, mail gönder vb. gibi alertler oluşturabiliriz.
Kısacası, Kubernetes üzerinde monitoring altyapısı sağlayabilecek bir servise ihtiyacımız var. Bu ihtiyacımızı Prometeus stack ile çözeceğiz. Prometheus stack ile uygulamala logları hariç, geriye kalan tüm metricleri alabileceğiz. Metricleri prometheus ile alıp, Grafana ile prometheus'u konuşturup, aldığımız metricleri Grafana ile görselleştirebiliriz.
Prometheus stack kurulumu;
Prometheus, Grafana, Alertmanager 'a dışarıdan erişmek için nodePort dosyası.
Prometheus ile grafana'yı konuşturmak 'dan bahsettik yukarıda, bunu nasıl yapıyoruz? Bunu biz değil, bizim yerimize bu stack'i yöneten kubernetes operator yapıyor.
Kubernetes üzerine prometeus'u kurduk ve kurduktan sonra bir çok ayarın yapılması gerekiyor. Misal, ruleların oluşturulması; gerekli tanımların yapılması vb. Özetle prometheus stack 'i kurup,yapılandırıp,yönetmemiz gerekiyor. Kubernetes 'de operator dediğimiz bir yöntem mevcut; Bizler operatorler oluşturabiliyoruz ve kubernetes de operatorler oluşturduğumuz zaman, bizim admin olarak yapacağımız tüm manuel ve uzun sürecek işlemleri otomatik hale getirilmesini sağlıyoruz operator ile.
Prometheus'u kurarken, yani helm chart'ı sisteme release olarak yükledikten sonra, operator prometheus 'un çalışması için gereken tüm ayarlamaları yapıyor. Tıpkı bir admin gibi, bu stack'in yönetiminden sorumlu oluyor.