Skip to content
Snippets Groups Projects
Select Git revision
  • 590503d3c13f3abc9bc0dcfcd2ebb3290ad11d1c
  • master default protected
  • bugfix/fix-return-var-in-find
  • feature/upgrade2
  • v1.10.0
  • v1.8.2
  • v1.8.1
  • v1.8.0
  • 1.7.3
  • v1.7.1
  • v1.6.1
  • v1.6.0
  • v1.5.0
  • v1.4.1
  • v1.3.0
  • v1.2.2
  • v1.2.1
  • v1.2.0
  • v1.0.1
  • v1.0.0
  • v0.0.23
  • v0.0.17
  • v0.0.10
  • v0.0.9
24 results

setup.py

Blame
  • request.go 2.35 KiB
    package metrics
    
    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 указывает подсистему, к которой принадлежат метрики.
    // Значение должно быть уникальным, совпадение разрешено только при совпадении ключей labels. Пустое значение допустимо.
    //
    // labels - список меток, где каждый элемент метки соответствует парам ключ-значение. Отсутствие допустимо.
    // Значения меток должны быть уникальными в рамках одной subsystem.
    //
    // Метрики записываются в prometheus.DefaultRegisterer
    func NewRequestMetrics(subsystem string) *RequestMetrics {
    	metrics := &RequestMetrics{
    		Total: prometheus.NewCounterVec(prometheus.CounterOpts{
    			Subsystem: subsystem,
    			Name:      "service_requests_total",
    			Help:      "Количество запросов.",
    		}, RequestLabels),
    		FailedTotal: prometheus.NewCounterVec(prometheus.CounterOpts{
    			Subsystem: subsystem,
    			Name:      "service_requests_failed_total",
    			Help:      "Количество запросов, вернувших ошибку.",
    		}, RequestLabels),
    		DurationSeconds: prometheus.NewHistogramVec(prometheus.HistogramOpts{
    			Subsystem: subsystem,
    			Name:      "service_request_duration_seconds",
    			Help:      "Длительность обработки запроса.",
    			Buckets:   prometheus.DefBuckets,
    		}, RequestLabels),
    	}
    	prometheus.MustRegister(
    		metrics.Total,
    		metrics.FailedTotal,
    		metrics.DurationSeconds,
    	)
    	return metrics
    }