Türkçe

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?

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 İş Akışı

  1. Hedefler (Uygulamalar, Sunucular vb.) metrikleri sunar. Bu metrikler genellikle bir HTTP uç noktası aracılığıyla sunulur.
  2. Prometheus Sunucusu, yapılandırılmış hedeflerden metrikleri çeker. Bu uç noktalardan düzenli olarak metrikleri çeker.
  3. Prometheus, çekilen metrikleri zaman serisi veritabanına saklar.
  4. Kullanıcılar, metrikleri PromQL kullanarak sorgular. Bu, verileri analiz etmelerini ve grafikler ile panolar oluşturmalarını sağlar.
  5. Uyarı kuralları, saklanan metrik baz alınarak değerlendirilir. Bir kural koşulu karşılanırsa, bir uyarı tetiklenir.
  6. 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:

Grafana İş Akışı

  1. Veri Kaynaklarını Yapılandırın: Grafana'yı Prometheus sunucunuza bağlayın.
  2. Panolar Oluşturun: Metriklerinizi görselleştirmek için panolar tasarlayın.
  3. Panolara Panel Ekleyin: PromQL sorguları kullanarak belirli veri noktalarını Prometheus'tan görüntülemek için paneller ekleyin.
  4. 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.
  5. 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:


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.

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:

PromQL Örnekleri


rate(process_cpu_seconds_total{job="node_exporter"}[5m])

node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes

(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100

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:

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:

Ö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:

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:

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:

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.