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.

111 lines
3.3 KiB

package lib
import (
"strings"
"github.com/go-kit/kit/metrics"
kitprometheus "github.com/go-kit/kit/metrics/prometheus"
"github.com/prometheus/client_golang/prometheus"
)
var (
// uid
service_uid metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_uid",
}, []string{"value"})
service_name metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_name",
}, []string{"value"})
service_version metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_version",
}, []string{"value"})
service_status metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_status",
}, []string{"value"})
service_port_http metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_port_http",
}, []string{"value"})
service_pid metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_pid",
}, []string{"value"})
service_replicas metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_replicas",
}, []string{"value"})
service_port_https metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_port_https",
}, []string{"value"})
service_dead_time metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_dead_time",
}, []string{"value"})
service_follower metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_follower",
}, []string{"value"})
service_port_grpc metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_port_grpc",
}, []string{"value"})
service_port_metrics metrics.Gauge = kitprometheus.NewGaugeFrom(prometheus.GaugeOpts{
Name: "service_port_metrics",
}, []string{"value"})
)
func SendServiceParamsToMetric(uid, name, version, status, pid, replicas, portHTTP, portGRPC, portMetrics, portHTTPS, dead_time, follower string) {
var count float64
service_uid.With("value", uid).Set(count)
service_name.With("value", name).Set(count)
service_version.With("value", version).Set(count)
service_status.With("value", status).Set(count)
service_port_http.With("value", portHTTP).Set(count)
service_pid.With("value", pid).Set(count)
service_replicas.With("value", replicas).Set(count)
service_port_https.With("value", portHTTPS).Set(count)
service_dead_time.With("value", dead_time).Set(count)
service_follower.With("value", follower).Set(count)
service_port_grpc.With("value", portGRPC).Set(count)
service_port_metrics.With("value", portMetrics).Set(count)
}
// ValidateNameVersion - формирует правильные имя проекта и версию сервиса исходя из того, что пришло из настроек
func ValidateNameVersion(project, types, domain string) (name, version string) {
name = "unknown"
if project != "" {
if len(strings.Split(project, "-")) > 3 { // признак того, что получили UID (для совместимости)
if domain != "" {
project = strings.Split(domain, "/")[0]
}
}
name = project // название проекта
}
pp := strings.Split(domain, "/")
if len(pp) == 1 {
if pp[0] != "" {
name = pp[0]
}
}
if len(pp) == 2 {
if pp[0] != "" {
name = pp[0]
}
if pp[1] != "" {
version = pp[1]
}
}
if version == "" {
version = types
}
return name, version
}