package metrics import ( "fmt" "github.com/prometheus/client_golang/prometheus" "edge-infra.dev/pkg/lib/runtime/metrics" ) func init() { metrics.Registry.MustRegister( MessagesTotal, RequeueErrorsTotal, BadMessagesTotal, IgnoredMessagesTotal, ) } const namespace = "kinform_psqlinjector" const ( labelSuccessful = "successful" labelPayloadType = "payload_type" labelClusterEdgeID = "cluster_edge_id" ) // Kinform summary var ( MessagesTotal = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: namespace, Name: "messages_total", Help: "Number of messages received by psqlinjector", }, []string{ labelSuccessful, labelPayloadType, labelClusterEdgeID, }, ) RequeueErrorsTotal = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: namespace, Name: "handler_errors_total", Help: "Number of nackable errors", }, []string{ labelPayloadType, labelClusterEdgeID, }, ) BadMessagesTotal = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: namespace, Name: "bad_messages_total", Help: "Number of bad messages that can not be handled", }, []string{ labelPayloadType, labelClusterEdgeID, }, ) IgnoredMessagesTotal = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: namespace, Name: "ignored_messages_total", Help: "Number of ignored messages", }, []string{ labelPayloadType, labelClusterEdgeID, }, ) ) func IncMessagesTotal(payloadType, clusterEdgeID string, successful bool) { MessagesTotal.With(prometheus.Labels{ labelPayloadType: payloadType, labelClusterEdgeID: clusterEdgeID, labelSuccessful: fmt.Sprint(successful), }).Inc() } func IncRequeueErrorsTotal(payloadType, clusterEdgeID string) { RequeueErrorsTotal.With(prometheus.Labels{ labelPayloadType: payloadType, labelClusterEdgeID: clusterEdgeID, }).Inc() } func IncBadMessagesTotal(payloadType, clusterEdgeID string) { BadMessagesTotal.With(prometheus.Labels{ labelPayloadType: payloadType, labelClusterEdgeID: clusterEdgeID, }).Inc() } func IncIgnoredMessagesTotal(payloadType, clusterEdgeID string) { IgnoredMessagesTotal.With(prometheus.Labels{ labelPayloadType: payloadType, labelClusterEdgeID: clusterEdgeID, }).Inc() }