Prometheus ve Grafana ile metrik toplamayı keşfedin. Bu güçlü açık kaynaklı araçlarla uygulamalarınızı ve altyapınızı etkili bir şekilde izlemeyi öğrenin.
Metrik Toplama: Prometheus ve Grafana ile Kapsamlı Bir Rehber
Günümüzün karmaşık BT ortamında, uygulamaların ve altyapının sağlığını ve performansını korumak için etkili izleme şarttır. Metrik toplama, bu izlemenin temelini oluşturur; temel performans göstergelerini (KPI'lar) izlemenize, potansiyel sorunları belirlemenize ve kaynak kullanımını optimize etmenize olanak tanır. Bu kapsamlı rehber, güçlü açık kaynaklı araçlar olan Prometheus ve Grafana'yı kullanarak sağlam metrik toplama ve görselleştirme için nasıl yararlanılacağını inceleyecektir.
Metrik Toplama Nedir?
Metrik toplama, çeşitli sistemlerin, uygulamaların ve altyapı bileşenlerinin durumunu ve davranışını zaman içinde temsil eden sayısal verilerin toplanmasını içerir. Bu metrikler CPU kullanımı, bellek tüketimi, ağ trafiği, yanıt süreleri, hata oranları ve diğer birçok ilgili göstergeyi içerebilir. Bu metrikleri analiz ederek, ortamınızın performansı ve sağlığı hakkında değerli bilgiler elde edebilirsiniz.
Metrik Toplama Neden Önemlidir?
- Proaktif Sorun Tespiti: Kullanıcıları etkilemeden önce potansiyel sorunları belirleyin.
- Performans Optimizasyonu: Darboğazları ve iyileştirme alanlarını belirleyin.
- Kapasite Planlaması: Geçmiş eğilimlere dayanarak gelecekteki kaynak ihtiyaçlarını tahmin edin.
- Hizmet Seviyesi Anlaşması (SLA) İzleme: Performans hedeflerine uyumu sağlayın.
- Sorun Giderme ve Kök Neden Analizi: Sorunları hızlı bir şekilde teşhis edin ve çözün.
Prometheus ve Grafana'ya Giriş
Prometheus, orijinal olarak SoundCloud'da geliştirilmiş açık kaynaklı bir sistem izleme ve uyarı araç setidir. Zaman serisi verilerini toplama ve saklama konusunda üstündür; bu veriler zaman damgalarıyla indekslenir. Prometheus, hedeflerden (örn. sunucular, uygulamalar) düzenli aralıklarla metrikleri çekmek için çekme tabanlı bir model kullanır. Toplanan verileri analiz etmek ve uyarı kuralları tanımlamak için güçlü bir sorgu dili (PromQL) sunar.
Grafana, açık kaynaklı bir veri görselleştirme ve izleme platformudur. Prometheus dahil olmak üzere çeşitli kaynaklardan gelen verileri görselleştirmek için etkileşimli panolar ve grafikler oluşturmanıza olanak tanır. Grafana, grafikler, çizelgeler, tablolar ve göstergeler dahil olmak üzere zengin bir görselleştirme seçeneği sunar. Ayrıca, belirli eşikler aşıldığında bildirim almanızı sağlayan uyarıları da destekler.
Prometheus ve Grafana birlikte, geniş bir ortam ve kullanım senaryosu yelpazesine uyarlanabilen güçlü ve esnek bir izleme çözümü oluşturur. Dünya çapında DevOps ve SRE (Site Güvenilirlik Mühendisliği) uygulamalarında yoğun olarak kullanılırlar.
Prometheus Mimarisi ve Kavramları
Prometheus'un temel bileşenlerini anlamak, etkili uygulama ve kullanım için esastır:
- Prometheus Sunucusu: Metrikleri toplama, saklama ve sorgulamaktan sorumlu çekirdek bileşen.
- Servis Keşfi: Yapılandırmalara veya Kubernetes gibi platformlarla entegrasyonlara dayanarak izlenecek hedefleri otomatik olarak keşfeder.
- Exporters (Dışa Aktarıcılar): Metrikleri Prometheus'un anlayabileceği bir formatta sunan ajanlar. Örnekler arasında node_exporter (sistem metrikleri için) ve çeşitli uygulamaya özgü dışa aktarıcılar bulunur.
- Pushgateway (İsteğe Bağlı): Kısa ömürlü işlerin metrikleri Prometheus'a göndermesine izin verir. Bu, sürekli çalışmayan toplu işler için kullanışlıdır.
- Alertmanager: Yapılandırılmış kurallara göre Prometheus tarafından oluşturulan uyarıları yönetir. Uyarıları e-posta, Slack veya PagerDuty gibi çeşitli bildirim kanallarına yönlendirebilir.
- PromQL: Toplanan metrikleri sorgulamak ve analiz etmek için kullanılan Prometheus Sorgu Dili.
Prometheus İş Akışı
- Hedefler (Uygulamalar, Sunucular vb.) metrikleri sunar. Bu metrikler genellikle bir HTTP uç noktası aracılığıyla sunulur.
- Prometheus Sunucusu, yapılandırılmış hedeflerden metrikleri çeker. Bu uç noktalardan düzenli olarak metrikleri çeker.
- Prometheus, çekilen metrikleri zaman serisi veritabanına saklar.
- Kullanıcılar, metrikleri PromQL kullanarak sorgular. Bu, verileri analiz etmelerini ve grafikler ile panolar oluşturmalarını sağlar.
- Uyarı kuralları, saklanan metrik baz alınarak değerlendirilir. Bir kural koşulu karşılanırsa, bir uyarı tetiklenir.
- Alertmanager, tetiklenen uyarıları yönetir. Tekrarları kaldırır, gruplandırır ve uygun bildirim kanallarına yönlendirir.
Grafana Mimarisi ve Kavramları
Grafana, toplanan metrikleri görselleştirmek ve analiz etmek için kullanıcı dostu bir arayüz sağlayarak Prometheus'u tamamlar:
- Veri Kaynakları: Prometheus, Graphite, InfluxDB ve diğerleri dahil olmak üzere çeşitli veri kaynaklarına bağlantılar.
- Panolar (Dashboards): Verileri çeşitli formatlarda (grafikler, çizelgeler, tablolar vb.) görüntüleyen panel koleksiyonları.
- Paneller (Panels): Belirli bir veri kaynağındaki verileri belirli bir sorgu kullanarak görüntüleyen bireysel görselleştirmeler.
- Uyarı (Alerting): Grafana'nın ayrıca yerleşik uyarı yetenekleri vardır; bu da panolarınızda görüntülenen verilere dayalı uyarılar tanımlamanıza olanak tanır. Bu uyarılar Prometheus'u veri kaynağı olarak kullanabilir ve karmaşık uyarı mantığından yararlanmak için PromQL kullanabilir.
- Organizasyonlar ve Ekipler: Grafana, organizasyonları ve ekipleri destekleyerek panolara ve veri kaynaklarına erişim ve izinleri yönetmenize olanak tanır.
Grafana İş Akışı
- Veri Kaynaklarını Yapılandırın: Grafana'yı Prometheus sunucunuza bağlayın.
- Panolar Oluşturun: Metriklerinizi görselleştirmek için panolar tasarlayın.
- Panolara Panel Ekleyin: PromQL sorguları kullanarak belirli veri noktalarını Prometheus'tan görüntülemek için paneller ekleyin.
- Uyarıları Yapılandırın (İsteğe Bağlı): Belirli metrik eşiklerine dayalı bildirimler almak için Grafana içinde uyarı kuralları ayarlayın.
- Panoları Paylaşın: İzleme ve analiz konusunda işbirliği yapmak için panoları ekibinizle paylaşın.
Prometheus ve Grafana Kurulumu
Bu bölüm, Prometheus ve Grafana'nın kurulumu hakkında adım adım bir kılavuz sunmaktadır.
Prometheus Kurulumu
1. Prometheus'u İndirin:
Prometheus'un en son sürümünü resmi web sitesinden indirin: https://prometheus.io/download/. İşletim sisteminize uygun paketi seçin (örn. Linux, Windows, macOS).
2. Arşivi Çıkarın:
İndirilen arşivi istediğiniz bir dizine çıkarın.
3. Prometheus'u Yapılandırın:
Bir `prometheus.yml` yapılandırma dosyası oluşturun. Bu dosya, Prometheus'un hangi hedefleri çekeceğini ve diğer yapılandırma seçeneklerini tanımlar. Temel bir yapılandırma şöyle görünebilir:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
Bu yapılandırma iki kazıma işi tanımlar: biri Prometheus'un kendisi için (kendi metriklerini kazıma) ve diğeri localhost 9100 numaralı bağlantı noktasında çalışan bir node_exporter için. `scrape_interval`, Prometheus'un hedefleri ne sıklıkla kazıyacağını belirtir.
4. Prometheus'u Başlatın:
Arşivi çıkardığınız dizinden Prometheus yürütülebilir dosyasını çalıştırın:
./prometheus --config.file=prometheus.yml
Prometheus başlayacak ve varsayılan olarak 9090 numaralı bağlantı noktasını dinleyecektir. Prometheus web arayüzüne tarayıcınızda http://localhost:9090 adresinden erişebilirsiniz.
Grafana Kurulumu
1. Grafana'yı İndirin:
Grafana'nın en son sürümünü resmi web sitesinden indirin: https://grafana.com/grafana/download. İşletim sisteminize uygun paketi seçin.
2. Grafana'yı Kurun:
İşletim sisteminize uygun kurulum talimatlarını izleyin. Örneğin, Debian/Ubuntu'da:
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
3. Grafana'yı Başlatın:
Grafana hizmetini başlatın:
sudo systemctl start grafana-server
4. Grafana'ya Erişin:
Grafana varsayılan olarak 3000 numaralı bağlantı noktasını dinleyecektir. Grafana web arayüzüne tarayıcınızda http://localhost:3000 adresinden erişebilirsiniz.
Varsayılan kullanıcı adı ve şifre `admin` ve `admin`'dir. İlk girişinizde şifreyi değiştirmeniz istenecektir.
Grafana'yı Prometheus'a Bağlama
Grafana'da Prometheus'tan gelen metrikleri görselleştirmek için, Grafana'da Prometheus'u bir veri kaynağı olarak yapılandırmanız gerekir.
1. Veri Kaynağı Ekleme:
Grafana web arayüzünde, Yapılandırma > Veri Kaynakları'na gidin ve Veri kaynağı ekle'ye tıklayın.
2. Prometheus'u Seçin:
Veri kaynağı türü olarak Prometheus'u seçin.
3. Prometheus Bağlantısını Yapılandırın:
Prometheus sunucunuzun URL'sini girin (örn. `http://localhost:9090`). Diğer seçenekleri gerektiği gibi yapılandırın (örn. kimlik doğrulama).
4. Kaydet ve Test Et:
Grafana'nın Prometheus'a başarıyla bağlanabildiğini doğrulamak için Kaydet ve Test Et'e tıklayın.
Grafana'da Pano Oluşturma
Grafana'yı Prometheus'a bağladıktan sonra, metriklerinizi görselleştirmek için panolar oluşturabilirsiniz.
1. Yeni Bir Pano Oluşturun:
Grafana web arayüzünde, kenar çubuğundaki + simgesine tıklayın ve Pano'yu seçin.
2. Bir Panel Ekleyin:
Panoya yeni bir panel eklemek için Boş bir panel ekle'ye tıklayın.
3. Paneli Yapılandırın:
- Veri Kaynağını Seçin: Daha önce yapılandırdığınız Prometheus veri kaynağını seçin.
- PromQL Sorgusu Girin: Görselleştirmek istediğiniz metriği almak için bir PromQL sorgusu girin. Örneğin, CPU kullanımını görüntülemek için aşağıdaki sorguyu kullanabilirsiniz:
rate(process_cpu_seconds_total{job="node_exporter"}[5m])
Bu sorgu, node_exporter tarafından toplanan süreçler tarafından kullanılan CPU süresindeki 5 dakikalık bir aralıktaki değişim oranını hesaplar.
- Görselleştirme Seçeneklerini Yapılandırın: Görselleştirme türünü (örn. grafik, gösterge, tablo) seçin ve diğer seçenekleri gerektiği gibi yapılandırın (örn. eksen etiketleri, renkler).
4. Panoyu Kaydedin:
Panoyu kaydetmek için kaydet simgesine tıklayın.
PromQL: Prometheus Sorgu Dili
PromQL, Prometheus'ta saklanan metrikleri almak ve işlemek için kullanılan güçlü bir sorgu dilidir. Aşağıdakiler dahil olmak üzere geniş bir işlem yelpazesini gerçekleştirmenize olanak tanır:
- Filtreleme: Etiketlere göre metrikleri seçin.
- Toplama: Zaman aralıkları veya birden çok örnek üzerinde toplu değerler (örn. toplam, ortalama, maksimum) hesaplayın.
- Oran Hesaplama: Sayaç metriklerinin değişim oranını hesaplayın.
- Aritmetik İşlemler: Metrikler üzerinde aritmetik işlemler yapın (örn. toplama, çıkarma, çarpma).
- Zaman Serisi Fonksiyonları: Zaman serisi verilerine fonksiyonlar uygulayın (örn. hareketli ortalama, yumuşatma).
PromQL Örnekleri
- CPU Kullanımı:
rate(process_cpu_seconds_total{job="node_exporter"}[5m])
- Bellek Kullanımı:
node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes
- Disk Alanı Kullanımı:
(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100
- HTTP İstek Oranı:
rate(http_requests_total[5m])
PromQL öğrenmek, Prometheus ve Grafana'yı etkili bir şekilde kullanmak için esastır. Dile kapsamlı bir rehber için Prometheus belgelerine bakın.
Prometheus ve Alertmanager ile Uyarı Yapma
Prometheus, metrik değerlere dayalı kurallar tanımlamanıza olanak tanıyan sağlam bir uyarı sistemi sunar. Bir kural koşulu karşılandığında bir uyarı tetiklenir ve Alertmanager bildirim sürecini yönetir.
Uyarı Kuralları Tanımlama
Uyarı kuralları `prometheus.yml` yapılandırma dosyasında tanımlanır. İşte CPU kullanımının %80'i aştığında uyarıyı tetikleyen bir uyarı kuralı örneği:
rule_files:
- "rules.yml"
Ardından, `rules.yml` adında bir dosyada şöyle kurallar yerleştirin:
groups:
- name: example
rules:
- alert: HighCPUUsage
expr: rate(process_cpu_seconds_total{job="node_exporter"}[5m]) > 0.8
for: 1m
labels:
severity: critical
annotations:
summary: "Yüksek CPU kullanımı tespit edildi"
description: "CPU kullanımı {{ $labels.instance }} üzerinde %80'in üzerinde."
Açıklama:
- alert: Uyarının adı.
- expr: Uyarı koşulunu tanımlayan PromQL ifadesi.
- for: Uyarının tetiklenmesinden önce koşulun geçerli olması gereken süre.
- labels: Uyarıya eklenen etiketler.
- annotations: Uyarı özeti ve açıklaması gibi uyarıyla ilgili ek bilgiler sağlayan ek açıklamalar.
Alertmanager'ı Yapılandırma
Alertmanager, uyarıların yönlendirilmesini ve bildirilmesini yönetir. Uyarıların nereye gönderileceğini (örn. e-posta, Slack, PagerDuty) belirtmek için Alertmanager'ı yapılandırmanız gerekir. Detaylı yapılandırma talimatları için Alertmanager belgelerine bakın.
Minimal bir `alertmanager.yml` yapılandırması şöyle görünebilir:
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receiver: 'web.hook'
receivers:
- name: 'web.hook'
webhook_configs:
- url: 'http://localhost:8080/'
Bu yapılandırma, localhost 8080 numaralı bağlantı noktasındaki bir webhook'a uyarı gönderir. Slack veya e-posta gibi hizmetleri kullanmak için `receivers` bölümünü özelleştirebilirsiniz.
Pratik Örnekler ve Kullanım Senaryoları
Prometheus ve Grafana, çok çeşitli uygulamaları ve altyapı bileşenlerini izlemek için kullanılabilir. İşte bazı pratik örnekler:
- Web Sunucusu İzleme: Optimal web sunucusu performansını sağlamak için HTTP istek oranlarını, yanıt sürelerini ve hata oranlarını izleyin.
- Veritabanı İzleme: Veritabanı darboğazlarını belirlemek için veritabanı bağlantı havuzu kullanımını, sorgu yürütme sürelerini ve yavaş sorguları izleyin.
- Kubernetes İzleme: Pod'ların ve düğümlerin kaynak kullanımını da içeren Kubernetes kümelerinin sağlığını ve performansını izleyin.
- Uygulama İzleme: Belirli iş KPI'larını izlemek ve uygulama düzeyindeki sorunları belirlemek için uygulamalarınızdan özel metrikler toplayın.
- Ağ İzleme: Ağ darboğazlarını ve performans sorunlarını belirlemek için ağ trafiğini, gecikmeyi ve paket kaybını izleyin.
- Bulut Altyapısı İzleme: Sanal makineler, depolama ve veritabanları gibi bulut kaynaklarının performansını ve kullanılabilirliğini izleyin. Bu, hem AWS, Azure hem de Google Cloud ortamları için özellikle önemlidir; hepsi Prometheus ve Grafana ile entegrasyonlara sahiptir.
Örnek: Mikroservis Mimarisi İzleme
Bir mikroservis mimarisinde, Prometheus ve Grafana, bireysel hizmetlerin yanı sıra genel sistemin sağlığını ve performansını izlemek için kullanılabilir. Her hizmet, istek oranları, yanıt süreleri ve hata oranları gibi kendi metriklerini sunabilir. Prometheus daha sonra bu metrikleri çekebilir ve Grafana bunları görselleştirmek için kullanılabilir. Bu, belirli hizmetlerde performans darboğazlarını veya hataları hızlı bir şekilde belirlemenizi sağlar.
Gelişmiş Teknikler ve En İyi Uygulamalar
Prometheus ve Grafana'dan en iyi şekilde yararlanmak için aşağıdaki gelişmiş teknikleri ve en iyi uygulamaları göz önünde bulundurun:
- Anlamlı Etiketler Kullanın: Metriklerinize bağlam eklemek için etiketleri kullanın. Bu, verileri filtrelemeyi ve toplamayı kolaylaştırır. Örneğin, bir metriğin ilişkili olduğu hizmeti, ortamı ve örneği belirlemek için etiketleri kullanın.
- Anahtar Performans Göstergelerini (KPI'lar) İzleyin: İşiniz için en kritik olan metrikleri izlemeye odaklanın. Bu, en büyük etkiye sahip sorunları hızlı bir şekilde belirlemenize ve çözmenize olanak tanır.
- Uygun Uyarı Eşiklerini Ayarlayın: Ortamınıza uygun uyarı eşiklerini ayarlayın. Çok hassas eşikler ayarlamaktan kaçının, çünkü bu uyarı yorgunluğuna yol açabilir.
- Panoları Etkin Kullanın: Anlaşılması kolay ve eyleme geçirilebilir bilgiler sağlayan panolar tasarlayın. Açık ve öz etiketler ve görselleştirmeler kullanın.
- Dağıtım ve Yapılandırmayı Otomatikleştirin: Ansible, Terraform veya Kubernetes gibi araçları kullanarak Prometheus ve Grafana'nın dağıtımını ve yapılandırmasını otomatikleştirin.
- Prometheus ve Grafana Örneklerinizi Güvenli Hale Getirin: Yetkisiz erişimi önlemek için Prometheus ve Grafana örneklerinizi güvence altına alın. Hassas verilere erişimi kontrol etmek için kimlik doğrulama ve yetkilendirme kullanın.
- Yatay Ölçeklendirmeyi Düşünün: Büyük ortamlar için, artan yükü işlemek üzere Prometheus ve Grafana örneklerinizi yatay olarak ölçeklendirmeyi düşünün. Bu, bir yük dengeleyicinin arkasında birden fazla Prometheus sunucusu ve Grafana örneği kullanılarak gerçekleştirilebilir.
- Servis Keşfini Kullanın: Otomatik olarak yeni hedefleri keşfetmek ve izlemek için Prometheus'un servis keşif yeteneklerinden yararlanın. Bu, Kubernetes gibi dinamik ortamlarda özellikle kullanışlıdır.
Yaygın Sorunların Giderilmesi
Dikkatli planlama ve uygulama ile bile Prometheus ve Grafana kullanırken sorunlarla karşılaşabilirsiniz. İşte yaygın sorunlar ve çözümleri:
- Prometheus Metrikleri Çekmiyor: Hedefin Prometheus sunucusundan erişilebilir olduğunu doğrulayın. Hatalar için Prometheus günlüklerini kontrol edin. Hedefin doğru biçimde metrikler sunduğundan emin olun.
- Grafana Prometheus'a Bağlanmıyor: Grafana veri kaynağı yapılandırmasındaki Prometheus URL'sinin doğru olduğunu doğrulayın. Hatalar için Grafana günlüklerini kontrol edin. Prometheus sunucusunun çalıştığından ve Grafana sunucusundan erişilebilir olduğundan emin olun.
- PromQL Sorguları Veri Döndürmüyor: PromQL sorgusunun doğru olduğunu doğrulayın. Hatalar için Prometheus günlüklerini kontrol edin. Sorguladığınız metriğin mevcut olduğundan ve Prometheus tarafından çekildiğinden emin olun.
- Uyarılar Tetiklenmiyor: Uyarı kuralının doğru tanımlandığını doğrulayın. Hatalar için Prometheus günlüklerini kontrol edin. Alertmanager'ın çalıştığından ve doğru şekilde yapılandırıldığından emin olun.
- Performans Sorunları: Performans sorunları yaşıyorsanız, Prometheus ve Grafana örneklerinizi yatay olarak ölçeklendirmeyi düşünün. Prometheus sunucusundaki yükü azaltmak için PromQL sorgularınızı optimize edin.
Alternatif İzleme Çözümleri
Prometheus ve Grafana güçlü araçlar olsa da, metrik toplama ve görselleştirme için tek seçenek değillerdir. Diğer popüler izleme çözümleri şunlardır:
- Datadog: Metrik toplama, günlük yönetimi ve uygulama performansı izleme (APM) dahil olmak üzere çok çeşitli özellikler sunan ticari bir izleme platformu.
- New Relic: Uygulamalar ve altyapı için kapsamlı izleme yetenekleri sağlayan başka bir ticari izleme platformu.
- InfluxDB ve Chronograf: Genellikle Prometheus ve Grafana'ya alternatif olarak kullanılan bir zaman serisi veritabanı ve görselleştirme platformu.
- Elasticsearch, Logstash ve Kibana (ELK Stack): Günlük yönetimi ve analizi için popüler bir açık kaynak yığını. Öncelikle günlükler için kullanılsa da, metrik toplama ve görselleştirme için de kullanılabilir.
- Dynatrace: Uygulama ve altyapı performansına uçtan uca görünürlük sağlayan yapay zeka destekli bir izleme platformu.
Kuruluşunuz için en iyi izleme çözümü, özel gereksinimlerinize ve bütçenize bağlı olacaktır.
Sonuç
Metrik toplama, uygulamaların ve altyapının sağlığını ve performansını sürdürmek için esastır. Prometheus ve Grafana, metrikleri toplama, saklama ve görselleştirme için güçlü ve esnek bir açık kaynak çözümü sunar. Bu rehberde belirtilen temel kavramları anlayarak ve en iyi uygulamaları izleyerek, Prometheus ve Grafana'yı kuruluşunuzun ihtiyaçlarını karşılayan sağlam bir izleme sistemi oluşturmak için kullanabilirsiniz.
Etkili izleme, proaktif uyarılar ve hızlı olay müdahalesi ile birlikte modern BT operasyonlarının temel taşıdır. Prometheus ve Grafana gibi araçları benimsemek, kuruluşların konumları veya sektörleri ne olursa olsun, kullanıcılarına güvenilir ve performanslı hizmetler sunmalarını sağlar.