Metrikler
- İngilizcesi
- Metrics
- Türkçe karşılığı
- ölçümler
Kısaca
Metrikler, 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.
Yazılım izlemede metrikler nelerdir?
Yazılım operasyonlarında metrikler, bir sistemin durumunu ya da davranışını tanımlayan ve düzenli aralıklarla kaydedilen sayılardır. Örnekler arasında saniyedeki istek sayısı, başarısız isteklerin yüzdesi, yanıt süresi, bellek kullanımı ve kuyrukta bekleyen iş sayısı bulunur. Her veri noktası yalnızca bir ad, bir değer, bir zaman damgası ve birkaç etiketten (label) oluştuğu için metrikleri saklamak ucuzdur ve aylar süren geçmiş üzerinde bile hızlı sorgulanır.
Metriklerin çoğu birkaç türe ayrılır: counter yalnızca artar, örneğin sunulan toplam istek sayısı; gauge inip çıkar, örneğin anlık bellek kullanımı; histogram ise ölçümleri kovalara ayırır, örneğin kaç isteğin 100, 250 ya da 500 milisaniyenin altında sürdüğü, ve p95 ile p99 gibi yüzdelikleri hesaplamanıza olanak tanır. Uygulamalar metrikleri bir kütüphane üzerinden sunar; bir izleme sistemi bunları her birkaç saniyede, çoğunlukla bir HTTP uç noktasını tarayarak toplar ve bir zaman serisi veritabanında saklar. route ya da status gibi etiketler bir metriği dilimlemenize izin verir, ancak her benzersiz kombinasyon yeni bir seri oluşturur; bu yüzden kullanıcı kimlikleri gibi sınırsız değerlere sahip etiketlerden, yani yüksek kardinaliteden (high cardinality) kaçınılmalıdır.
Metrikler bir arabanın gösterge panelindeki göstergeler gibidir: hız, yakıt ve motor sıcaklığı, her olayı anlatmadan işlerin normal olup olmadığını bir bakışta söyler. Gösterge panellerine, uyarılara, otomatik ölçekleme kararlarına ve SLO'lara güç verirler. Popüler bir başlangıç kümesi, site reliability engineering'den gelen dört altın sinyaldir: gecikme (latency), trafik, hatalar ve doygunluk (saturation), yani bir kaynağın ne kadar dolu olduğu.
Metrikler sıklıkla log'larla karıştırılır. Bir log satırı tek bir olayı zengin ayrıntıyla kaydeder; metrik ise birçok olayı bir sayıda toplar. Yani metrik size hataların saat 14:02'de sıçradığını söyler, log'lar veya trace'ler ise nedenini söyler. Ortalamalar da yanıltıcı olabilir: 200 milisaniyelik bir ortalama yanıt süresi, kullanıcıların %1'inin beş saniye beklediğini gizleyebilir; ekiplerin yüzdelikleri izlemesinin nedeni budur.
Önemli noktalar
- Metrikler, zaman içinde kaydedilen ve zaman serisi olarak saklanan sayısal ölçümlerdir.
- Yaygın türler counter, gauge ve histogram'dır.
- p95 ve p99 gibi yüzdelikler, ortalamaların gizlediği yavaş istekleri ortaya çıkarır.
- Etiketler boyut ekler, ancak kullanıcı kimlikleri gibi yüksek kardinaliteli etiketler maliyet sorunlarına yol açar.
- Metrikler bir şeyin değiştiğini gösterir; log'lar ve trace'ler nedenini açıklamaya yardımcı olur.
Örnek
from prometheus_client import Counter, Histogram, start_http_server
# A counter only goes up; labels let you slice it by route and status
REQUESTS = Counter("http_requests_total", "Requests served", ["route", "status"])
# A histogram sorts durations into buckets so percentiles can be calculated
LATENCY = Histogram("http_request_duration_seconds", "Request duration", ["route"])
start_http_server(9100) # serves the metrics for the monitoring system to scrape
def handle_checkout(request):
with LATENCY.labels(route="/checkout").time():
response = process(request)
REQUESTS.labels(route="/checkout", status=response.status).inc()
return responseSık sorulan sorular
Counter ile gauge arasındaki fark nedir?
Counter, toplam istek sayısı gibi yalnızca artan bir değerdir ve genellikle saniyedeki oran olarak görüntülenir. Gauge ise anlık bellek kullanımı ya da etkin bağlantı sayısı gibi inip çıkabilen bir değerdir.
Dört altın sinyal nedir?
Bunlar gecikme, trafik, hatalar ve doygunluktur; site reliability engineering'de kullanıcıya dönük herhangi bir hizmeti izlemek için önerilen bir metrik kümesidir. Birlikte hizmetin ne kadar hızlı olduğunu, ne kadar kullanıldığını, ne sıklıkta başarısız olduğunu ve sınırlarına ne kadar yaklaştığını gösterir.
p99 gecikmesi ne demektir?
p99 gecikmesi, isteklerin %99'unun daha hızlı olduğu yanıt süresidir; yani yalnızca en yavaş %1 daha uzun sürer. Bir ortalamanın gizlediği, uzun kuyruktaki kullanıcıların yaşadığı deneyimi gösterir.
İlgili sayfalar
- 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.
- LoglamaDevOps ve Bulut, s. 32Loglama, çalışan bir programdaki hata ve istek gibi olaylar hakkında zaman damgalı mesajlar kaydetme pratiğidir; insanlar bunları sonradan inceleyebilir.
- Dağıtık İzlemeDevOps ve Bulut, s. 11Dağıtık izleme, tek bir isteği birçok servis boyunca takip eden; her adımın ne kadar sürdüğünü ve nerede başarısız olduğunu kaydeden bir tekniktir.
- 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.
- 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.
- Otomatik ÖlçeklemeDevOps ve Bulut, s. 37Otomatik ölçekleme, sunucu ya da konteyner gibi bilişim kaynaklarının talebe göre otomatik eklenip çıkarılmasıdır; performans sabit, maliyet düşük kalır.
- PrometheusDevOps ve Bulut, s. 41Prometheus, 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.
- 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