Перцентили показывают латентность: p99 - 99% запросов быстрее этого значения. В Prometheus Histogram дает buckets и автоматически квантили (histogram_quantile в PromQL). В Go регистрируют Histogram с разумными buckets (например, 5ms, 10ms, 25ms, 50ms, 100ms, 250ms, 500ms, 1s), вызывают Observe(duration). Summary дает квантили на стороне приложения, но менее гибкий в PromQL.
hist := prometheus.NewHistogramVec(
prometheus.HistogramOpts{Name: "http_duration_seconds", Buckets: prometheus.DefBuckets},
[]string{"path"},
)
hist.WithLabelValues("/api").Observe(elapsed.Seconds())