DevOps and Infrastructure

Modern Gözlemlenebilirliği Uzmanlık Seviyesine Getirmek: Prometheus ve Grafana İçin Kapsamlı Rehber

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.

Share: