Skip to content

Commit

Permalink
Refactor kubevirt_vmi_number_of_outdated
Browse files Browse the repository at this point in the history
Signed-off-by: João Vilaça <jvilaca@redhat.com>
  • Loading branch information
machadovilaca committed Mar 18, 2024
1 parent 9c3a52d commit 23bdbff
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 16 deletions.
1 change: 1 addition & 0 deletions pkg/monitoring/metrics/virt-controller/BUILD.bazel
Expand Up @@ -8,6 +8,7 @@ go_library(
"migration_metrics.go",
"migrationstats_collector.go",
"perfscale_metrics.go",
"vmi_metrics.go",
"vmistats_collector.go",
"vmstats_collector.go",
],
Expand Down
1 change: 1 addition & 0 deletions pkg/monitoring/metrics/virt-controller/metrics.go
Expand Up @@ -35,6 +35,7 @@ var (
componentMetrics,
migrationMetrics,
perfscaleMetrics,
vmiMetrics,
}

vmInformer cache.SharedIndexInformer
Expand Down
40 changes: 40 additions & 0 deletions pkg/monitoring/metrics/virt-controller/vmi_metrics.go
@@ -0,0 +1,40 @@
/*
* This file is part of the KubeVirt project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright the KubeVirt Authors.
*/

package virt_controller

import (
"github.com/machadovilaca/operator-observability/pkg/operatormetrics"
)

var (
vmiMetrics = []operatormetrics.Metric{
outdatedVirtualMachineInstanceWorkloads,
}

outdatedVirtualMachineInstanceWorkloads = operatormetrics.NewGauge(
operatormetrics.MetricOpts{
Name: "kubevirt_vmi_number_of_outdated",
Help: "Indication for the total number of VirtualMachineInstance workloads that are not running within the most up-to-date version of the virt-launcher environment.",
},
)
)

func SetOutdatedVirtualMachineInstanceWorkloads(value int) {
outdatedVirtualMachineInstanceWorkloads.Set(float64(value))
}
2 changes: 1 addition & 1 deletion pkg/virt-controller/watch/workload-updater/BUILD.bazel
Expand Up @@ -7,13 +7,13 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//pkg/controller:go_default_library",
"//pkg/monitoring/metrics/virt-controller:go_default_library",
"//pkg/util/migrations:go_default_library",
"//pkg/util/status:go_default_library",
"//pkg/virt-config:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//staging/src/kubevirt.io/client-go/kubecli:go_default_library",
"//staging/src/kubevirt.io/client-go/log:go_default_library",
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
"//vendor/golang.org/x/time/rate:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/policy/v1beta1:go_default_library",
Expand Down
17 changes: 2 additions & 15 deletions pkg/virt-controller/watch/workload-updater/workload-updater.go
Expand Up @@ -10,7 +10,6 @@ import (

"golang.org/x/time/rate"

"github.com/prometheus/client_golang/prometheus"
k8sv1 "k8s.io/api/core/v1"
policy "k8s.io/api/policy/v1beta1"
"k8s.io/apimachinery/pkg/api/errors"
Expand All @@ -31,6 +30,7 @@ import (
"kubevirt.io/client-go/log"

"kubevirt.io/kubevirt/pkg/controller"
metrics "kubevirt.io/kubevirt/pkg/monitoring/metrics/virt-controller"
"kubevirt.io/kubevirt/pkg/util/status"
)

Expand All @@ -45,15 +45,6 @@ const (
SuccessfulEvictVirtualMachineInstanceReason = "SuccessfulEvict"
)

var (
outdatedVirtualMachineInstanceWorkloads = prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "kubevirt_vmi_number_of_outdated",
Help: "Indication for the total number of VirtualMachineInstance workloads that are not running within the most up-to-date version of the virt-launcher environment.",
},
)
)

// time to wait before re-enqueing when outdated VMIs are still detected
const periodicReEnqueueIntervalSeconds = 30

Expand All @@ -63,10 +54,6 @@ const defaultThrottleInterval = 5 * time.Second
const defaultBatchDeletionIntervalSeconds = 60
const defaultBatchDeletionCount = 10

func init() {
prometheus.MustRegister(outdatedVirtualMachineInstanceWorkloads)
}

type WorkloadUpdateController struct {
clientset kubecli.KubevirtClient
queue workqueue.RateLimitingInterface
Expand Down Expand Up @@ -429,7 +416,7 @@ func (c *WorkloadUpdateController) sync(kv *virtv1.KubeVirt) error {
return err
}

outdatedVirtualMachineInstanceWorkloads.Set(float64(len(data.allOutdatedVMIs)))
metrics.SetOutdatedVirtualMachineInstanceWorkloads(len(data.allOutdatedVMIs))

// update outdated workload count on kv
if kv.Status.OutdatedVirtualMachineInstanceWorkloads == nil || *kv.Status.OutdatedVirtualMachineInstanceWorkloads != len(data.allOutdatedVMIs) {
Expand Down

0 comments on commit 23bdbff

Please sign in to comment.