diff --git a/pkg/metrics/metrics_test.go b/pkg/metrics/example_test.go
similarity index 72%
rename from pkg/metrics/metrics_test.go
rename to pkg/metrics/example_test.go
index 6c9cf9d6f63219752c370647294ea75234b3a8d3..d08e75e688aad0ef220638f92c53ee229aff5a32 100644
--- a/pkg/metrics/metrics_test.go
+++ b/pkg/metrics/example_test.go
@@ -1,8 +1,9 @@
 package metrics
 
 import (
-	"context"
+	"fmt"
 	"io"
+	"net"
 	"net/http"
 	"testing"
 
@@ -15,36 +16,33 @@ import (
 	"github.com/stretchr/testify/require"
 )
 
-func serveMetrics(t *testing.T) *http.Server {
+func serveMetricsHTTP(t *testing.T) net.Listener {
 	mux := http.NewServeMux()
 	mux.Handle("/metrics", promhttp.Handler())
-	srv := &http.Server{Addr: "localhost:30301", Handler: mux}
-	go func() { _ = srv.ListenAndServe() }()
-	return srv
+	srv := &http.Server{Addr: "localhost:30341", Handler: mux}
+	listener, err := net.Listen("tcp", "localhost:0")
+	require.NoError(t, err)
+	go func() { _ = srv.Serve(listener) }()
+	return listener
 }
 
 func TestMetrics_Example(t *testing.T) {
-	ctx := context.Background()
 	t.Run("Metrics do not allow dynamically assigned labels", func(t *testing.T) {
 		m := prometheus.NewCounterVec(prometheus.CounterOpts{Name: "test_counter_" + id.GenerateNewID()}, nil)
 		prometheus.MustRegister(m)
-		assert.Panics(t, func() {
-			m.With(prometheus.Labels{"a": "v_a1", "b": "v_b1"}).Inc()
-		})
+		assert.Panics(t, func() { m.With(prometheus.Labels{"a": "v_a1", "b": "v_b1"}).Inc() })
 	})
 
 	t.Run("Metrics allow dynamically assigned label values", func(t *testing.T) {
-		srv := serveMetrics(t)
-		defer func() {
-			_ = srv.Shutdown(ctx)
-		}()
+		l := serveMetricsHTTP(t)
+		defer func() { _ = l.Close() }()
 
 		name := "test_counter_" + id.GenerateNewID()
 		m := prometheus.NewCounterVec(prometheus.CounterOpts{Name: name}, []string{"a", "b"})
 		prometheus.MustRegister(m)
 		m.With(prometheus.Labels{"a": "v_a1", "b": "v_b1"}).Inc()
 
-		resp, err := http.Get("http://localhost:30301/metrics")
+		resp, err := http.Get(fmt.Sprintf("http://%s/metrics", l.Addr().String()))
 		require.NoError(t, err)
 		defer resp.Body.Close()
 		b, err := io.ReadAll(resp.Body)
@@ -54,10 +52,8 @@ func TestMetrics_Example(t *testing.T) {
 	})
 
 	t.Run("Metrics with constant label values", func(t *testing.T) {
-		srv := serveMetrics(t)
-		defer func() {
-			_ = srv.Shutdown(ctx)
-		}()
+		l := serveMetricsHTTP(t)
+		defer func() { _ = l.Close() }()
 
 		name := "test_counter_" + id.GenerateNewID()
 		m := prometheus.NewCounterVec(prometheus.CounterOpts{
@@ -70,7 +66,7 @@ func TestMetrics_Example(t *testing.T) {
 		prometheus.MustRegister(m)
 		m.With(prometheus.Labels{"a": "v_a1", "b": "v_b1"}).Inc()
 
-		resp, err := http.Get("http://localhost:30301/metrics")
+		resp, err := http.Get(fmt.Sprintf("http://%s/metrics", l.Addr().String()))
 		require.NoError(t, err)
 		defer resp.Body.Close()
 		b, err := io.ReadAll(resp.Body)
@@ -79,17 +75,23 @@ func TestMetrics_Example(t *testing.T) {
 		assert.Contains(t, string(b), name+"{a=\"v_a1\",b=\"v_b1\",const_1=\"val_1\"} 1")
 	})
 
-	t.Run("Register multiple metrics with the same name and labels combine into metric family", func(t *testing.T) {
+	t.Run("Multiple metrics registered with the same name and labels combine into metric family", func(t *testing.T) {
+		registry := prometheus.NewRegistry()
+
 		name := "test_counter_" + id.GenerateNewID()
 		m1 := prometheus.NewCounterVec(prometheus.CounterOpts{Name: name, ConstLabels: prometheus.Labels{"const_1": "val_1"}}, []string{"a1", "b1"})
-		m2 := prometheus.NewCounterVec(prometheus.CounterOpts{Name: name, ConstLabels: prometheus.Labels{"const_1": "val_2"}}, []string{"a1", "b1"})
-
-		registry := prometheus.NewRegistry()
 		registry.MustRegister(m1)
-		registry.MustRegister(m2)
-
 		m1.With(prometheus.Labels{"a1": "v_a1", "b1": "v_b1"}).Inc()
+
+		m2 := prometheus.NewCounterVec(prometheus.CounterOpts{Name: name, ConstLabels: prometheus.Labels{"const_1": "val_2"}}, []string{"a1", "b1"})
+		registry.MustRegister(m2)
 		m2.With(prometheus.Labels{"a1": "v_a2", "b1": "v_b2"}).Inc()
+		assert.Panics(t, func() { m2.With(prometheus.Labels{"c": "v3"}).Inc() }, "Невозможно добавить метку, которая не была зарегистрирована при создании метрики")
+
+		assert.Panics(t, func() {
+			m3 := prometheus.NewCounterVec(prometheus.CounterOpts{Name: name, ConstLabels: prometheus.Labels{"const_2": "val_2"}}, []string{"a3", "b3"})
+			registry.MustRegister(m3)
+		}, "Невозможно зарегистрировать метрики с одним названием, но разными метками")
 
 		metricsFamily, err := registry.Gather()
 		require.NoError(t, err)