Prometheus ve Grafana ile Sunucu İzleme ve Metrik Takibi

Modern uygulamaların kesintisiz çalışması, yalnızca güçlü sunucular kullanmakla değil, sistem performansını sürekli izlemekle de mümkündür. Sunucu kaynaklarının anlık durumu, uygulama yanıt süreleri, ağ trafiği, disk kullanımı ve hata oranları düzenli olarak takip edilmediğinde küçük bir performans sorunu kısa sürede ciddi bir kesintiye dönüşebilir.
Prometheus ve Grafana, sunucu izleme ve metrik takibi için en yaygın kullanılan açık kaynaklı araçlar arasında yer alır. Prometheus metrikleri toplar, saklar ve sorgulanabilir hâle getirirken Grafana bu verileri anlaşılır grafikler, paneller ve uyarılar üzerinden sunar. Bu iki aracın birlikte kullanılması, sistem yöneticilerine ve DevOps ekiplerine güçlü bir gözlemleme altyapısı sağlar.
Prometheus Nedir?
Prometheus, özellikle dinamik ve dağıtık sistemleri izlemek amacıyla geliştirilmiş açık kaynaklı bir izleme ve zaman serisi veritabanı çözümüdür. CNCF ekosisteminin önemli projelerinden biri olan Prometheus, sunucu ve uygulamalardan belirli aralıklarla metrik toplar.
Prometheus’un temel çalışma modeli, izlenecek hedeflerden metrikleri çekmeye dayanır. Bu işlem genellikle “scrape” olarak adlandırılır. Prometheus, hedef sistemlerdeki metrik uç noktalarına bağlanarak CPU kullanımı, bellek tüketimi, disk alanı, ağ trafiği ve uygulama performansı gibi verileri toplar.
Prometheus’un Öne Çıkan Özellikleri
- Zaman serisi veri modeli: Metrikler zaman bilgisiyle birlikte saklanır.
- PromQL desteği: Toplanan veriler güçlü bir sorgulama diliyle analiz edilebilir.
- Çekme tabanlı mimari: Prometheus, metrikleri hedef sistemlerden belirli aralıklarla alır.
- Esnek etiketleme: Metrikler sunucu, uygulama, ortam veya bölge gibi etiketlerle ayrıştırılabilir.
- Uyarı mekanizması: Belirlenen eşikler aşıldığında bildirim oluşturulabilir.
- Zengin entegrasyon seçenekleri: Kubernetes, Linux, Docker, veritabanları ve bulut servisleriyle birlikte çalışabilir.
Grafana Nedir?
Grafana, farklı veri kaynaklarından gelen bilgileri görselleştirmek için kullanılan açık kaynaklı bir analiz ve izleme platformudur. Prometheus tarafından toplanan metrikler Grafana üzerinde grafik, tablo, gösterge, ısı haritası ve durum paneli gibi görsel bileşenlerle sunulabilir.
Grafana sayesinde teknik ekipler, çok sayıda sunucunun durumunu tek bir ekrandan takip edebilir. Hazırlanan paneller yalnızca sistem yöneticileri için değil, yazılım geliştiriciler ve yöneticiler için de anlaşılır raporlar oluşturacak şekilde özelleştirilebilir.
Grafana ile Neler İzlenebilir?
- Sunucu CPU kullanımı ve işlemci yükü
- RAM kullanımı ve kullanılabilir bellek miktarı
- Disk doluluk oranı ve disk I/O performansı
- Ağ giriş ve çıkış trafiği
- Uygulama istek sayısı ve hata oranı
- HTTP yanıt süreleri
- Veritabanı bağlantı sayısı ve sorgu performansı
- Konteyner ve Kubernetes kaynak kullanımı
- Sunucu çalışma süresi ve yeniden başlatma bilgileri
Prometheus ve Grafana Birlikte Nasıl Çalışır?
Prometheus ve Grafana farklı görevler üstlenir. Prometheus verileri toplar ve depolar; Grafana ise bu verileri sorgulayarak görsel panellere dönüştürür. Bu nedenle iki araç birbirinin alternatifi değil, tamamlayıcısıdır.
- Exporter: Sunucu veya uygulamadaki metrikleri Prometheus’un anlayabileceği formata dönüştürür.
- Prometheus: Exporter üzerinden metrikleri toplar, zaman serisi olarak saklar ve sorgulanabilir hâle getirir.
- Grafana: Prometheus veri kaynağına bağlanarak metrikleri grafikler ve paneller hâlinde gösterir.
- Alertmanager: Uyarıları yönetir ve e-posta, Slack veya benzeri kanallara bildirim gönderir.
Sunucu İzleme İçin Node Exporter Kullanımı
Linux sunucularını izlemek için en çok kullanılan Prometheus bileşenlerinden biri Node Exporter aracıdır. Node Exporter, işletim sistemi ve donanım seviyesindeki metrikleri toplar. Bu metrikler arasında işlemci istatistikleri, bellek kullanımı, dosya sistemi bilgileri, disk işlemleri ve ağ arayüzü verileri bulunur.
Node Exporter kurulduktan sonra genellikle bir metrik uç noktası oluşturur. Prometheus bu uç noktaya bağlanarak sunucu verilerini belirlenen aralıklarla toplar. Birden fazla sunucunun izlenmesi gerektiğinde her sunucu Prometheus yapılandırmasında ayrı bir hedef olarak tanımlanabilir.
İzlenmesi Gereken Temel Sunucu Metrikleri
| Metrik | Ne Anlatır? | Riskli Durum |
|---|---|---|
| CPU Kullanımı | İşlemci kaynaklarının ne kadar kullanıldığını gösterir. | Uzun süre yüzde 80-90 üzeri kullanım |
| Bellek Kullanımı | RAM tüketimini ve sistemde kalan kullanılabilir belleği gösterir. | Swap kullanımının artması ve düşük boş bellek |
| Disk Kullanımı | Dosya sistemlerinin doluluk oranını gösterir. | Yüzde 85 ve üzeri disk doluluğu |
| Disk I/O | Disk okuma ve yazma işlemlerinin yoğunluğunu gösterir. | Yüksek bekleme süresi ve yavaş disk yanıtı |
| Ağ Trafiği | Sunucuya giren ve sunucudan çıkan veri miktarını gösterir. | Beklenmeyen trafik artışı veya paket kaybı |
| Load Average | Sunucudaki işlem yükünün zaman içindeki durumunu gösterir. | CPU çekirdek sayısını sürekli aşan yük |
| Sunucu Çalışma Süresi | Sistemin son yeniden başlatmadan bu yana ne kadar süredir çalıştığını gösterir. | Sık yeniden başlatma veya beklenmedik kapanma |
Grafana Dashboard Tasarımı
Etkili bir Grafana dashboard, mümkün olduğunca fazla grafik eklemekten ibaret değildir. İyi tasarlanmış bir panel, önemli bilgileri önceliklendirir ve sorunları hızlı şekilde fark etmeyi sağlar. Dashboard hazırlanırken teknik ekiplerin günlük operasyonlarda ihtiyaç duyduğu metrikler öne çıkarılmalıdır.
Önerilen Dashboard Bölümleri
- Genel sistem durumu: Sunucu sayısı, aktif uyarılar ve erişilemeyen hedefler.
- CPU paneli: Anlık işlemci kullanımı, sistem yükü ve çekirdek bazlı performans.
- Bellek paneli: Kullanılan RAM, boş bellek, cache ve swap kullanımı.
- Disk paneli: Doluluk oranı, inode kullanımı ve disk okuma-yazma performansı.
- Ağ paneli: Gelen-giden trafik, hata paketleri ve ağ arayüzlerinin durumu.
- Uygulama paneli: İstek sayısı, hata oranı, yanıt süresi ve aktif kullanıcı bilgileri.
Grafana’da paneller sunucu adına, uygulama ortamına, veri merkezine veya hizmet türüne göre filtrelenebilir. Böylece ekipler yalnızca ihtiyaç duydukları sistemleri görüntüleyebilir. Gelişmiş değişken kullanımı, aynı dashboard’un farklı sunucular veya ortamlar için tekrar kullanılmasını sağlar.
PromQL ile Metrik Sorgulama
Prometheus’un sorgulama dili olan PromQL, zaman serisi verilerini analiz etmek için kullanılır. PromQL sayesinde ortalama CPU kullanımı hesaplanabilir, belirli bir zaman aralığındaki istek sayısı incelenebilir veya hata oranı belirlenebilir.
Örneğin CPU kullanımı, bellek tüketimi veya HTTP isteklerinin toplam sayısı gibi değerler PromQL sorguları üzerinden Grafana panellerine aktarılabilir. Sorgular hazırlanırken yalnızca anlık değerleri değil, zaman içindeki değişimleri de incelemek önemlidir. Ani artışlar kadar sürekli yükselen trendler de altyapı kapasitesinin yetersiz kalabileceğine işaret eder.
Uyarı ve Alarm Yönetimi
Sunucu izleme sisteminin en önemli bölümlerinden biri uyarı yönetimidir. Ancak her küçük değişiklik için alarm üretmek, zaman içinde alarm yorgunluğuna neden olabilir. Bu nedenle uyarılar, gerçekten müdahale gerektiren durumlara göre yapılandırılmalıdır.
Örnek Uyarı Senaryoları
- CPU kullanımının 10 dakika boyunca belirlenen seviyenin üzerinde kalması
- Disk doluluk oranının kritik eşiği aşması
- Sunucunun Prometheus tarafından erişilememesi
- HTTP 5xx hata oranının normal seviyenin üzerine çıkması
- Uygulama yanıt süresinin belirlenen süreden uzun olması
- RAM yetersizliği nedeniyle swap kullanımının artması
- SSL sertifikasının son kullanma tarihinin yaklaşması
Uyarıların önem derecesi de belirlenmelidir. Bilgilendirme seviyesindeki bildirimler raporlama amacıyla kullanılabilirken kritik uyarılar doğrudan nöbetçi ekibe iletilmelidir. Bildirim kanalları arasında e-posta, Slack, Microsoft Teams, PagerDuty ve benzeri servisler bulunabilir.
Prometheus ve Grafana Kurulumunda Dikkat Edilmesi Gerekenler
Kurulum sırasında yalnızca servisleri çalıştırmak yeterli değildir. İzleme altyapısının güvenilir, sürdürülebilir ve güvenli olması gerekir. Aşağıdaki noktalar, başarılı bir Prometheus ve Grafana kurulumu için önem taşır.
- Veri saklama süresi: Prometheus’un ne kadar süre veri tutacağı belirlenmelidir.
- Disk kapasitesi: Yüksek örnekleme sıklığı daha fazla depolama alanı gerektirir.
- Ağ erişimi: Prometheus’un metrik hedeflerine güvenli şekilde ulaşabilmesi sağlanmalıdır.
- Kimlik doğrulama: Grafana panelleri ve Prometheus uç noktaları yetkisiz erişime karşı korunmalıdır.
- HTTPS kullanımı: Yönetim arayüzleri ve dış erişim noktaları şifreli bağlantıyla sunulmalıdır.
- Yedekleme: Grafana dashboard’ları, kullanıcı ayarları ve kritik yapılandırmalar yedeklenmelidir.
- Etiket yönetimi: Gereksiz veya yüksek çeşitliliğe sahip etiketler depolama maliyetini artırabilir.
Prometheus ve Grafana Kullanmanın Avantajları
Prometheus ve Grafana, küçük bir sunucu ortamından büyük ölçekli mikroservis mimarilerine kadar farklı ihtiyaçlara uyarlanabilir. Açık kaynaklı olmaları, lisans maliyetlerini azaltırken geniş topluluk desteği sayesinde hazır dashboard ve entegrasyon seçenekleri sunar.
- Sunucu sorunlarını kullanıcılar fark etmeden önce tespit etme
- Performans trendlerini geçmiş verilerle karşılaştırma
- Kapasite planlamasını gerçek verilere dayandırma
- Uygulama ve altyapı ekipleri arasında ortak gözlemleme kültürü oluşturma
- Manuel kontrolleri azaltarak operasyonel verimliliği artırma
- Kesinti sonrası kök neden analizini kolaylaştırma
- Kubernetes ve konteyner ortamlarını ayrıntılı şekilde izleme
Yaygın Hatalar ve En İyi Uygulamalar
İzleme sistemlerinde en sık yapılan hatalardan biri, çok fazla metriği herhangi bir önceliklendirme yapmadan toplamaktır. Her metrik aynı derecede önemli değildir. Öncelikle hizmet seviyesini etkileyen temel göstergeler belirlenmeli, daha sonra ihtiyaç duyulan ayrıntılı metrikler eklenmelidir.
Bir diğer hata, yalnızca altyapı kaynaklarını izlemektir. CPU ve RAM değerleri normal olsa bile bir uygulamanın yanıt süresi artabilir veya veritabanı sorguları yavaşlayabilir. Bu nedenle altyapı metrikleriyle birlikte uygulama performans metrikleri de takip edilmelidir.
Başarılı Bir İzleme Stratejisi İçin Öneriler
- İzleme hedeflerini ve kritik hizmetleri önceden belirleyin.
- Her uyarı için sorumlu ekip ve müdahale prosedürü tanımlayın.
- Dashboard’ları rol bazlı hazırlayın.
- Uzun dönemli trendleri düzenli olarak inceleyin.
- Metrik toplama aralıklarını sistemin önemine göre ayarlayın.
- Prometheus verilerinde gereksiz yüksek kardinaliteden kaçının.
- Uyarıları gerçek olaylarla test edin.
- İzleme sisteminin kendisini de izleyin.
Sonuç
Prometheus ve Grafana ile sunucu izleme, sistem performansını görünür hâle getirmenin, sorunları erken tespit etmenin ve hizmet sürekliliğini artırmanın etkili yollarından biridir. Prometheus güçlü metrik toplama ve sorgulama yetenekleri sunarken Grafana, bu verileri anlaşılır ve işlevsel dashboard’lara dönüştürür.
Doğru yapılandırılmış bir izleme altyapısı sayesinde CPU, RAM, disk, ağ, uygulama ve veritabanı performansı tek merkezden takip edilebilir. Uygun uyarı kuralları ve düzenli analiz süreçleriyle ekipler, yalnızca mevcut sorunlara müdahale etmekle kalmaz; gelecekte oluşabilecek kapasite ve performans problemlerini de önceden öngörebilir.
Sunucu sayısı arttıkça veya uygulama mimarisi karmaşıklaştıkça gözlemlenebilirlik daha kritik hâle gelir. Bu nedenle Prometheus ve Grafana, sürdürülebilir, ölçülebilir ve güvenilir bir BT altyapısı oluşturmak isteyen ekipler için güçlü bir başlangıç noktasıdır.