forked from omec-project/udr
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtelemetry.go
More file actions
86 lines (72 loc) · 2.63 KB
/
telemetry.go
File metadata and controls
86 lines (72 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: 2024 Canonical Ltd.
/*
* Metrics package is used to expose the metrics of the UDR service.
*/
package metrics
import (
"net/http"
"github.com/omec-project/udr/logger"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
// UdrStats captures UDR stats
type UdrStats struct {
udrSubscriptionData *prometheus.CounterVec
udrApplicationData *prometheus.CounterVec
udrPolicyData *prometheus.CounterVec
}
var udrStats *UdrStats
func initUdrStats() *UdrStats {
return &UdrStats{
udrSubscriptionData: prometheus.NewCounterVec(prometheus.CounterOpts{
Name: "udr_subscription_data",
Help: "Counter of total Subscription data queries",
}, []string{"query_type", "resource_type", "result"}),
udrApplicationData: prometheus.NewCounterVec(prometheus.CounterOpts{
Name: "udr_application_data",
Help: "Counter of total Application data queries",
}, []string{"query_type", "resource_type", "result"}),
udrPolicyData: prometheus.NewCounterVec(prometheus.CounterOpts{
Name: "udr_policy_data",
Help: "Counter of total Policy data queries",
}, []string{"query_type", "resource_type", "result"}),
}
}
func (ps *UdrStats) register() error {
if err := prometheus.Register(ps.udrSubscriptionData); err != nil {
return err
}
if err := prometheus.Register(ps.udrApplicationData); err != nil {
return err
}
if err := prometheus.Register(ps.udrPolicyData); err != nil {
return err
}
return nil
}
func init() {
udrStats = initUdrStats()
if err := udrStats.register(); err != nil {
logger.InitLog.Errorln("UDR Stats register failed")
}
}
// InitMetrics initializes UDR metrics
func InitMetrics() {
http.Handle("/metrics", promhttp.Handler())
if err := http.ListenAndServe(":8080", nil); err != nil {
logger.InitLog.Errorf("Could not open metrics port: %v", err)
}
}
// IncrementUdrSubscriptionDataStats increments number of total Subscription data queries
func IncrementUdrSubscriptionDataStats(queryType, resourceType, result string) {
udrStats.udrSubscriptionData.WithLabelValues(queryType, resourceType, result).Inc()
}
// IncrementUdrApplicationDataStats increments number of total Application data queries
func IncrementUdrApplicationDataStats(queryType, resourceType, result string) {
udrStats.udrApplicationData.WithLabelValues(queryType, resourceType, result).Inc()
}
// IncrementUdrPolicyDataStats increments number of total Policy data queries
func IncrementUdrPolicyDataStats(queryType, resourceType, result string) {
udrStats.udrPolicyData.WithLabelValues(queryType, resourceType, result).Inc()
}