Skip to content

Commit db0ed47

Browse files
committed
fix(metrics): separate duration histogram by success/error result
1 parent 9dcef6c commit db0ed47

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

handler/handler.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,16 @@ func (h *Handler) exchangeToken(ctx context.Context, apiKey string) (string, err
9797

9898
start := time.Now()
9999
resp, err := h.config.HTTPClient.Do(req)
100-
metrics.UpstreamRequestDuration.Observe(time.Since(start).Seconds())
100+
duration := time.Since(start).Seconds()
101101

102102
if err != nil {
103+
metrics.UpstreamRequestDuration.WithLabelValues("error").Observe(duration)
103104
metrics.UpstreamRequestsTotal.WithLabelValues("error").Inc()
104105
return "", fmt.Errorf("failed to send request: %w", err)
105106
}
106107
defer resp.Body.Close()
107108

109+
metrics.UpstreamRequestDuration.WithLabelValues("success").Observe(duration)
108110
metrics.UpstreamRequestsTotal.WithLabelValues(strconv.Itoa(resp.StatusCode)).Inc()
109111

110112
if resp.StatusCode != http.StatusOK {

metrics/metrics.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,12 @@ var (
3737
)
3838

3939
// UpstreamRequestDuration measures upstream token exchange latency.
40-
UpstreamRequestDuration = promauto.NewHistogram(
40+
UpstreamRequestDuration = promauto.NewHistogramVec(
4141
prometheus.HistogramOpts{
4242
Name: "speedproxy_upstream_request_duration_seconds",
4343
Help: "Duration of upstream token exchange requests.",
4444
Buckets: prometheus.DefBuckets,
4545
},
46+
[]string{"result"},
4647
)
4748
)

0 commit comments

Comments
 (0)