Modern yazılım geliştirme ve operasyon süreçlerinde, sistemlerin izlenmesi ve bu izlemelerin görselleştirilmesi oldukça kritik bir öneme sahiptir. Sistemlerin performansını anlamak, sorunları erken tespit etmek ve iyileştirme süreçlerini yönetmek için kullanılan araçlardan ikisi Grafana ve Prometheus'tur. Bu yazıda, bu iki güçlü aracın ne olduğunu, nasıl çalıştığını ve birlikte nasıl kullanıldığını ayrıntılı olarak ele alacağız.
Prometheus Nedir?
Prometheus, özellikle bulut yerel (cloud-native) mimariler için tasarlanmış, açık kaynak kodlu bir zaman serisi veritabanı ve izleme sistemidir. Prometheus, sistemlerden topladığı metrikleri saklar, sorgular, uyarılar üretir ve verileri analiz eder. Metrikler, sistemin performansını, kullanım durumunu ve çeşitli ölçümleri ifade eden sayısal verilerdir. Örneğin, CPU kullanımı, bellek tüketimi, ağ trafiği gibi değerler metrik olarak tanımlanabilir.
Prometheus'un Temel Özellikleri
1. Zaman Serisi Veritabanı
Prometheus, metrikleri zaman serisi verileri olarak saklar. Zaman serisi verisi, belirli bir zaman damgası ile ilişkilendirilmiş bir veri noktasını ifade eder. Örneğin, CPU kullanımı, bellek tüketimi gibi metrikler her ölçüldüğünde bir zaman damgası ile birlikte kaydedilir. Bu sayede zaman içindeki değişimlerin izlenmesi ve analiz edilmesi mümkün hale gelir.
- Etiketler ve Metrik Adları: Prometheus'ta her metrik bir ad ve etiketler kümesi ile tanımlanır. Metrik adı, neyin ölçüldüğünü ifade ederken, etiketler aynı metrik için farklı boyutlar (örneğin, farklı sunucular, farklı uygulamalar) eklemeyi sağlar. Bu yapı, aynı metrik üzerinde çeşitli boyutlarda detaylı analizler yapmanıza olanak tanır.
- Veri Saklama: Prometheus, verileri yerel disk üzerinde saklar ve belirli bir saklama süresi boyunca bu verileri korur. Varsayılan olarak bu süre 15 gündür, ancak ihtiyaçlara göre özelleştirilebilir. Bu yapı, özellikle uzun vadeli analizlerde kullanılabilir.
2. Veri Toplama (Scraping)
Prometheus, sistemlerden ve uygulamalardan veri toplamak için "scraping" adı verilen bir yöntem kullanır. Scraping işlemi, Prometheus'un hedef sistemlerdeki belirli uç noktalara (endpoints) düzenli aralıklarla HTTP istekleri göndererek metrik verilerini toplaması anlamına gelir.
- Exporter'lar: Prometheus, çeşitli sistemlerden veri toplamak için "exporter" adı verilen bileşenler kullanır. Exporter'lar, hedef sistemde çalışarak o sistemin metriklerini Prometheus’un anlayacağı formata çevirir ve bir HTTP uç noktası üzerinden sunar. Örneğin, bir Linux sunucusunun sistem metriklerini toplamak için
node_exporter
kullanılır. Bunun gibi, MySQL, Redis, Kafka gibi pek çok sistem için çeşitli exporter'lar mevcuttur.
- Pushgateway: Bazı durumlarda, metrikleri toplamak için Prometheus’un veri çekmesini beklemek uygun olmayabilir. Bu tür durumlar için Prometheus, Pushgateway adlı bir bileşen sunar. Pushgateway, geçici veya kısa ömürlü işlerin metriklerini Prometheus’a "push" ederek göndermesini sağlar. Bu özellikle, batch job'lar veya geçici işler için idealdir.
3. PromQL (Prometheus Query Language)
Prometheus, toplanan verileri sorgulamak ve analiz etmek için PromQL adlı bir sorgu dili sağlar. PromQL, zaman serisi veriler üzerinde karmaşık sorgular yapmanıza ve verileri analiz etmenize olanak tanır.
- Esnek Sorgulama: PromQL, zaman serisi verilerini filtreleme, toplama, matematiksel işlemler yapma ve birleştirme gibi pek çok işlev sunar. Örneğin, belirli bir zaman aralığındaki ortalama CPU kullanımı, en yüksek bellek tüketimi gibi sorgular yapılabilir.
- Grafiksel Sorgular: PromQL ile yapılan sorgular, Grafana gibi araçlar tarafından görselleştirilebilir. Bu sayede, metriklerin zaman içindeki değişimlerini grafikler halinde inceleyebilir, karşılaştırmalar yapabilirsiniz.
- Fonksiyonlar ve Operatörler: PromQL, zaman serisi verileri üzerinde çeşitli fonksiyonlar (örneğin,
rate()
, avg_over_time()
) ve operatörler (örneğin, +
, -
, *
, /
) sağlar. Bu fonksiyonlar ve operatörler, metriklerin farklı şekillerde analiz edilmesini sağlar.
4. Uyarı Sistemi
Prometheus, belirli koşullar sağlandığında uyarılar oluşturabilen bir dahili uyarı yöneticisine sahiptir. Bu özellik, sistemde anormallikler veya hatalar olduğunda erken müdahale edilmesini sağlar.
- Alertmanager: Prometheus’un uyarı sistemi, Alertmanager adlı bir bileşenle entegre çalışır. Alertmanager, Prometheus'tan gelen uyarıları alır, bu uyarıları gruplandırır, yönlendirir ve belirli bir biçimde iletilmesini sağlar. Uyarılar, e-posta, Slack, PagerDuty gibi çeşitli bildirim sistemleri ile entegre edilebilir.
- Uyarı Kuralları: Prometheus'ta, uyarılar belirli kurallar üzerinden tanımlanır. Bu kurallar, belirli bir metrik değerinin belirli bir süre boyunca belirli bir eşiği aşması gibi koşullara dayanır. Örneğin, CPU kullanımı 5 dakikadan fazla %90’ın üzerinde kalırsa bir uyarı tetiklenebilir.
- Sessiz Mod ve İstisnalar: Alertmanager, uyarıların gürültüsünü azaltmak için sessiz mod (silencing) ve istisna kuralları oluşturmanıza olanak tanır. Örneğin, bakım süresi boyunca uyarıların tetiklenmemesi için sessiz mod kullanılabilir.
5. Ölçeklenebilirlik
Prometheus, ölçeklenebilir bir mimariye sahiptir ve farklı büyüklükteki sistemler için uyarlanabilir. Bu özellik, Prometheus’un büyük dağıtık sistemlerde de etkin bir şekilde kullanılmasını sağlar.
- Federasyon: Prometheus, federasyon adı verilen bir özellik sunar. Federasyon, birden fazla Prometheus sunucusunun verilerini birleştirerek merkezi bir sunucuya aktarır. Bu sayede, büyük ölçekli ve dağıtık sistemlerde, her bir Prometheus sunucusunun yalnızca belirli bir alt küme üzerinde çalışması sağlanabilir ve merkezi sunucudan tüm veriler izlenebilir.
- Yük Dengeleme: Prometheus, hedef sistemler arasında yük dengeleme yapabilir. Bu özellik, veri toplama işleminin büyük sistemlerde daha verimli bir şekilde yapılmasını sağlar.
- Depolama Çözümleri: Prometheus’un yerel disk depolaması dışında, uzun vadeli saklama ihtiyaçları için harici depolama çözümleri ile entegre edilebilir. Örneğin, Thanos veya Cortex gibi projeler, Prometheus verilerini uzun süreli saklama ve yatay ölçeklenebilirlik sağlar.
6. Modüler ve Esnek Mimari
Prometheus, esnek ve modüler bir mimariye sahiptir. Bu özellik, Prometheus’un çeşitli sistemlere kolayca entegre edilebilmesini ve özelleştirilebilmesini sağlar.
- Modüler Bileşenler: Prometheus, veri toplama, veri saklama, sorgulama, uyarı oluşturma gibi farklı işlevleri gerçekleştiren modüler bileşenlerden oluşur. Bu modüler yapı, Prometheus’un farklı ihtiyaçlara göre özelleştirilmesini sağlar.
- Açık Kaynak ve Topluluk Desteği: Prometheus, açık kaynaklı bir projedir ve geniş bir topluluk desteğine sahiptir. Bu sayede, sürekli olarak güncellenir, yeni özellikler eklenir ve çeşitli sistemler için entegre çözümler sunar.
7. Kapsamlı İzleme ve Destek
Prometheus, geniş bir izleme yetenekleri yelpazesi sunar ve bu yetenekler çeşitli platformlar, uygulamalar ve hizmetler için geniş destek sağlar.
- Kubernetes Entegrasyonu: Prometheus, Kubernetes gibi modern orkestrasyon platformlarıyla derinlemesine entegredir. Kubernetes ortamlarındaki pod, düğüm ve servislerden metrikler toplayabilir ve bu metrikleri izleyebilir.
- Çeşitli Exporter Desteği: Prometheus, MySQL, PostgreSQL, Redis, Nginx, Kafka gibi yaygın olarak kullanılan birçok sistem için hazır exporter'lar sunar. Bu sayede, farklı sistemler için kolayca izleme çözümleri oluşturulabilir.
- Uygulama İzleme: Prometheus, uygulama geliştiricilerinin kendi özel metriklerini kolayca tanımlamasına ve izlemesine olanak tanır. Örneğin, bir web uygulamasının yanıt süreleri, hata oranları gibi özel metrikler izlenebilir.
Prometheus, güçlü özellikleri, esnek yapısı ve geniş topluluk desteği ile izleme ve uyarı ihtiyaçlarına kapsamlı çözümler sunar. Özellikle büyük ve karmaşık sistemlerin izlenmesi, analiz edilmesi ve uyarı oluşturulması gibi kritik görevlerde vazgeçilmez bir araçtır.
Grafana Nedir?
Grafana, Prometheus ve benzeri zaman serisi veritabanlarından veri çekerek bu verileri görselleştirmeye olanak tanıyan bir açık kaynak kodlu analiz ve izleme platformudur. Grafana, kullanıcıların veri kaynaklarından çektiği metrikleri farklı görsel formatlarda sunmasını sağlar. Bu görseller, grafikler, çizelgeler, göstergeler ve tablolar gibi çeşitli biçimlerde olabilir.
Grafana'nın Temel Özellikleri
1. Çoklu Veri Kaynağı Desteği
Grafana, çeşitli veri kaynaklarından veri çekme ve bu verileri görselleştirme yeteneğine sahiptir. Bu özellik, farklı veri sistemlerinin entegre edilmesine ve tek bir platform üzerinden analiz edilmesine olanak tanır.
- Veri Kaynakları: Grafana, Prometheus, InfluxDB, Elasticsearch, MySQL, PostgreSQL, AWS CloudWatch, Google Cloud Monitoring ve daha birçok veri kaynağını destekler. Bu veri kaynakları, sistem performansı, uygulama metrikleri, log verileri ve diğer önemli bilgileri sağlar.
- Özelleştirilebilir Veritabanı Bağlantıları: Kullanıcılar, veri kaynaklarını Grafana’nın arayüzünde kolayca yapılandırabilir ve gerekli bağlantı bilgilerini (URL, kimlik doğrulama bilgileri) girebilirler.
- Birden Fazla Kaynak Kullanımı: Aynı panelde birden fazla veri kaynağından veri çekebilir ve bu verileri karşılaştırabilirsiniz. Bu, farklı veri kaynaklarından gelen verileri entegre bir şekilde analiz etmenizi sağlar.
2. Panolar ve Görselleştirme Seçenekleri
Grafana, kullanıcıların verilerini görselleştirmek için geniş bir yelpazede panel ve grafik türleri sunar. Panolar, verilerin görsel bir temsili olup, kullanıcıların performans göstergelerini ve diğer metrikleri takip etmesini sağlar.
- Panel Türleri: Grafana, zaman serisi grafikleri, çubuk grafikleri, pasta grafikleri, göstergeler, tablolar ve haritalar gibi çeşitli grafik türleri sunar. Kullanıcılar, ihtiyaçlarına göre bu panelleri özelleştirebilir.
- Görsel Özelleştirmeler: Panellerin görünümünü özelleştirmek mümkündür. Renkler, etiketler, başlıklar ve eksenler gibi görsel elemanlar değiştirilebilir. Ayrıca, kullanıcılar panel üzerinde yazılı açıklamalar ve notlar ekleyebilirler.
- Zaman Aralığı Seçimi: Paneller, verileri belirli bir zaman aralığında gösterecek şekilde yapılandırılabilir. Grafana, dinamik zaman aralıkları seçmenize olanak tanır, örneğin "son 24 saat", "son 7 gün" veya "son 30 gün" gibi.
3. Uyarılar ve Bildirimler
Grafana, belirli koşullara göre uyarılar oluşturabilir ve bu uyarıları çeşitli kanallar üzerinden bildirebilir. Bu özellik, sistemlerdeki anormallikleri ve performans sorunlarını hızlı bir şekilde tespit etmenizi sağlar.
- Uyarı Kuralları: Uyarılar, belirli bir metrik değeri belirli bir eşik değerini aştığında tetiklenebilir. Örneğin, CPU kullanımı %90’ın üzerine çıktığında bir uyarı oluşturabilirsiniz.
- Alertmanager Entegrasyonu: Grafana, Prometheus’un Alertmanager bileşeni ile entegre çalışabilir. Bu, uyarıların gruplandırılmasını, yönlendirilmesini ve bildirilmesini sağlar.
- Bildirim Kanalları: Uyarılar e-posta, Slack, Microsoft Teams, PagerDuty ve diğer bildirim sistemleri ile gönderilebilir. Bu, uyarıların doğru kişilere ulaşmasını sağlar.
4. Kullanıcı Yönetimi ve Erişim Kontrolü
Grafana, farklı kullanıcı rollerini ve erişim izinlerini yönetme yeteneğine sahiptir. Bu, panoların ve verilerin güvenliğini sağlamaya yardımcı olur.
- Kullanıcı Roller: Grafana, kullanıcılar için farklı roller tanımlamanıza olanak tanır. Örneğin, okuyucular sadece veri görüntüleyebilirken, yöneticiler panoları düzenleyebilir ve veri kaynaklarını yönetebilir.
- Erişim Kontrolü: Kullanıcıların belirli panolara veya veri kaynaklarına erişimini kontrol edebilirsiniz. Bu, verilerin yalnızca yetkili kullanıcılar tarafından görüntülenmesini ve yönetilmesini sağlar.
- Organizasyonlar ve Takımlar: Grafana, kullanıcıları organizasyonlar ve takımlar içinde gruplayarak daha iyi yönetim sağlar. Her organizasyon veya takım, kendi panolarını ve veri kaynaklarını yönetebilir.
5. Dashboard ve Panel Paylaşımı
Grafana, panoların ve panellerin paylaşılmasını kolaylaştırır. Bu, ekipler arasında bilgi paylaşımını ve işbirliğini teşvik eder.
- Paylaşılabilir Panolar: Panolar, diğer kullanıcılarla paylaşılabilir. Panoları, URL aracılığıyla paylaşabilir veya belirli kullanıcılar ve gruplar için erişim izni verebilirsiniz.
- Gömme Özelliği: Panolar, dış web sitelerine veya uygulamalara gömülebilir. Bu, panoların farklı platformlarda görüntülenmesini sağlar.
- Şablonlar ve Kopyalama: Panoları ve panelleri şablon olarak kaydedebilir ve diğer projelerde yeniden kullanabilirsiniz. Bu, aynı yapıdaki panoların farklı ortamlarda hızla oluşturulmasını sağlar.
6. Gelişmiş Veri Analizi
Grafana, verileri derinlemesine analiz etmek için çeşitli araçlar ve özellikler sunar. Bu özellikler, verilerin anlamlı ve kapsamlı bir şekilde yorumlanmasını sağlar.
- Sorgu Editörü: Kullanıcılar, veri kaynaklarına özel sorgular oluşturabilir ve bu sorguları panellerde kullanabilirler. Sorgu editörü, SQL, PromQL gibi farklı sorgu dillerini destekler.
- Veri Filtreleme ve Dilimleme: Grafana, verileri filtreleyebilir ve dilimleyebilir. Bu, belirli bir zaman dilimindeki verileri veya belirli bir etiketle ilişkilendirilmiş verileri analiz etmeyi sağlar.
- Veri Entegrasyonu: Grafana, çeşitli veri kaynaklarından gelen verileri entegre ederek daha kapsamlı analizler yapabilir. Bu, verilerin farklı kaynaklardan birleştirilmesini ve karşılaştırılmasını sağlar.
7. Eklentiler ve Uzantılar
Grafana, topluluk tarafından geliştirilen eklentiler ve uzantılar ile genişletilebilir. Bu eklentiler, Grafana'nın işlevselliğini artırır ve yeni özellikler ekler.
- Panel Eklentileri: Topluluk ve geliştiriciler tarafından oluşturulan çeşitli panel eklentilerini kullanabilirsiniz. Bu eklentiler, panellerin farklı biçimlerde görselleştirilmesini sağlar.
- Veri Kaynağı Eklentileri: Yeni veri kaynakları eklemek için veri kaynağı eklentilerini kullanabilirsiniz. Bu, Grafana'nın daha fazla veri kaynağı ile entegre olmasına olanak tanır.
- Temalar ve Stil Özelleştirmeleri: Grafana'nın görünümünü özelleştirmek için tema eklentilerini kullanabilirsiniz. Bu, panoların ve arayüzün görsel stilini değiştirmeyi sağlar.
8. Otomatik Güncellemeler ve Yeniden Yükleme
Grafana, verilerin dinamik olarak güncellenmesini sağlar. Panolar, veri kaynaklarından gelen yeni verileri otomatik olarak güncelleyebilir.
- Otomatik Yenileme: Paneller, belirli aralıklarla otomatik olarak yenilenebilir. Bu, verilerin en güncel haliyle görüntülenmesini sağlar.
- Gerçek Zamanlı İzleme: Grafana, gerçek zamanlı veri akışlarını destekler. Bu, panellerin anlık verileri gösterebilmesini ve sistemlerin gerçek zamanlı olarak izlenmesini sağlar.
Grafana'nın bu özellikleri, sistem performansını izlemek ve analiz etmek için kapsamlı ve kullanıcı dostu bir platform sunar. Verilerin görselleştirilmesi, analiz edilmesi ve paylaşılması konusunda sunduğu esneklik ve gücün yanı sıra, geniş veri kaynağı desteği ve kullanıcı yönetimi özellikleriyle, Grafana modern izleme ve analiz çözümleri için vazgeçilmez bir araçtır.
Sonuç
Grafana ve Prometheus, modern sistemlerin izlenmesi ve görselleştirilmesi için oldukça güçlü araçlardır. Prometheus’un esnek veri toplama yetenekleri ve Grafana’nın etkileyici görselleştirme özellikleri, bu iki aracı büyük ölçekli sistemlerde vazgeçilmez kılmaktadır. İster küçük bir uygulamayı ister büyük bir dağıtık sistemi izliyor olun, Prometheus ve Grafana kombinasyonu, performans sorunlarını tespit etmenize, sistem sağlığını izlemenize ve etkili kararlar almanıza yardımcı olacaktır.
✤ Daha fazla bilgi için buraya tıklamayı unutmayın!
✤ Bu yazımızı beğendiyseniz bir önceki yazımıza da göz atmayı unutmayın :) 42kraft