diff --git a/metric/drpc.go b/metric/drpc.go index b81ed863..23640a8c 100644 --- a/metric/drpc.go +++ b/metric/drpc.go @@ -2,8 +2,10 @@ package metric import ( "github.com/prometheus/client_golang/prometheus" + "go.uber.org/zap" "storj.io/drpc" "time" + "unicode/utf8" ) type prometheusDRPC struct { @@ -14,7 +16,11 @@ type prometheusDRPC struct { func (ph *prometheusDRPC) HandleRPC(stream drpc.Stream, rpc string) (err error) { st := time.Now() defer func() { - ph.SummaryVec.WithLabelValues(rpc).Observe(time.Since(st).Seconds()) + if utf8.ValidString(rpc) { + ph.SummaryVec.WithLabelValues(rpc).Observe(time.Since(st).Seconds()) + } else { + log.WarnCtx(stream.Context(), "invalid rpc string", zap.String("rpc", rpc)) + } }() return ph.Handler.HandleRPC(stream, rpc) }