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
|
|
|
|
}
|
|
|