Skip to content

Commit 290eb03

Browse files
committed
Add metrics for UDN
Signed-off-by: Dan Winship <[email protected]>
1 parent 36ba17d commit 290eb03

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

go-controller/pkg/clustermanager/userdefinednetwork/controller.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
userdefinednetworkscheme "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/crd/userdefinednetwork/v1/apis/clientset/versioned/scheme"
3838
userdefinednetworkinformer "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/crd/userdefinednetwork/v1/apis/informers/externalversions/userdefinednetwork/v1"
3939
userdefinednetworklister "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/crd/userdefinednetwork/v1/apis/listers/userdefinednetwork/v1"
40+
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/metrics"
4041
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/util"
4142
)
4243

@@ -389,6 +390,14 @@ func (c *Controller) syncUserDefinedNetwork(udn *userdefinednetworkv1.UserDefine
389390
return nil, nil
390391
}
391392

393+
var role, topology string
394+
if udn.Spec.Layer2 != nil {
395+
role = string(udn.Spec.Layer2.Role)
396+
} else if udn.Spec.Layer3 != nil {
397+
role = string(udn.Spec.Layer3.Role)
398+
}
399+
topology = string(udn.Spec.Topology)
400+
392401
if !udn.DeletionTimestamp.IsZero() { // udn is being deleted
393402
if controllerutil.ContainsFinalizer(udn, template.FinalizerUserDefinedNetwork) {
394403
if err := c.deleteNAD(udn, udn.Namespace); err != nil {
@@ -401,6 +410,7 @@ func (c *Controller) syncUserDefinedNetwork(udn *userdefinednetworkv1.UserDefine
401410
return nil, fmt.Errorf("failed to remove finalizer to UserDefinedNetwork: %w", err)
402411
}
403412
klog.Infof("Finalizer removed from UserDefinedNetworks [%s/%s]", udn.Namespace, udn.Name)
413+
metrics.DecrementUDNCount(role, topology)
404414
}
405415

406416
return nil, nil
@@ -412,6 +422,7 @@ func (c *Controller) syncUserDefinedNetwork(udn *userdefinednetworkv1.UserDefine
412422
return nil, fmt.Errorf("failed to add finalizer to UserDefinedNetwork: %w", err)
413423
}
414424
klog.Infof("Added Finalizer to UserDefinedNetwork [%s/%s]", udn.Namespace, udn.Name)
425+
metrics.IncrementUDNCount(role, topology)
415426
}
416427

417428
return c.updateNAD(udn, udn.Namespace)
@@ -539,6 +550,16 @@ func (c *Controller) syncClusterUDN(cudn *userdefinednetworkv1.ClusterUserDefine
539550
cudnName := cudn.Name
540551
affectedNamespaces := c.namespaceTracker[cudnName]
541552

553+
var role, topology string
554+
if cudn.Spec.Network.Layer2 != nil {
555+
role = string(cudn.Spec.Network.Layer2.Role)
556+
} else if cudn.Spec.Network.Layer3 != nil {
557+
role = string(cudn.Spec.Network.Layer3.Role)
558+
} else if cudn.Spec.Network.Localnet != nil {
559+
role = string(cudn.Spec.Network.Localnet.Role)
560+
}
561+
topology = string(cudn.Spec.Network.Topology)
562+
542563
if !cudn.DeletionTimestamp.IsZero() {
543564
if controllerutil.ContainsFinalizer(cudn, template.FinalizerUserDefinedNetwork) {
544565
var errs []error
@@ -564,6 +585,7 @@ func (c *Controller) syncClusterUDN(cudn *userdefinednetworkv1.ClusterUserDefine
564585
}
565586
klog.Infof("Finalizer removed from ClusterUserDefinedNetwork %q", cudn.Name)
566587
delete(c.namespaceTracker, cudnName)
588+
metrics.DecrementCUDNCount(role, topology)
567589
}
568590

569591
return nil, nil
@@ -581,6 +603,7 @@ func (c *Controller) syncClusterUDN(cudn *userdefinednetworkv1.ClusterUserDefine
581603
return nil, fmt.Errorf("failed to add finalizer to ClusterUserDefinedNetwork %q: %w", cudnName, err)
582604
}
583605
klog.Infof("Added Finalizer to ClusterUserDefinedNetwork %q", cudnName)
606+
metrics.IncrementCUDNCount(role, topology)
584607
}
585608

586609
selectedNamespaces, err := c.getSelectedNamespaces(cudn.Spec.NamespaceSelector)

go-controller/pkg/metrics/cluster_manager.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,28 @@ var metricEgressIPRebalanceCount = prometheus.NewCounter(prometheus.CounterOpts{
9191

9292
/** EgressIP metrics recorded from cluster-manager ends**/
9393

94+
var metricUDNCount = prometheus.NewGaugeVec(prometheus.GaugeOpts{
95+
Namespace: types.MetricOvnkubeNamespace,
96+
Subsystem: types.MetricOvnkubeSubsystemClusterManager,
97+
Name: "user_defined_networks",
98+
Help: "The total number of UserDefinedNetworks in the cluster"},
99+
[]string{
100+
"role",
101+
"topology",
102+
},
103+
)
104+
105+
var metricCUDNCount = prometheus.NewGaugeVec(prometheus.GaugeOpts{
106+
Namespace: types.MetricOvnkubeNamespace,
107+
Subsystem: types.MetricOvnkubeSubsystemClusterManager,
108+
Name: "cluster_user_defined_networks",
109+
Help: "The total number of ClusterUserDefinedNetworks in the cluster"},
110+
[]string{
111+
"role",
112+
"topology",
113+
},
114+
)
115+
94116
// RegisterClusterManagerBase registers ovnkube cluster manager base metrics with the Prometheus registry.
95117
// This function should only be called once.
96118
func RegisterClusterManagerBase() {
@@ -130,6 +152,8 @@ func RegisterClusterManagerFunctional() {
130152
prometheus.MustRegister(metricEgressIPRebalanceCount)
131153
prometheus.MustRegister(metricEgressIPCount)
132154
}
155+
prometheus.MustRegister(metricUDNCount)
156+
prometheus.MustRegister(metricCUDNCount)
133157
if err := prometheus.Register(MetricResourceRetryFailuresCount); err != nil {
134158
if _, ok := err.(prometheus.AlreadyRegisteredError); !ok {
135159
panic(err)
@@ -165,3 +189,23 @@ func RecordEgressIPRebalance(count int) {
165189
func RecordEgressIPCount(count float64) {
166190
metricEgressIPCount.Set(count)
167191
}
192+
193+
// IncrementUDNCount increments the number of UserDefinedNetworks of the given type
194+
func IncrementUDNCount(role, topology string) {
195+
metricUDNCount.WithLabelValues(role, topology).Inc()
196+
}
197+
198+
// DecrementUDNCount decrements the number of UserDefinedNetworks of the given type
199+
func DecrementUDNCount(role, topology string) {
200+
metricUDNCount.WithLabelValues(role, topology).Dec()
201+
}
202+
203+
// IncrementCUDNCount increments the number of ClusterUserDefinedNetworks of the given type
204+
func IncrementCUDNCount(role, topology string) {
205+
metricCUDNCount.WithLabelValues(role, topology).Inc()
206+
}
207+
208+
// DecrementCUDNCount decrements the number of ClusterUserDefinedNetworks of the given type
209+
func DecrementCUDNCount(role, topology string) {
210+
metricCUDNCount.WithLabelValues(role, topology).Dec()
211+
}

0 commit comments

Comments
 (0)