You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							112 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
	
	
							112 lines
						
					
					
						
							2.5 KiB
						
					
					
				| package main
 | |
| 
 | |
| import (
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/prometheus/client_golang/prometheus"
 | |
| 	l "gitlab.com/cyclops-utilities/logging"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	metricTime     *prometheus.GaugeVec
 | |
| 	metricSecurity *prometheus.GaugeVec
 | |
| )
 | |
| 
 | |
| func prometheusStart() (metricsMap map[string]*prometheus.GaugeVec, register *prometheus.Registry) {
 | |
| 
 | |
| 	l.Trace.Printf("[PROMETHEUS] Intializing metrics for the service\n")
 | |
| 
 | |
| 	metricsMap = make(map[string]*prometheus.GaugeVec)
 | |
| 	register = prometheus.NewPedanticRegistry()
 | |
| 
 | |
| 	metricCache := prometheus.NewGaugeVec(
 | |
| 		prometheus.GaugeOpts{
 | |
| 			Namespace: "CYCLOPS",
 | |
| 			Subsystem: strings.Split(service, "-")[0] + "_Service",
 | |
| 			Name:      "cache_state",
 | |
| 			Help:      "Different cache metrics of fails and usages",
 | |
| 		},
 | |
| 		[]string{
 | |
| 			"state",
 | |
| 			"resource",
 | |
| 		},
 | |
| 	)
 | |
| 
 | |
| 	metricCount := prometheus.NewGaugeVec(
 | |
| 		prometheus.GaugeOpts{
 | |
| 			Namespace: "CYCLOPS",
 | |
| 			Subsystem: strings.Split(service, "-")[0] + "_Service",
 | |
| 			Name:      "processed_count",
 | |
| 			Help:      "Different counting metrics for processed tasks",
 | |
| 		},
 | |
| 		[]string{
 | |
| 			"type",
 | |
| 		},
 | |
| 	)
 | |
| 
 | |
| 	metricEndpoint := prometheus.NewGaugeVec(
 | |
| 		prometheus.GaugeOpts{
 | |
| 			Namespace: "CYCLOPS",
 | |
| 			Subsystem: strings.Split(service, "-")[0] + "_Service",
 | |
| 			Name:      "api_request",
 | |
| 			Help:      "Different countings metrics for the endpoints",
 | |
| 		},
 | |
| 		[]string{
 | |
| 			"code",
 | |
| 			"method",
 | |
| 			"route",
 | |
| 		},
 | |
| 	)
 | |
| 
 | |
| 	metricKafka := prometheus.NewGaugeVec(
 | |
| 		prometheus.GaugeOpts{
 | |
| 			Namespace: "CYCLOPS",
 | |
| 			Subsystem: strings.Split(service, "-")[0] + "_Service",
 | |
| 			Name:      "kafka_state",
 | |
| 			Help:      "Different Kafka metrics of fails and usage of topics",
 | |
| 		},
 | |
| 		[]string{
 | |
| 			"mode",
 | |
| 			"state",
 | |
| 			"topic",
 | |
| 		},
 | |
| 	)
 | |
| 
 | |
| 	metricSecurity = prometheus.NewGaugeVec(
 | |
| 		prometheus.GaugeOpts{
 | |
| 			Namespace: "CYCLOPS",
 | |
| 			Subsystem: strings.Split(service, "-")[0] + "_Service",
 | |
| 			Name:      "access_control",
 | |
| 			Help:      "Different access control metrics",
 | |
| 		},
 | |
| 		[]string{
 | |
| 			"mode",
 | |
| 			"state",
 | |
| 		},
 | |
| 	)
 | |
| 
 | |
| 	metricTime = prometheus.NewGaugeVec(
 | |
| 		prometheus.GaugeOpts{
 | |
| 			Namespace: "CYCLOPS",
 | |
| 			Subsystem: strings.Split(service, "-")[0] + "_Service",
 | |
| 			Name:      "processing_time",
 | |
| 			Help:      "Different timing metrics",
 | |
| 		},
 | |
| 		[]string{
 | |
| 			"type",
 | |
| 		},
 | |
| 	)
 | |
| 
 | |
| 	register.MustRegister(metricCache, metricCount, metricEndpoint, metricKafka,
 | |
| 		metricSecurity, metricTime)
 | |
| 
 | |
| 	metricsMap["cache"] = metricCache
 | |
| 	metricsMap["count"] = metricCount
 | |
| 	metricsMap["api"] = metricEndpoint
 | |
| 	metricsMap["kafka"] = metricKafka
 | |
| 	metricsMap["security"] = metricSecurity
 | |
| 	metricsMap["time"] = metricTime
 | |
| 
 | |
| 	return
 | |
| 
 | |
| }
 | |
| 
 |