Metrics
- Go kursu
- İleri seviye
- Ders 60/68
- 4 dk
Prometheus tarzı metrik kavramını öğrenirsin.
Metrikler
Metrikler sistemin sayısal durumunu zaman içinde izler. Üç temel tür vardır: counter (yalnızca artar: toplam istek), gauge (artar/azalır: aktif bağlantı), histogram (değerlerin dağılımı: yanıt süreleri).
istekSayisi.Inc()
aktifBaglanti.Set(12)
sure.Observe(0.043)Prometheus gibi sistemler bu değerleri /metrics uç noktasından düzenli aralıklarla toplar.
Neden histogram?
Ortalama yanıt süresi yanıltıcıdır: 99 istek 10 ms, 1 istek 5 saniye sürerse ortalama 60 ms görünür ama bir kullanıcı çok kötü deneyim yaşar. Histogram süreleri kovalara ayırır ve p95, p99 gibi yüzdelikleri hesaplamanı sağlar. Standart kütüphanede expvar basit sayaçlar sunar; üretimde genellikle Prometheus istemcisi veya OpenTelemetry kullanılır.
Uygulama expvar sayacı
expvar.NewInt("istekler") ile sayaç oluştur, bir döngüde 5 kez Add(1) çağır ve Value() sonucunu yazdır.
Başlangıç kodu
package main
import (
"expvar"
"fmt"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"expvar"
"fmt"
)
func main() {
istekler := expvar.NewInt("istekler")
for i := 0; i < 5; i++ {
istekler.Add(1)
}
fmt.Println(istekler.Value())
}Beklenen çıktı
5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bellekteki kuyruk uzunluğu hangi metrik türüyle izlenir?
- Gauge Doğru cevap
- Counter
- Histogram
- Log
Açıklama: Kuyruk uzunluğu artıp azalabilir; counter ise yalnızca artar. Anlık değerler gauge ile ölçülür.
2 Sayacı artır
var istekler = expvar.NewInt("istekler")
istekler.____(1)
var istekler = expvar.NewInt("istekler")
istekler.Add(1)
Açıklama: expvar.Int sayacı Add ile artırılır; değer /debug/vars uç noktasında yayınlanır.
3 Ölçüm ve tür
| Kavram | Anlamı |
|---|---|
Toplam istek |
Counter |
Aktif bağlantı |
Gauge |
Yanıt süresi dağılımı |
Histogram |
p99 |
Yüzdelik |