Kubernetes: Observability ve Monitoring Kavramları
Kubernetes, modern uygulama geliştirmede devrim yaratarak karmaşık mikroservis mimarileri yönetmeyi kolaylaştıran harika bir çözümdür. Fakat Kubernetes clusterları sürekli bir değişim halindedir. Yeni deploymentlar eklenir, pod’lar ölçeklendirilir, containerlar ölür ve kaynaklar tükenir… Bu tarz beklenmeyen olaylar her an yaşanabilir. Bu dinamik ortamda, sistemin sağlıklı ve hatasız bir şekilde çalışmasını sağlamak için monitoring ve observability kavramlarını anlamak kritik öneme sahiptir.
Bu yazıda cloud native uygulamalar için Observability ve Monitoring konularını ele alacağız. Observability nedir? Monitoring ile nasıl ilişkilidir? Loglar ve metrikler neden önemlidir? gibi soruları ele alacağız
Observability Nedir?
Observability (gözlemlenebilirlik) yeni yeni karşılaştığımız bir terim olabilir ancak geleneksel monitoring’in ötesinde daha geniş bir dünyayı ifade eden ve giderek popülerleşen bir kavram. Observability’nin monitoring’i nasıl genişlettiğini görmeden önce Monitoring konusunu ele alacağız.
Monitoring Nedir?
Kişisel bir Web siteniz var diyelim; Peki şu anda çalışıyor mu? Tüm uygulamalarınızın ve servisleriniz olması gerektiği gibi çalışıp çalışmadığını bilmenin en temel yolu manuel olarak kontrol etmektir.
Monitoring Otomasyonu, bir servisin kullanılabilirliğini veya davranışını programlı bir şekilde ve genellikle bir problem olduğunda alarm mekanizmasını devreye sokarak kontrol etmektir. Peki bir problemin spesifik bir tanımı var mıdır?
Statik web sitesi örneğini ele alalım. Hiç çalışmıyorsa, yanıt vermez veya tarayıcıda bir hata mesajı görürüz. Bu site için mümkün olan en basit kontrol, ana sayfayı girmek ve HTTP status code’unu kontrol etmektir. (HTTP 200-OK). Bunu curl komutu ile kolayca yapabiliriz.
Diyelim ki web server konfigürasyonunda bir sorun oldu. Server, çalışmasına ve HTTP 200 OK dönmesine rağmen boş/istenmeyen bir sayfa sunuyor. Basit kontrolümüz HTTP kodu 200 döndüğü için herhangi bir sorun tespit etmeyecek ama kullanıcılar siteye erişemeyeceklerdir.
Statik web sitelerine kıyasla daha karmaşık web sitelerinin daha karmaşık monitoring’e ihtiyaç duyabileceğini az çok hayal edebiliyoruz artık. Basit web siteleri için “Çalışıyor mu?” sorusuna evet/hayır şeklinde bir cevap yeterli olabilir ancak daha karmaşık olan cloud native uygulamaları için bu soru birden fazla soruya dönüşecektir:
- Uygulama dünyanın her yerinde erişilebilir mi? Yoksa sadece bazı bölgelerde mi erişim var?
- Kullanıcılar için ortalama yüklenme süresi ne kadar?
- Uygulamanın tüm servisleri amaçlandığı gibi çalışıyor mu?
- Bazı servisler yavaş mı çalışıyor yoksa hiç mi çalışmıyor? Ve bu durumdan kaç kullanıcı etkileniyor?
Bu kontroller ne kadar karmaşık olursa olsun, hepsi aynı kategoriye giriyor: Black-box Monitoring. Adından da anlaşılacağı gibi, bir sistemin içinde neler olup bittiğini gözlemlemeye çalışmadan yalnızca dış davranışını gözlemler.