Prometheus
- Okunuşu
- promitius
Kısaca
Prometheus, uygulama ve sunuculardan metrik toplayıp zaman serisi olarak saklayan ve değerler sınırı aşınca uyarı tetikleyen açık kaynaklı izleme sistemidir.
Prometheus nedir?
Prometheus, 2012'de SoundCloud'da geliştirildi ve Kubernetes'ten sonra Cloud Native Computing Foundation'dan mezun olan ikinci proje oldu. Bir servisin saniyede kaç istek işlediği, bunların ne kadar sürdüğü ya da ne kadar bellek kullandığı gibi soruları, sayıların zaman içindeki geçmişini tutarak yanıtlar.
Çekerek (pull) çalışır: Prometheus birkaç saniyede bir her hedefin genellikle /metrics olan bir HTTP uç noktasını tarar (scrape) ve bulduğu değerleri saklar. Uygulamalar bu metrikleri istemci kütüphaneleriyle sunar; Linux makineler, veritabanları ve Nginx gibi sistemler için de hazır exporter'lar bu işi yapar. Her seri bir ad ve http_requests_total{method="GET", status="500"} gibi etiketlerle (label) tanımlanır.
Veriler; istek oranları, hata yüzdeleri ya da yanıt sürelerinin 99. yüzdelik dilimi gibi hesaplamalar için bir dil olan PromQL ile sorgulanır. Uyarı kuralları PromQL ifadelerini değerlendirir; ayrı çalışan Alertmanager da ortaya çıkan uyarıları gruplayıp e-postaya, Slack'e ya da nöbet araçlarına gönderir. Veriyi panolar halinde çizmek için genellikle Grafana seçilir.
Sık yapılan bir yanlış, Prometheus'un log ya da iz (trace) sakladığı düşüncesidir. Sayısal metrikler için tasarlanmıştır; log'lar ve izler Loki ve Jaeger gibi başka araçlar gerektirir. Tek bir Prometheus sunucusu da uzun süreli ve küresel depolama için düşünülmemiştir; bu yüzden büyük kurulumlar bunun için Thanos ya da Mimir gibi sistemler ekler.
Önemli noktalar
- Prometheus açık kaynaklı bir izleme sistemi ve zaman serisi veritabanıdır.
- Metrikleri genellikle /metrics olan HTTP uç noktalarını tarayarak çeker.
- Her serinin bir adı ve etiketleri vardır; PromQL onları sorgular.
- Uyarı kuralları ve Alertmanager, bir şey ters gittiğinde insanları haberdar eder.
- Log'ları ya da izleri değil, metrikleri işler.
Örnek
# prometheus.yml: scrape the app every 15 seconds
scrape_configs:
- job_name: "shop-api"
scrape_interval: 15s
static_configs:
- targets: ["api:8080"]
# PromQL: share of requests that failed over the last 5 minutes
# sum(rate(http_requests_total{status=~"5.."}[5m]))
# / sum(rate(http_requests_total[5m]))Sık sorulan sorular
PromQL nedir?
Prometheus Query Language; zaman serilerini seçmek ve üzerlerinde hesap yapmak için kullanılır, örneğin isteklerin saniye başına oranı ya da yanıt sürelerinin 95. yüzdelik dilimi.
Prometheus ile Grafana arasındaki fark nedir?
Prometheus metrikleri toplar, saklar ve uyarıları değerlendirir. Grafana ise Prometheus gibi veri kaynaklarından panolar çizer. Genellikle birlikte kullanılırlar.
Prometheus metrikleri iter mi, çeker mi?
Çeker: Prometheus her hedefin metrik uç noktasını bir takvime göre tarar. Taranamayan kısa ömürlü işler için Pushgateway, sonuçlarını itmelerine izin verir.
İlgili sayfalar
- MetriklerDevOps ve Bulut, s. 33Metrikler, bir sistemden zamanla toplanan istek oranı, hata oranı ve CPU kullanımı gibi sayısal ölçümlerdir; panolar, uyarılar ve planlama için kullanılır.
- GözlemlenebilirlikDevOps ve Bulut, s. 22Gözlemlenebilirlik, çalışan bir yazılım sisteminin içinde olup biteni log, metrik ve trace verilerini toplayıp analiz ederek anlayabilme yeteneğidir.
- Zaman Serisi VeritabanıVeritabanları, s. 47Zaman serisi veritabanı, sensör okumaları ya da metrikler gibi zaman damgalı ölçümleri sırayla saklayıp sorgulamak için optimize edilmiş bir veritabanıdır.
- GrafanaDevOps ve Bulut, s. 23Grafana; birçok veri kaynağındaki metrik, log ve izleri tek yerde canlı grafiklere ve uyarılara dönüştüren panolar kurmaya yarayan açık kaynaklı bir araçtır.
- SLODevOps ve Bulut, s. 50SLO, bir hizmetin ölçülebilir güvenilirlik hedefidir (örneğin 30 günde isteklerin %99,9'unun başarılı olması) ve yeterince güvenilirin ne olduğunu belirler.
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- OpenTelemetryDevOps ve Bulut, s. 35OpenTelemetry, yazılımdan trace, metrik ve log toplayıp bunları herhangi bir izleme backend'ine göndermek için açık bir standart ve araç takımıdır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin