Prometheus ile Gerçek Zamanlı Sunucu Metrikleri Nedir?
Prometheus'un temel amacı, dağıtık sistemler ve mikroservis mimarileri gibi dinamik ortamlarda güvenilir bir izleme çözümü sunmaktır. Geleneksel izleme araçlarının aksine, Prometheus daha esnek bir veri modeli ve daha güçlü bir sorgulama dili (PromQL) ile öne çıkar. Bu sayede, sadece temel metrikler değil, aynı zamanda uygulama katmanına özgü karmaşık metrikler de toplanabilir ve analiz edilebilir. Tarihsel olarak, Prometheus, SoundCloud tarafından geliştirilmiş ve daha sonra CNCF (Cloud Native Computing Foundation) bünyesine katılarak açık kaynak topluluğunun desteğiyle hızla yaygınlaşmıştır.
Prometheus ile sunucu metriklerini toplamak, aşağıdaki gibi geniş bir kullanım alanına sahiptir:
- Sunucu Sağlığı ve Erişilebilirliği: CPU, RAM, disk I/O gibi temel kaynak kullanımlarını izleyerek sunucuların sağlıklı çalıştığından emin olmak.
- Uygulama Performansı: İstek gecikmeleri, hata oranları, iş kuyruğu uzunlukları gibi uygulama seviyesindeki metrikleri takip ederek kullanıcı deneyimini optimize etmek.
- Ağ Trafiği: Ağ bant genişliği kullanımı, paket kayıpları gibi ağ performansını izlemek.
- Kapasite Planlama: Kaynak kullanım trendlerini analiz ederek gelecekteki ihtiyaçları öngörmek ve ölçeklendirme kararları almak.
- Uyarı ve Bildirim: Belirlenen eşik değerlerin aşılması durumunda otomatik uyarılar oluşturarak proaktif müdahale sağlamak.
- Sorun Giderme (Troubleshooting): Olası bir sorun anında, gerçek zamanlı ve geçmiş verilere dayanarak kök nedeni hızlıca bulmak.
Prometheus'un bu esnekliği ve gücü, onu modern BT altyapılarında vazgeçilmez bir izleme aracı haline getirmiştir. Özellikle bulut tabanlı, konteynerize ve mikroservis tabanlı ortamlarda, dinamik olarak değişen altyapıyı izlemek için idealdir.
Prometheus ile Gerçek Zamanlı Sunucu Metrikleri Nasıl Çalışır?
Prometheus'un çalışma prensibi, "scraping" adı verilen bir mekanizma üzerine kuruludur. Bu süreçte, Prometheus sunucusu, belirli HTTP uç noktalarına (endpoint) düzenli aralıklarla istek göndererek metrikleri toplar. Bu metrikler, genellikle insan tarafından okunabilir formatta (text-based exposition format) sunulur. Prometheus, bu toplanan verileri kendi zaman serisi veritabanında (TSDB) depolar. Prometheus'un mimarisi, temel olarak birkaç ana bileşenden oluşur:
- Prometheus Server: Ana bileşendir. Zamanlanmış görevleri yürütür, hedefleri keşfeder (service discovery), metrikleri toplar (scrape), bunları TSDB'ye yazar ve PromQL sorgularını işler.
- Metric Collection & Storage: Prometheus'un kendisi metrikleri toplar ve bunları zaman serisi veritabanında saklar. Bu veritabanı, veri sıkıştırma ve sorgu performansı için optimize edilmiştir.
- Service Discovery: Prometheus, metriklerini toplayacağı hedefleri statik dosyalardan, DNS'ten veya çeşitli dinamik keşif servislerinden (Kubernetes, EC2, Consul vb.) öğrenebilir. Bu, altyapıdaki değişikliklere otomatik olarak adapte olmasını sağlar.
- Exporters: Prometheus'un doğrudan toplayamayacağı metrikleri (örneğin, bir veritabanı veya bir web sunucusunun iç metrikleri) dışarıya sunan küçük, tekil uygulamalardır. Node Exporter, sunucu seviyesindeki metrikleri (CPU, RAM, disk, ağ) toplamak için yaygın olarak kullanılır.
- Alertmanager: Prometheus'tan gelen uyarıları (alerts) alır, bunları gruplandırır, yönlendirir ve çeşitli bildirim kanallarına (e-posta, Slack, PagerDuty vb.) iletir. Uyarıların tekrarını önler ve farklı yönlendirme kuralları tanımlamaya olanak tanır.
- PromQL (Prometheus Query Language): Prometheus'un sunduğu güçlü sorgulama dilidir. Toplanan zaman serisi verileri üzerinde karmaşık analizler yapmaya, veri manipülasyonu gerçekleştirmeye ve yeni metrikler türetmeye yarar.
Prometheus'un çalışma adımları şu şekilde özetlenebilir:
- Yapılandırma ve Hedef Belirleme: Prometheus sunucusu, hangi hedefleri izleyeceğini ve bu hedeflere ne sıklıkla istek göndereceğini yapılandırma dosyasında (prometheus.yml) belirtir. Service discovery modülleri sayesinde bu hedefler dinamik olarak da belirlenebilir.
- Metrik Toplama (Scraping): Yapılandırmada belirtilen aralıklarla (genellikle 15 saniye veya 30 saniye), Prometheus sunucusu, hedeflerin (genellikle exporter'lar aracılığıyla) `/metrics` gibi belirlenmiş HTTP uç noktalarına istek gönderir.
- Veri İşleme ve Depolama: Gelen metrikler, Prometheus'un zaman serisi veritabanına yazılır. Her metrik, benzersiz bir tanımlayıcı (metric name + labels) ile birlikte zaman damgası ve değeriyle saklanır.
- Sorgulama ve Görselleştirme: Kullanıcılar, PromQL kullanarak veritabanındaki metrikleri sorgulayabilir. Bu sorgular, Prometheus'un web arayüzünden veya Grafana gibi harici görselleştirme araçlarıyla (ki bu, Prometheus'un en yaygın kullanım senaryolarından biridir) gerçekleştirilir.
- Uyarı Oluşturma: Prometheus, tanımlanmış kurallara (alerting rules) göre metrikleri sürekli izler. Bir eşik aşıldığında veya belirli bir durum oluştuğunda, bir uyarı tetiklenir ve Alertmanager'a gönderilir.
- Uyarı Yönetimi: Alertmanager, gelen uyarıları alır, gruplandırır, sessize alır (silencing) ve yapılandırılmış bildirim kanallarına gönderir.
Bu döngüsel süreç, Prometheus'un gerçek zamanlı sunucu metriklerini sürekli olarak toplamasını, işlemesini ve analiz etmesini sağlar.
Prometheus ile Gerçek Zamanlı Sunucu Metrikleri Türleri
Prometheus'ta metrikler, veri modellerine ve toplama yöntemlerine göre çeşitli türlere ayrılır. Bu türler, farklı izleme ihtiyaçlarını karşılamak üzere tasarlanmıştır. Prometheus'un metrik türleri, temel olarak dört ana kategoriye ayrılır:
- Counter (Sayaç): Yalnızca artan, tek yönlü değerleri temsil eden metriklerdir. Örneğin, bir sunucuya gelen toplam istek sayısı, bir işlemin başarıyla tamamlanma sayısı gibi değerler sayaçlarla ölçülür. Bir sayaç sıfırlansa bile, bu durum metriklerin "bug" olduğunu değil, sayaç değerinin değiştiğini gösterir. Prometheus, sayacın değerini toplarken, sıfırlanma durumlarını da dikkate alabilir.
- Gauge (Gösterge): Herhangi bir şekilde artıp azalabilen, anlık değeri temsil eden metriklerdir. Örneğin, sunucunun anlık CPU kullanımı, bellekteki boş alan miktarı, bir kuyruktaki eleman sayısı gibi değerler göstergelerle ölçülür. Göstergeler, anlık durumu yansıtır ve geçmiş değerlerine göre daha az anlamlı olabilir.
- Histogram: Belirli bir aralıkta gerçekleşen gözlemlerin dağılımını ve sayısını ölçmek için kullanılır. Bir histogram, belirli aralıklara düşen olayların sayısını (buckets) ve toplam olay sayısını (count) kaydeder. Bu, özellikle istek süreleri veya boyutları gibi verilerin dağılımını anlamak için kullanışlıdır. Örneğin, bir web isteğinin farklı gecikme sürelerine (0-100ms, 100-200ms vb.) ne kadar düştüğünü gösterir.
- Summary (Özet): Histogram'a benzer şekilde, belirli bir aralıkta gerçekleşen gözlemlerin dağılımını ve sayısını ölçer. Ancak histogram'dan farklı olarak, summary, gözlemlerin toplam sayısını (count) ve toplam değeri (sum) kaydederken, aynı zamanda belirli yüzdelik dilimlerdeki (quantiles) değerleri de hesaplar ve sunar (örneğin, %50, %95, %99 gecikme süreleri). Bu, özellikle performans metriklerinde ortalama ve en kötü durum senaryolarını anlamak için daha doğrudan bir yol sunar.
Bu metrik türlerinin yanı sıra, Prometheus'un veri modeli, etiketler (labels) aracılığıyla zenginleştirilir. Etiketler, bir metrik değerine ek meta veriler ekleyerek daha granüler analizler yapmayı sağlar. Örneğin, `http_requests_total` metriği için `method="GET"` ve `path="/api/v1/users"` gibi etiketler, belirli bir HTTP metoduna ve belirli bir API yoluna yapılan istekleri ayırt etmeye yarar.
Aşağıdaki tablo, metrik türlerinin temel özelliklerini ve kullanım alanlarını özetlemektedir:
| Metrik Türü | Değer Türü | Temel Kullanım Alanı | Örnek |
|---|---|---|---|
| Counter | Yalnızca artan | Toplam olay sayısı, biriktirilen veri miktarı | Toplam ağ trafiği (`network_traffic_total`) |
| Gauge | Artıp azalabilen anlık değer | Mevcut durum, kullanım seviyesi | Anlık CPU kullanımı (`cpu_usage_gauge`) |
| Histogram | Gözlemlerin dağılımı ve sayısı | Gecikme süreleri, istek boyutları | Web istek gecikmeleri (`http_request_duration_seconds_histogram`) |
| Summary | Gözlemlerin dağılımı, toplamı ve yüzdelik dilimleri | Performans metrikleri, en kötü durum analizi | API yanıt süreleri (`api_response_time_seconds_summary`) |
Bu metrik türlerini doğru anlamak ve doğru metrik türünü seçmek, etkili bir izleme stratejisi oluşturmanın temelini oluşturur.
Prometheus ile Gerçek Zamanlı Sunucu Metrikleri Uygulama Rehberi
Prometheus'u bir sunucu izleme çözümü olarak uygulamak, birkaç adımdan oluşan yapılandırılmış bir süreçtir. Bu rehber, temel kurulum ve konfigürasyon adımlarını içermektedir.
- Prometheus Kurulumu:
- Prometheus'u indirip kurun. Genellikle Linux sistemleri için binary dosyalar mevcuttur. Alternatif olarak Docker veya Kubernetes Operator kullanabilirsiniz.
- Kurulum sonrası `prometheus.yml` yapılandırma dosyasını oluşturun veya düzenleyin. Bu dosya, Prometheus'un nasıl çalışacağını belirler.
- Temel Yapılandırma (`prometheus.yml`):
- Global Ayarlar: `scrape_interval` (metrik toplama sıklığı), `evaluation_interval` (uyarı kuralı değerlendirme sıklığı) gibi global ayarları tanımlayın.
- Scrape Konfigürasyonu: Hangi hedeflerin metriklerini toplayacağınızı belirtin. Statik bir liste veya service discovery mekanizması kullanabilirsiniz.
- Rule Files: Uyarı kurallarının bulunduğu dosyaların yolunu belirtin.
global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['server1:9100', 'server2:9100'] - Node Exporter Kurulumu:
- Sunucularınızda Prometheus'un toplayabileceği metrikleri sağlayan Node Exporter'ı kurun. Node Exporter, sunucunun CPU, RAM, disk, ağ gibi temel sistem metriklerini toplar.
- Node Exporter'ı genellikle varsayılan 9100 portunda çalışacak şekilde yapılandırın.
- Prometheus'u Başlatma:
- Yapılandırma dosyasını kullanarak Prometheus sunucusunu başlatın.
- Prometheus'un web arayüzüne (genellikle `http://localhost:9090`) erişerek hedeflerinizi ve metriklerinizi kontrol edin.
- Uyarı Kurallarını Yapılandırma:
- `rules.yml` gibi bir dosyada uyarı kurallarını tanımlayın.
- Bu kurallar, belirli metrik değerlerinin eşiklerini aştığında uyarı tetiklenmesini sağlar. Örneğin, CPU kullanımının %90'ı aşması veya disk alanının %95'e ulaşması.
groups: - name: host_alerts rules: - alert: HighCpuUsage expr: avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) < 0.1 for: 5m labels: severity: warning annotations: summary: "Yüksek CPU kullanımı tespit edildi ({{ $labels.instance }})" description: "CPU'nun boşta kalma süresi %10'un altında, bu da yüksek kullanım anlamına gelir." - Alertmanager Kurulumu ve Yapılandırması:
- Alertmanager'ı kurun. Bu araç, Prometheus'tan gelen uyarıları alır ve yapılandırılmış bildirim kanallarına (e-posta, Slack vb.) yönlendirir.
- Alertmanager'ın `alertmanager.yml` dosyasında alıcıları (receivers) ve yönlendirme kurallarını (route) tanımlayın.
- Görselleştirme (Grafana):
- Genellikle Prometheus metriklerini görselleştirmek için Grafana gibi araçlar kullanılır.
- Grafana'da Prometheus'u bir veri kaynağı olarak ekleyin.
- Hazır panelleri (dashboards) kullanabilir veya kendi panellerinizi oluşturarak sunucu metriklerinizi grafikler halinde izleyebilirsiniz.
Bu adımlar, Prometheus'u temel bir sunucu izleme sistemi olarak kurmak için yeterlidir. Daha karmaşık senaryolar için service discovery, özel exporter'lar ve daha gelişmiş PromQL sorguları gerekebilir.
Sık Yapılan Hatalar ve Çözümleri
Prometheus ile sunucu metriklerini izlerken karşılaşılabilecek bazı yaygın hatalar ve bunların çözümleri şunlardır:
- Hedeflerin Yanlış Yapılandırılması veya Erişilememesi:
- Sorun: Prometheus'un `targets` listesinde belirtilen sunuculara erişememesi. Bu genellikle yanlış IP adresi, port numarası veya ağ erişim sorunlarından kaynaklanır.
- Çözüm: Prometheus yapılandırma dosyasındaki (`prometheus.yml`) hedeflerin doğru yazıldığından emin olun. Sunucular arasında ağ bağlantısını (ping, telnet) test edin. Güvenlik duvarı kurallarını kontrol edin. Service discovery kullanılıyorsa, discovery mekanizmasının doğru çalıştığını doğrulayın.
- Exporter'ların Çalışmaması veya Metrik Sunmaması:
- Sorun: Node Exporter gibi exporter'ların düzgün çalışmaması veya `/metrics` endpoint'inden veri döndürmemesi.
- Çözüm: Exporter servislerinin sunucuda çalıştığından emin olun. Exporter'ın loglarını kontrol edin. Exporter'ın çalıştığı portun (genellikle 9100) dışarıya açık olduğundan emin olun. Proxy veya ters proxy yapılandırmalarını gözden geçirin.
- Yanlış Metrik Türlerinin Kullanılması:
- Sorun: Sayaç (Counter) yerine gösterge (Gauge) veya tam tersi bir metrik türünün kullanılması, bu da yanlış analizlere yol açar.
- Çözüm: Metriklerin doğasını iyi anlayın. Artan değerler için Counter, anlık durum için Gauge kullanın. Histogram ve Summary'yi de doğru kullanım senaryolarına göre belirleyin.
- PromQL Sorgularının Yanlış Olması:
- Sorun: Karmaşık sorguların hatalı yazılması veya beklenen sonuçları vermemesi.
- Çözüm: Prometheus'un web arayüzündeki sorgu editörünü kullanarak sorguları adım adım test edin. Etiketlerin (labels) doğru kullanıldığından emin olun. `rate()`, `increase()`, `sum()`, `avg()` gibi fonksiyonların kullanımını öğrenin.
- Uyarıların Tetiklenmemesi veya Sürekli Tetiklenmesi:
- Sorun: Uyarı kurallarının yanlış yapılandırılması (yanlış eşikler, yanlış `for` süresi) veya Alertmanager'ın doğru yapılandırılmaması.
- Çözüm: Uyarı kuralındaki `expr` ifadesini Prometheus arayüzünde test edin. `for` süresinin anlamını anlayın (uyarı, belirtilen süre boyunca aktif kalmalı). Alertmanager'ın alıcı ve yönlendirme kurallarının doğru olduğundan emin olun.
- Performans Sorunları (Yüksek Kaynak Kullanımı):
- Sorun: Prometheus sunucusunun kendisinin yüksek CPU veya bellek kullanması. Bu, çok fazla hedef izlemekten, çok yoğun metrik toplama sıklığından veya verimsiz sorgulardan kaynaklanabilir.
- Çözüm: İzlenen hedef sayısını optimize edin. `scrape_interval` değerini makul bir seviyede tutun (çok sık olmasın). Veri saklama süresini (`--storage.tsdb.retention.time`) optimize edin. Daha az metrik toplamak için exporter'ları yapılandırın.
Teknik Özellikler ve Standartlar
Prometheus, açık kaynaklı bir proje olmasına rağmen, endüstri standartlarına ve pratiklere uygun olarak tasarlanmıştır. Temel teknik özellikleri ve ilgili standartlar şunlardır:
- Veri Modeli: Prometheus, etiketli zaman serisi verilerini kullanır. Her veri noktası bir metrik adı, bir zaman damgası ve bir dizi anahtar-değer çifti (etiketler) ile tanımlanır. Bu model, metrikleri filtrelemeyi, gruplandırmayı ve analiz etmeyi kolaylaştırır.
- Protokol: Metrikleri toplamak için standart HTTP protokolünü kullanır. Exporter'lar, metriklerini insan tarafından okunabilir bir metin formatında (text-based exposition format) sunar. Bu format, basitliği ve okunabilirliği açısından tercih edilir.
- Depolama: Prometheus, yerleşik bir zaman serisi veritabanı (TSDB) kullanır. Bu veritabanı, veri sıkıştırma, hızlı sorgulama ve dayanıklılık için optimize edilmiştir. Veriler genellikle yerel diskte saklanır.
- Sorgulama Dili (PromQL): PromQL, Prometheus'un metrikleri sorgulamak ve analiz etmek için kullandığı özel bir dildir. Fonksiyonel bir dile dayanır ve zaman serisi verileri üzerinde karmaşık matematiksel ve mantıksal işlemler yapmaya olanak tanır.
- Ölçeklenebilirlik: Prometheus, tek bir Prometheus sunucusu ile orta ölçekli altyapıları izleyebilir. Daha büyük ölçekler için, federasyon (birden çok Prometheus sunucusunun birbirini izlemesi) veya Thanos, Cortex gibi ölçeklenebilir depolama çözümleri kullanılır.
- Service Discovery: Prometheus, dinamik altyapıları (örneğin, Kubernetes, AWS EC2) izlemek için çeşitli service discovery mekanizmalarını destekler. Bu, altyapıdaki değişikliklere otomatik olarak adapte olmasını sağlar.
- Formatlar: Metrik sunumu için yaygın olarak kullanılan standartlar arasında OpenMetrics (eski adıyla Prometheus exposition format) bulunur. Bu standart, metriklerin nasıl yapılandırılması gerektiğini belirler.
Prometheus, özellikle bulut-native ekosistemde (Kubernetes, Docker vb.) yaygın olarak kullanılmaktadır ve bu ekosistemdeki araçlarla sıkı bir entegrasyonu vardır. Bu, endüstri standartlarıyla uyumlu ve geleceğe dönük bir çözüm olmasını sağlar.
2026 Sektör Verileri ve İstatistikler
İzleme ve metrik toplama araçlarının önemi, giderek artan dijitalleşme ve karmaşık altyapılarla birlikte daha da belirgin hale gelmektedir. Prometheus gibi zaman serisi veritabanı ve izleme sistemleri, bu trendin merkezinde yer almaktadır.
W3Techs 2026 verilerine göre, web altyapısı izleme çözümlerine olan talep, önümüzdeki yıllarda artmaya devam edecektir. Özellikle bulut tabanlı ve mikroservis mimarilerinde, metrik toplama ve analiz araçlarının kullanımı, %85 seviyelerine ulaşması beklenmektedir.
Statista 2026 raporuna göre, küresel izleme ve analiz yazılımları pazarının, yıllık %12 büyüme oranıyla 2026 yılına kadar 30 milyar dolarlık bir hacme ulaşacağı öngörülmektedir. Bu büyüme, büyük ölçüde artan veri hacmi ve karmaşık sistemlerin yönetimi ihtiyacından kaynaklanmaktadır.
Cloudflare Radar 2026 verilerine göre, web sitelerinin ve uygulamalarının performansını gerçek zamanlı olarak izleme ihtiyacı, güvenlik tehditlerinin artmasıyla paralel olarak %90 oranında artış göstermiştir. Bu durum, Prometheus gibi araçların proaktif sorun tespitindeki kritik rolünü vurgulamaktadır.
Netcraft 2026 araştırmasına göre, küresel sunucu pazarında Open Source izleme çözümlerinin kullanım oranı %60'ı aşmıştır. Prometheus, bu pazar payının önemli bir bölümünü oluşturarak, kurumsal düzeyde yaygın bir tercih haline gelmiştir.
Bu istatistikler, izleme ve metrik toplama çözümlerinin, modern BT operasyonlarının ayrılmaz bir parçası olduğunu ve sektördeki öneminin artarak devam edeceğini göstermektedir.
İlgili Konular
Sunucu metriklerini izleme konusunda daha derinlemesine bilgi edinmek isterseniz, Zabbix ile Sunucu Performansını İzleme Rehberi makalemizi inceleyebilirsiniz. Bu makale, Prometheus'a benzer şekilde sunucu performansını izlemek için kullanılan popüler bir araç olan Zabbix'i detaylı bir şekilde ele almaktadır. Prometheus ve Zabbix gibi araçlar, sunucu sağlığını ve performansını sürekli olarak takip ederek kesintisiz hizmetin sağlanmasına yardımcı olur.

