Modern DevOps dünyasında altyapı metriklerini görselleştirebilmek ve buna tepki verebilmek bir lüks değil, bir zorunluluktur. Mikroservis mimarileri karmaşıklaştıkça, performans darboğazlarını teşhis etmek veya sistem sağlığını anlamak için yalnızca geleneksel günlük kayıtları yetersiz hale gelir. İşte tam bu noktada, zaman serisi veri toplama için Prometheus ve görselleştirme için Grafana'nın güçlü kombinasyonu devreye girer. Bu rehberde, uygulamanız ve altyapınız hakkında gerçek zamanlı içgörüler sağlayan sağlam bir izleme yığını nasıl kurulacağını keşfedeceğiz.
Mimariyi Anlamak
Prometheus, çekme tabanlı (pull-based) bir mimari üzerinde çalışır; yani yapılandırılmış uç noktalardan metrikleri düzenli aralıklarla toplar. Bu yaklaşım, Prometheus'un toplama süreci üzerinde tam kontrol sağladığından, itme tabanlı (push-based) sistemlere kıyasla hizmetlerinizdeki yükü azaltır. Diğer yandan Grafana, sunum katmanı olarak görev yapar. Bir veri kaynağı olarak Prometheus'a bağlanır ve PromQL (Prometheus Sorgu Dili) kullanarak zengin, etkileşimli panolar oluşturmanıza olanak tanır.
Birlikte, gevşek bağlı bir ekosistem oluştururlar: Prometheus depolama ve geri çağırma işlemlerini yönetirken, Grafana kullanıcı deneyimi ve uyarı görselleştirmesini üstlenir. Bu sorumluluk ayrımı, her bileşeni spesifik ihtiyaçlarınıza göre bağımsız olarak ölçeklendirmenize olanak tanır.
Docker Compose ile Kurulum
Bu yığına başlamanın en verimli yolu Docker Compose kullanmaktır. Bu yöntem, tekrarlanabilirliği sağlar ve yerel geliştirmeden üretime kadar farklı ortamlar arasında dağıtım sürecini basitleştirir.
Bir docker-compose.yml dosyası oluşturarak başlayın. Bu yapılandırma üç hizmet çalıştıracaktır: Prometheus, Grafana ve bir örnek uygulama (bu durumda, sistem düzeyi metrikleri ortaya çıkaran Node Exporter).
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
ports:
- "9090:9090"
networks:
- monitoring
grafana:
image: grafana/grafana:latest
container_name: grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- grafana_data:/var/lib/grafana
ports:
- "3000:3000"
depends_on:
- prometheus
networks:
- monitoring
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
ports:
- "9100:9100"
networks:
- monitoring
volumes:
prometheus_data:
grafana_data:
networks:
monitoring:
driver: bridge
Prometheus Hedeflerini Yapılandırma
Konteynerler çalışmaya başladığında, Prometheus'a metrikleri nereden toplayacağını söylemeniz gerekir. docker-compose.yml dosyanızın bulunduğu dizinde bir prometheus.yml dosyası oluşturun. Aşağıdaki yapılandırma iki iş tanımlar: biri Prometheus sunucusu kendisi için (kendi kendini izleme), diğeri ise Node Exporter için.
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
Bu yapılandırma ile Prometheus metrikleri 15 saniyede bir toplayacaktır. Kurulumu tarayıcınızda http://localhost:9090/targets adresine giderek doğrulayabilirsiniz. Hem prometheus hem de node işlerinin "UP" (Çalışıyor) durumuyla listelendiğini görmelisiniz.
İlk Panonuzu Oluşturma
Veriler Prometheus'a akarken, bir sonraki adım görselleştirmedir. Docker Compose dosyasında tanımlanan kimlik bilgileriyle (admin/admin) http://localhost:3000 adresinden Grafana'ya giriş yapın. Bağlantılar > Veri Kaynakları bölümüne gidin ve http://prometheus:9090 adresini işaret eden yeni bir Prometheus veri kaynağı ekleyin.
Yeni bir panel ekleyerek yeni bir pano oluşturun. Verilerinizi sorgulamak için PromQL kullanın. Örneğin, CPU kullanımını görselleştirmek için 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) sorgusunu kullanabilirsiniz. Bu sorgu, 5 dakikalık ortalama boşta kalan CPU süresini hesaplar ve kullanım yüzdesini elde etmek için bunu %100'den çıkarır.
Sonuç
Prometheus ve Grafana'yı uygulamak, altyapınızda gerçek gözlemlenebilirliğe ulaşmak için atılan temel bir adımdır. Bu kurulum temel düzeyi kapsasa da, ekosistem Alertmanager üzerinden uyarı kuralları ve gelişmiş hizmet keşfi mekanizmaları dahil olmak üzere çok daha fazlasını sunar. Bu araçları benimseyerek ekibinizi, proaktif sistem yönetimine geçmelerini sağlayarak, uygulamalarınız için yüksek kullanılabilirlik ve performans garanti altına alırsınız.