mirror of
				https://github.com/3ybactuk/marketplace-go-service-project.git
				synced 2025-10-31 06:23:44 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package metrics
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/prometheus/client_golang/prometheus"
 | |
| 	"github.com/prometheus/client_golang/prometheus/promauto"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	requestCounter = promauto.NewCounterVec(prometheus.CounterOpts{
 | |
| 		Namespace: "app",
 | |
| 		Name:      "requests_total",
 | |
| 		Help:      "Total amount of request by handler",
 | |
| 	}, []string{"method", "path", "status_code"})
 | |
| 
 | |
| 	requestDurationHistogram = promauto.NewHistogramVec(prometheus.HistogramOpts{
 | |
| 		Namespace: "app",
 | |
| 		Name:      "request_duration_seconds",
 | |
| 		Help:      "Latency of handler processing, seconds",
 | |
| 		Buckets:   prometheus.DefBuckets,
 | |
| 	}, []string{"method", "path", "status_code"})
 | |
| 
 | |
| 	outboundCounter = promauto.NewCounterVec(prometheus.CounterOpts{
 | |
| 		Namespace: "app",
 | |
| 		Name:      "outbound_requests_total",
 | |
| 		Help:      "Total HTTP requests to external services",
 | |
| 	}, []string{"method", "url", "status_code"})
 | |
| 
 | |
| 	outboundDurationHistogram = promauto.NewHistogramVec(prometheus.HistogramOpts{
 | |
| 		Namespace: "app",
 | |
| 		Name:      "outbound_request_duration_seconds",
 | |
| 		Help:      "Latency of outbound HTTP requests, seconds",
 | |
| 		Buckets:   prometheus.DefBuckets,
 | |
| 	}, []string{"method", "url", "status_code"})
 | |
| )
 | |
| 
 | |
| func IncRequestHandlerCount(method, path, statusCode string) {
 | |
| 	requestCounter.WithLabelValues(method, path, statusCode).Inc()
 | |
| }
 | |
| 
 | |
| func StoreHandlerRequestDuration(method, path, statusCode string, d time.Duration) {
 | |
| 	requestDurationHistogram.WithLabelValues(method, path, statusCode).Observe(d.Seconds())
 | |
| }
 | |
| 
 | |
| func IncOutboundRequestCount(method, url, status string) {
 | |
| 	outboundCounter.WithLabelValues(method, url, status).Inc()
 | |
| }
 | |
| 
 | |
| func StoreOutboundRequestDuration(method, url, status string, d time.Duration) {
 | |
| 	outboundDurationHistogram.WithLabelValues(method, url, status).Observe(d.Seconds())
 | |
| }
 | 
