diff --git a/pkg/items/middleware/metrics_middleware.go b/pkg/items/middleware/metrics_middleware.go
index a9f7b8f9099750db9dca96a06442f594cd3e0681..a648b4ff16d27924bc48e0eb824ee984a3c26d44 100644
--- a/pkg/items/middleware/metrics_middleware.go
+++ b/pkg/items/middleware/metrics_middleware.go
@@ -8,6 +8,7 @@ package middleware
 
 import (
 	"context"
+	"strings"
 
 	"git.perx.ru/perxis/perxis-go/pkg/items"
 	"git.perx.ru/perxis/perxis-go/pkg/metrics"
@@ -17,6 +18,7 @@ import (
 
 // metricsMiddleware implements items.Items that is instrumented with metrics
 type metricsMiddleware struct {
+	serviceName    string
 	requestMetrics *metrics.RequestMetrics
 	next           items.Items
 }
@@ -25,6 +27,7 @@ type metricsMiddleware struct {
 func MetricsMiddleware(requestMetrics *metrics.RequestMetrics) Middleware {
 	return func(next items.Items) items.Items {
 		return &metricsMiddleware{
+			serviceName:    strings.ToLower("Items"), // эта строка для генерации по шаблону для всех сервисов, там ServiceName с заглавной буквы
 			requestMetrics: requestMetrics,
 			next:           next,
 		}
@@ -35,7 +38,8 @@ func MetricsMiddleware(requestMetrics *metrics.RequestMetrics) Middleware {
 func (m metricsMiddleware) Aggregate(ctx context.Context, spaceId string, envId string, collectionId string, filter *items.Filter, options ...*items.AggregateOptions) (result map[string]interface{}, err error) {
 	timer := prometheus.NewTimer(m.requestMetrics.DurationSeconds.WithLabelValues("Aggregate"))
 	defer timer.ObserveDuration()
-	m.requestMetrics.Total.WithLabelValues("Aggregate").Inc()
+	m.requestMetrics.Total.With(prometheus.Labels{"service": m.serviceName, "method": "Aggregate"}).Inc() // тут как больше нравится. Мне нравится более явно
+	// m.requestMetrics.Total.WithLabelValues(m.serviceName, "Aggregate").Inc()
 	result, err = m.next.Aggregate(ctx, spaceId, envId, collectionId, filter, options...)
 	if err != nil {
 		m.requestMetrics.FailedTotal.WithLabelValues("Aggregate").Inc()
diff --git a/pkg/metrics/request.go b/pkg/metrics/request.go
index 4c5ff719e4fa85dd33a1a270e2079ae99d644d98..a937d62d801269995357b61f235b423fd35b1725 100644
--- a/pkg/metrics/request.go
+++ b/pkg/metrics/request.go
@@ -4,12 +4,26 @@ import (
 	"github.com/prometheus/client_golang/prometheus"
 )
 
+var (
+	RequestLabels = []string{
+		"service",
+		"method",
+	}
+)
+
 type RequestMetrics struct {
 	Total           *prometheus.CounterVec
 	FailedTotal     *prometheus.CounterVec
 	DurationSeconds *prometheus.HistogramVec
 }
 
+// Пример использования:
+// ...
+// requestMetrics := metrics.NewRequestMetrics("content")
+// s.Items = itemsMiddleware.MetricsMiddleware(requestMetrics)
+// s.Collections = collectionsMiddleware.MetricsMiddleware(requestMetrics)
+// ...
+
 // NewRequestMetrics возвращает метрики для подсчета количества удачных/неудачных запросов, а так же длительности ответов.
 //
 // subsystem указывает подсистему, к которой принадлежат метрики.
@@ -19,29 +33,26 @@ type RequestMetrics struct {
 // Значения меток должны быть уникальными в рамках одной subsystem.
 //
 // Метрики записываются в prometheus.DefaultRegisterer
-func NewRequestMetrics(subsystem string, durationBuckets []float64, labels ...string) *RequestMetrics {
-	if len(durationBuckets) == 0 {
-		durationBuckets = prometheus.DefBuckets
-	}
+func NewRequestMetrics(subsystem string) *RequestMetrics {
 	metrics := &RequestMetrics{
 		Total: prometheus.NewCounterVec(prometheus.CounterOpts{
 			Subsystem: subsystem,
 			Name:      "service_requests_total",
 			Help:      "Количество запросов.",
-		}, []string{"method"}),
+		}, RequestLabels),
 		FailedTotal: prometheus.NewCounterVec(prometheus.CounterOpts{
 			Subsystem: subsystem,
 			Name:      "service_requests_failed_total",
 			Help:      "Количество запросов, вернувших ошибку.",
-		}, []string{"method"}),
+		}, RequestLabels),
 		DurationSeconds: prometheus.NewHistogramVec(prometheus.HistogramOpts{
 			Subsystem: subsystem,
 			Name:      "service_request_duration_seconds",
 			Help:      "Длительность обработки запроса.",
-			Buckets:   durationBuckets,
-		}, []string{"method"}),
+			Buckets:   prometheus.DefBuckets,
+		}, RequestLabels),
 	}
-	prometheus.WrapRegistererWith(GetLabelsFromKV(labels), prometheus.DefaultRegisterer).MustRegister(
+	prometheus.MustRegister(
 		metrics.Total,
 		metrics.FailedTotal,
 		metrics.DurationSeconds,