Skip to content

Commit d8d2618

Browse files
authored
feat: enable RP metrics (#195)
1 parent 4d24e41 commit d8d2618

File tree

13 files changed

+92
-40
lines changed

13 files changed

+92
-40
lines changed

cmd/hubagent/main.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,16 @@ func init() {
8585
// +kubebuilder:scaffold:scheme
8686
klog.InitFlags(nil)
8787

88-
metrics.Registry.MustRegister(fleetmetrics.JoinResultMetrics, fleetmetrics.LeaveResultMetrics,
89-
fleetmetrics.PlacementApplyFailedCount, fleetmetrics.PlacementApplySucceedCount,
90-
fleetmetrics.SchedulingCycleDurationMilliseconds, fleetmetrics.SchedulerActiveWorkers)
88+
metrics.Registry.MustRegister(
89+
fleetmetrics.JoinResultMetrics,
90+
fleetmetrics.LeaveResultMetrics,
91+
fleetmetrics.PlacementApplyFailedCount,
92+
fleetmetrics.PlacementApplySucceedCount,
93+
fleetmetrics.SchedulingCycleDurationMilliseconds,
94+
fleetmetrics.SchedulerActiveWorkers,
95+
fleetmetrics.FleetPlacementStatusLastTimeStampSeconds,
96+
fleetmetrics.FleetEvictionStatus,
97+
)
9198
}
9299

93100
func main() {

pkg/controllers/clusterresourceplacement/controller.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ import (
3737
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3838

3939
fleetv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
40+
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
4041
"github.com/kubefleet-dev/kubefleet/pkg/scheduler/queue"
4142
"github.com/kubefleet-dev/kubefleet/pkg/utils/annotations"
4243
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
4344
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller"
44-
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller/metrics"
4545
"github.com/kubefleet-dev/kubefleet/pkg/utils/defaulter"
4646
"github.com/kubefleet-dev/kubefleet/pkg/utils/labels"
4747
"github.com/kubefleet-dev/kubefleet/pkg/utils/resource"
@@ -112,7 +112,7 @@ func (r *Reconciler) handleDelete(ctx context.Context, placementObj fleetv1beta1
112112
return ctrl.Result{}, err
113113
}
114114
// change the metrics to add nameplace of namespace
115-
metrics.FleetPlacementStatusLastTimeStampSeconds.DeletePartialMatch(prometheus.Labels{"name": placementObj.GetName()})
115+
metrics.FleetPlacementStatusLastTimeStampSeconds.DeletePartialMatch(prometheus.Labels{"namespace": placementObj.GetNamespace(), "name": placementObj.GetName()})
116116
controllerutil.RemoveFinalizer(placementObj, fleetv1beta1.PlacementCleanupFinalizer)
117117
if err := r.Client.Update(ctx, placementObj); err != nil {
118118
klog.ErrorS(err, "Failed to remove placement finalizer", "placement", placementKObj)
@@ -1238,7 +1238,7 @@ func emitPlacementStatusMetric(placementObj fleetv1beta1.PlacementObj) {
12381238
status = string(cond.Status)
12391239
reason = cond.Reason
12401240
}
1241-
metrics.FleetPlacementStatusLastTimeStampSeconds.WithLabelValues(placementObj.GetName(), strconv.FormatInt(placementObj.GetGeneration(), 10), scheduledConditionType, status, reason).SetToCurrentTime()
1241+
metrics.FleetPlacementStatusLastTimeStampSeconds.WithLabelValues(placementObj.GetNamespace(), placementObj.GetName(), strconv.FormatInt(placementObj.GetGeneration(), 10), scheduledConditionType, status, reason).SetToCurrentTime()
12421242
return
12431243
}
12441244

@@ -1252,12 +1252,12 @@ func emitPlacementStatusMetric(placementObj fleetv1beta1.PlacementObj) {
12521252
status = string(cond.Status)
12531253
reason = cond.Reason
12541254
}
1255-
metrics.FleetPlacementStatusLastTimeStampSeconds.WithLabelValues(placementObj.GetName(), strconv.FormatInt(placementObj.GetGeneration(), 10), conditionType, status, reason).SetToCurrentTime()
1255+
metrics.FleetPlacementStatusLastTimeStampSeconds.WithLabelValues(placementObj.GetNamespace(), placementObj.GetName(), strconv.FormatInt(placementObj.GetGeneration(), 10), conditionType, status, reason).SetToCurrentTime()
12561256
return
12571257
}
12581258
}
12591259

12601260
// Emit the "Completed" condition metric to indicate that the placement has completed.
12611261
// This condition is used solely for metric reporting purposes.
1262-
metrics.FleetPlacementStatusLastTimeStampSeconds.WithLabelValues(placementObj.GetName(), strconv.FormatInt(placementObj.GetGeneration(), 10), "Completed", string(metav1.ConditionTrue), "Completed").SetToCurrentTime()
1262+
metrics.FleetPlacementStatusLastTimeStampSeconds.WithLabelValues(placementObj.GetNamespace(), placementObj.GetName(), strconv.FormatInt(placementObj.GetGeneration(), 10), "Completed", string(metav1.ConditionTrue), "Completed").SetToCurrentTime()
12631263
}

pkg/controllers/clusterresourceplacement/controller_integration_test.go

Lines changed: 29 additions & 1 deletion
Large diffs are not rendered by default.

pkg/controllers/clusterresourceplacement/suite_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,15 @@ import (
3535
"sigs.k8s.io/controller-runtime/pkg/client"
3636
"sigs.k8s.io/controller-runtime/pkg/envtest"
3737
"sigs.k8s.io/controller-runtime/pkg/manager"
38+
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3839
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
3940

4041
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
4142
"github.com/kubefleet-dev/kubefleet/cmd/hubagent/options"
4243
"github.com/kubefleet-dev/kubefleet/pkg/controllers/clusterresourcebindingwatcher"
4344
"github.com/kubefleet-dev/kubefleet/pkg/controllers/clusterresourceplacementwatcher"
4445
"github.com/kubefleet-dev/kubefleet/pkg/controllers/clusterschedulingpolicysnapshot"
46+
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
4547
"github.com/kubefleet-dev/kubefleet/pkg/utils"
4648
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller"
4749
"github.com/kubefleet-dev/kubefleet/pkg/utils/informer"
@@ -150,6 +152,9 @@ var _ = BeforeSuite(func() {
150152
}).SetupWithManagerForClusterResourceBinding(mgr)
151153
Expect(err).Should(Succeed(), "failed to create clusterResourceBinding watcher")
152154

155+
// Register metrics.
156+
ctrlmetrics.Registry.MustRegister(metrics.FleetPlacementStatusLastTimeStampSeconds)
157+
153158
ctx, cancel = context.WithCancel(context.TODO())
154159
// Run the controller manager
155160
go func() {

pkg/controllers/clusterresourceplacementeviction/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ import (
3535
"sigs.k8s.io/controller-runtime/pkg/predicate"
3636

3737
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
38+
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
3839
bindingutils "github.com/kubefleet-dev/kubefleet/pkg/utils/binding"
3940
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
4041
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller"
41-
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller/metrics"
4242
"github.com/kubefleet-dev/kubefleet/pkg/utils/defaulter"
4343
evictionutils "github.com/kubefleet-dev/kubefleet/pkg/utils/eviction"
4444
)

pkg/controllers/clusterresourceplacementeviction/controller_intergration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ import (
3333
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3434

3535
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
36+
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
3637
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
37-
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller/metrics"
3838
testutilseviction "github.com/kubefleet-dev/kubefleet/test/utils/eviction"
3939
)
4040

pkg/controllers/clusterresourceplacementeviction/controller_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ import (
3838
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3939

4040
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
41+
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
4142
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
42-
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller/metrics"
4343
"github.com/kubefleet-dev/kubefleet/pkg/utils/defaulter"
4444
)
4545

pkg/controllers/clusterresourceplacementeviction/suite_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package clusterresourceplacementeviction
1919
import (
2020
"context"
2121
"flag"
22+
"os"
2223
"path/filepath"
2324
"testing"
2425

@@ -33,9 +34,11 @@ import (
3334
"sigs.k8s.io/controller-runtime/pkg/envtest"
3435
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3536
"sigs.k8s.io/controller-runtime/pkg/manager"
37+
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3638
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
3739

3840
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
41+
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
3942
)
4043

4144
var (
@@ -47,6 +50,13 @@ var (
4750
cancel context.CancelFunc
4851
)
4952

53+
func TestMain(m *testing.M) {
54+
// Register here as the metric is both tested in ginkgo tests and go unit tests.
55+
ctrlmetrics.Registry.MustRegister(metrics.FleetEvictionStatus)
56+
57+
os.Exit(m.Run())
58+
}
59+
5060
func TestAPIs(t *testing.T) {
5161
RegisterFailHandler(Fail)
5262

pkg/controllers/updaterun/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ import (
4141
"sigs.k8s.io/controller-runtime/pkg/reconcile"
4242

4343
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
44+
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
4445
"github.com/kubefleet-dev/kubefleet/pkg/utils"
4546
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
4647
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller"
47-
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller/metrics"
4848
"github.com/kubefleet-dev/kubefleet/pkg/utils/informer"
4949
)
5050

pkg/controllers/updaterun/controller_integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ import (
4343

4444
clusterv1beta1 "github.com/kubefleet-dev/kubefleet/apis/cluster/v1beta1"
4545
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
46+
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
4647
"github.com/kubefleet-dev/kubefleet/pkg/utils"
4748
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
48-
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller/metrics"
4949
metricsutils "github.com/kubefleet-dev/kubefleet/test/utils/metrics"
5050
)
5151

0 commit comments

Comments
 (0)