Prometheus İzleme Sistemi
Sistemler ve uygulamalar karmaşıklaştıkça, optimum performans, güvenilirlik ve ölçeklenebilirlik sağlamak için izleme çok önemli hale gelir. Açık kaynaklı bir izleme ve uyarı araç seti olan Prometheus, çeşitli sistemlerden metrikleri yönetmek ve görselleştirmek için en popüler çözümlerden biri haline gelmiştir. Başlangıçta SoundCloud tarafından geliştirilen Prometheus artık bir Cloud Native Computing Foundation (CNCF) projesidir ve sektörler arasında yaygın bir şekilde benimsenmiştir.
Bu makalede, Prometheus’un temel özelliklerini, nasıl çalıştığını ve altyapınızı ve uygulamalarınızı izlemek üzere kurmak için gereken adımları inceleyeceğiz.
Prometheus nedir?
Prometheus, zaman içinde izlenen ölçümler veya olaylar olan zaman serisi verilerini toplamak, depolamak ve sorgulamak için tasarlanmış güçlü bir izleme sistemidir. Prometheus tarafından toplanan veriler görselleştirilebilir, analiz edilebilir ve uyarıları tetiklemek için kullanılabilir, böylece ekiplerin altyapılarının sağlığı ve performansı hakkında bilgi sahibi olmalarına yardımcı olur.
Prometheus birkaç temel özelliği ile bilinmektedir:
- Zaman Serisi Veri Modeli: Prometheus verileri zaman serisi olarak depolar, yani metrikler zaman aralıkları boyunca kaydedilir.
- Çekme Tabanlı İzleme: Prometheus, izlenen sistemlerin metrikleri sunucuya itmesi yerine, uç noktalardan metrikleri kazımak için çekme tabanlı bir model kullanır.
- Güçlü Sorgu Dili (PromQL): Prometheus, kullanıcıların metrikleri gerçek zamanlı olarak filtrelemesine ve toplamasına olanak tanıyan güçlü bir sorgu dili olan PromQL sağlar.
- Uyarı: Prometheus, kuralları tanımlamak ve belirli koşullar karşılandığında bildirimler göndermek için Alertmanager ile entegre olur.
- Hizmet Keşfi: Prometheus, Kubernetes gibi dinamik olarak değişen ortamlardan metrikleri otomatik olarak keşfedebilir ve kazıyabilir.
Prometheus Nasıl Çalışır?
Prometheus, zaman serisi verilerini izlemek için tasarlanmış basit ama sağlam bir mimari izler. Şöyle çalışıyor:
- Metrik Toplama (Kazıma): Prometheus, uygulamalar veya sistemler tarafından açığa çıkarılan HTTP uç noktalarından (exporter olarak adlandırılır) metrikleri periyodik olarak kazır.
- Zaman Serisi Veri Depolama: Prometheus, toplandıktan sonra ölçümleri, her veri noktasının bir zaman damgası ve bir dizi etiketle ilişkilendirildiği bir zaman serisi veritabanında depolar.
- PromQL ile Sorgulama: Kullanıcılar grafikler, gösterge tabloları veya uyarılar oluşturmak için Prometheus’un sorgu dili PromQL’i kullanarak depolanan metrikleri sorgulayabilir.
- Uyarı: Önceden tanımlanmış koşullara bağlı olarak Prometheus, e-posta, Slack, PagerDuty veya diğer hizmetler aracılığıyla bildirimler gönderebilen Alertmanager’ı kullanarak uyarıları tetikleyebilir.
Prometheus, Prometheus’un anlayabileceği bir formatta metrikleri açığa çıkaran uç noktalardan periyodik olarak metrikleri kazıyarak aldığı çekme tabanlı bir modeli destekler. Bu, ölçeklendirme ve dinamik ortamların yaygın olduğu dağıtılmış sistemlerin ve mikro hizmetlerin izlenmesi için idealdir.
Prometheus Bileşenleri
Prometheus, her biri farklı bir amaca hizmet eden çeşitli temel bileşenlerden oluşur:
- Prometheus Sunucusu: Metriklerin toplanmasından, depolanmasından ve sorgulanmasından sorumlu merkezi bileşen. Hedef uç noktaları kazır ve metrikleri bir zaman serisi veritabanında saklar.
- Dışa Aktarıcılar: Bunlar, ölçümleri Prometheus uyumlu bir biçimde ortaya çıkaran uygulamalar veya hizmetlerdir. Yaygın ihracatçılar şunlardır:
- Node Exporter: Donanım ve işletim sistemi düzeyinde metrikler toplar.
- Blackbox Exporter: HTTP, DNS, TCP vb. üzerinden uç noktaları araştırmak için.
- Uygulamaya Özel Dışa Aktarıcılar: Birçok veritabanı (PostgreSQL, MySQL gibi) ve hizmetin kendi exporter’ları vardır.
- Alertmanager: Prometheus, uyarıları işlemek için Alertmanager’ı kullanır. Uyarıları Slack, e-posta veya SMS gibi farklı alıcılara yönlendirebilir ve susturma ve engelleme kurallarını yönetebilir.
- PromQL (Prometheus Sorgu Dili): Zaman serisi verilerini almak ve işlemek için kullanılan güçlü bir sorgu dili.
- Pushgateway: Doğrudan kazıma yoluyla ölçümleri ortaya çıkaramayan geçici veya kısa ömürlü işler için kullanılan bir bileşen (örneğin, toplu işler). Pushgateway, bu işlerin metriklerini Prometheus’a göndermelerini sağlar.
- Grafana: Prometheus’un bir parçası olmasa da Grafana, Prometheus verilerini görselleştirmek ve etkileşimli panolar oluşturmak için kullanılan popüler bir açık kaynak aracıdır.
Prometheus’un Adım Adım Kurulumu
Prometheus’u bir Linux sunucusunda nasıl kurabileceğiniz ve sistem ölçümlerini nasıl izlemeye başlayabileceğiniz aşağıda açıklanmıştır:
Adım 1: Prometheus’u yükleyin
- Prometheus’u indirin: Prometheus’un en son sürümünü edinmek için Prometheus indirme sayfasını ziyaret edin. Prometheus’u indirmek ve ayıklamak için aşağıdaki komutları çalıştırın:wget https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz tar -xvf prometheus-2.32.1.linux-amd64.tar.gz cd prometheus-2.32.1.linux-amd64
- Prometheus’u başlatın: Prometheus’u başlatmak için aşağıdaki komutu çalıştırın:./prometheus –config.file=prometheus.yml
Prometheus varsayılan olarak 9090 numaralı bağlantı noktasında çalışır ve tarayıcınızda http://localhost:9090 adresine giderek web arayüzüne erişebilirsiniz.
Adım 2: Prometheus’u Yapılandırma
Prometheus için ana yapılandırma prometheus.yml dosyası aracılığıyla yapılır. Bu dosya Prometheus’a hangi hedeflerin (ihracatçıların) ve ne sıklıkta kazınacağını söyler.
İşte temel bir prometheus.yml yapılandırması:
Gerektiğinde daha fazla hedef veya dışa aktarıcı ekleyebilirsiniz ve Prometheus bunları otomatik olarak kazımaya başlayacaktır.
Adım 3: Node Exporter’ı yükleyin (Sistem Metrikleri için)
CPU, bellek, disk ve ağ kullanımı gibi sistem ölçümlerini izlemek için Node Exporter’ı yükleyebilirsiniz.
- Node Exporter’ı indirin:wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64
- Node Exporter’ı başlatın: Node Exporter’ı başlatmak için aşağıdaki komutu çalıştırın:./node_exporter
Varsayılan olarak, Node Exporter 9100 numaralı bağlantı noktasında çalışır ve CPU kullanımı, bellek istatistikleri, disk I/O ve ağ ölçümleri gibi ölçümleri gösterir.
- Prometheus’u Node Exporter’ı Kazımak için Yapılandırma: Aşağıdaki işi prometheus.yml yapılandırma dosyasına ekleyin:scrape_configs: – job_name: ‘node_exporter’ static_configs: – hedefler: [‘localhost:9100’]
- Prometheus’u yeniden başlatın: Yapılandırma dosyasında değişiklik yaptıktan sonra, Node Exporter’dan ölçümleri kazımaya başlamak için Prometheus’u yeniden başlatın.
Adım 4: Grafana ile Metrikleri Görselleştirin
Prometheus metriklerini görselleştirmek için Grafana mükemmel bir araçtır. Prometheus ile sorunsuz bir şekilde entegre olur ve etkileşimli gösterge tabloları oluşturmanıza olanak tanır.
- Grafana’yı yükleyin: Linux’ta, Grafana web sitesindeki talimatları izleyerek Grafana’yı yükleyebilirsiniz.
- Prometheus’u Veri Kaynağı olarak yapılandırın: Grafana’yı yükledikten sonra:
- Grafana’da oturum açın (http://localhost:3000).
- Yapılandırma > Veri Kaynakları’na gidin ve Prometheus’u bir veri kaynağı olarak ekleyin (http://localhost:9090).
- Gösterge Tabloları Oluşturun: Artık kendi özel panolarınızı oluşturabilir veya CPU kullanımı, bellek kullanımı, disk performansı ve daha fazlası gibi ölçümleri görselleştirmek için Grafana’nın pazarından önceden oluşturulmuş panoları içe aktarabilirsiniz.
Adım 5: Uyarıları Ayarlayın
Prometheus, yüksek CPU kullanımı, düşük disk alanı veya uygulama arızaları gibi belirli koşullara göre uyarıları yapılandırmanıza olanak tanır.
- Uyarı Kurallarını Tanımlayın: Uyarılar ayrı bir rules.yml dosyasında tanımlanır. İşte CPU kullanımı %80’den yüksek olduğunda tetiklenen örnek bir uyarı kuralı:gruplar: – isim: example_alerts kurallar: – alert: HighCPUsage expr: 100 – (avg by(instance) (rate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 80 için: 5m labels: severity: warning annotations: summary: “{{ $labels.instance }} üzerinde yüksek CPU kullanımı tespit edildi” description: “CPU kullanımı 5 dakikadan uzun süredir %80’in üzerinde.”
- Alertmanager’ı yapılandırın: Bir uyarı tetiklendiğinde e-posta, Slack veya diğer kanallar aracılığıyla bildirim göndermek için Alertmanager’ı kurun ve yapılandırın.
Prometheus için Kullanım Örnekleri
Prometheus, aşağıdakiler de dahil olmak üzere çeşitli sistem türlerini izlemek için çok çeşitli senaryolarda kullanılır:
- Altyapı İzleme: Altyapınızın sorunsuz çalıştığından emin olmak için sunuculardan, veritabanlarından ve ağ cihazlarından metrikler toplayın.
- Uygulama İzleme: Özellikle mikro hizmet mimarilerindeki uygulamalar için gecikme, istek oranı, hata oranları ve kaynak tüketimi gibi performans metriklerini izleyin.
- Kubernetes İzleme: Prometheus, Kubernetes ile yerel olarak entegre olur ve bir Kubernetes kümesindeki podlardan ve hizmetlerden metrikleri otomatik olarak keşfedebilir ve kazıyabilir.
- Özel Metrikler: Prometheus, özel ölçümleri ortaya çıkarmak için kendi uygulamalarınızı enstrümante etmenize olanak tanıyarak uygulamaya özgü davranışlar hakkında derin içgörüler sağlar.
Sonuç
Prometheus, zaman serisi verilerine dayalı olarak gerçek zamanlı toplama, sorgulama ve uyarma sağlayan güçlü ve esnek bir izleme çözümüdür. İster sistem düzeyinde ölçümleri ister mikro hizmet mimarisinde uygulama performansını izleyin, Prometheus altyapınızın sağlığını ve istikrarını sağlamak için değerli bir araçtır.
Bu makalede özetlenen adımları izleyerek Prometheus’u kullanmaya başlayabilir, sistemlerinizden metrikler toplayabilir ve Grafana’yı kullanarak bu metrikleri görselleştirebilirsiniz. Prometheus zaman içinde performans eğilimleri hakkında bilgi edinmenize, anormallikleri tespit etmenize ve olaylara hızlı bir şekilde yanıt vermenize yardımcı olarak hem sistem çalışma süresini hem de güvenilirliği artırabilir.