diff --git a/pkg/metrics/metrics_test.go b/pkg/metrics/metrics_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..0e1717353a84cc0ce58e2b38961c578eb307be75
--- /dev/null
+++ b/pkg/metrics/metrics_test.go
@@ -0,0 +1,75 @@
+package metrics
+
+import (
+	"context"
+	"io"
+	"net/http"
+	"testing"
+
+	"git.perx.ru/perxis/perxis-go/pkg/id"
+	"github.com/prometheus/client_golang/prometheus"
+	"github.com/prometheus/client_golang/prometheus/promhttp"
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+)
+
+func serveMetrics(t *testing.T) *http.Server {
+	mux := http.NewServeMux()
+	mux.Handle("/metrics", promhttp.Handler())
+	srv := &http.Server{Addr: "localhost:30301", Handler: mux}
+	go func() { srv.ListenAndServe() }()
+	return srv
+}
+
+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()
+		})
+	})
+
+	t.Run("Metrics allow dynamically assigned label values", func(t *testing.T) {
+		srv := serveMetrics(t)
+		defer srv.Shutdown(ctx)
+
+		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")
+		require.NoError(t, err)
+		defer resp.Body.Close()
+		b, err := io.ReadAll(resp.Body)
+		require.NoError(t, err)
+		// fmt.Println(string(b))
+		assert.Contains(t, string(b), name+"{a=\"v_a1\",b=\"v_b1\"} 1")
+	})
+
+	t.Run("Metrics with constant label values", func(t *testing.T) {
+		srv := serveMetrics(t)
+		defer srv.Shutdown(ctx)
+
+		name := "test_counter_" + id.GenerateNewID()
+		m := prometheus.NewCounterVec(prometheus.CounterOpts{
+			Namespace:   "test_namespace",
+			Subsystem:   "test_subsystem",
+			Name:        name,
+			Help:        "Test Help",
+			ConstLabels: prometheus.Labels{"const_1": "val_1"},
+		}, []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")
+		require.NoError(t, err)
+		defer resp.Body.Close()
+		b, err := io.ReadAll(resp.Body)
+		require.NoError(t, err)
+		// fmt.Println(string(b))
+		assert.Contains(t, string(b), name+"{a=\"v_a1\",b=\"v_b1\",const_1=\"val_1\"} 1")
+	})
+}