mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 18:02:01 +00:00
Cleanup: remove prometheus dependencies for volume
Co-authored-by: gavinfish <drfish.me@gmail.com>
This commit is contained in:
parent
da0091ceda
commit
b449b44856
@ -37,7 +37,6 @@ source "${KUBE_ROOT}/hack/lib/util.sh"
|
||||
# See: https://github.com/kubernetes/kubernetes/issues/89267
|
||||
allowed_prometheus_importers=(
|
||||
./cluster/images/etcd-version-monitor/etcd-version-monitor.go
|
||||
./pkg/volume/util/operationexecutor/operation_generator_test.go
|
||||
./staging/src/k8s.io/component-base/metrics/prometheusextension/timing_histogram.go
|
||||
./staging/src/k8s.io/component-base/metrics/prometheusextension/timing_histogram_test.go
|
||||
./staging/src/k8s.io/component-base/metrics/prometheusextension/timing_histogram_vec.go
|
||||
|
@ -44,7 +44,8 @@ const (
|
||||
* involves explicitly acknowledging support for the metric across multiple releases, in accordance with
|
||||
* the metric stability policy.
|
||||
*/
|
||||
var storageOperationMetric = metrics.NewHistogramVec(
|
||||
|
||||
var StorageOperationMetric = metrics.NewHistogramVec(
|
||||
&metrics.HistogramOpts{
|
||||
Name: "storage_operation_duration_seconds",
|
||||
Help: "Storage operation duration",
|
||||
@ -82,7 +83,7 @@ func init() {
|
||||
func registerMetrics() {
|
||||
// legacyregistry is the internal k8s wrapper around the prometheus
|
||||
// global registry, used specifically for metric stability enforcement
|
||||
legacyregistry.MustRegister(storageOperationMetric)
|
||||
legacyregistry.MustRegister(StorageOperationMetric)
|
||||
legacyregistry.MustRegister(storageOperationEndToEndLatencyMetric)
|
||||
legacyregistry.MustRegister(csiOperationsLatencyMetric)
|
||||
}
|
||||
@ -103,7 +104,7 @@ func OperationCompleteHook(plugin, operationName string) func(types.CompleteFunc
|
||||
if c.Migrated != nil {
|
||||
migrated = *c.Migrated
|
||||
}
|
||||
storageOperationMetric.WithLabelValues(plugin, operationName, status, strconv.FormatBool(migrated)).Observe(timeTaken)
|
||||
StorageOperationMetric.WithLabelValues(plugin, operationName, status, strconv.FormatBool(migrated)).Observe(timeTaken)
|
||||
}
|
||||
return opComplete
|
||||
}
|
||||
|
@ -28,20 +28,20 @@ import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
io_prometheus_client "github.com/prometheus/client_model/go"
|
||||
"github.com/stretchr/testify/assert"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/util/uuid"
|
||||
fakeclient "k8s.io/client-go/kubernetes/fake"
|
||||
"k8s.io/component-base/metrics/legacyregistry"
|
||||
"k8s.io/component-base/metrics/testutil"
|
||||
"k8s.io/csi-translation-lib/plugins"
|
||||
"k8s.io/kubernetes/pkg/volume"
|
||||
"k8s.io/kubernetes/pkg/volume/awsebs"
|
||||
csitesting "k8s.io/kubernetes/pkg/volume/csi/testing"
|
||||
"k8s.io/kubernetes/pkg/volume/gcepd"
|
||||
volumetesting "k8s.io/kubernetes/pkg/volume/testing"
|
||||
"k8s.io/kubernetes/pkg/volume/util"
|
||||
volumetypes "k8s.io/kubernetes/pkg/volume/util/types"
|
||||
)
|
||||
|
||||
@ -91,30 +91,15 @@ func TestOperationGenerator_GenerateUnmapVolumeFunc_PluginName(t *testing.T) {
|
||||
t.Fatalf("Error occurred while generating unmapVolumeFunc: %v", e)
|
||||
}
|
||||
|
||||
metricFamilyName := "storage_operation_duration_seconds"
|
||||
labelFilter := map[string]string{
|
||||
"migrated": "false",
|
||||
"status": "success",
|
||||
"operation_name": "unmap_volume",
|
||||
"volume_plugin": expectedPluginName,
|
||||
}
|
||||
// compare the relative change of the metric because of the global state of the prometheus.DefaultGatherer.Gather()
|
||||
storageOperationDurationSecondsMetricBefore := findMetricWithNameAndLabels(metricFamilyName, labelFilter)
|
||||
m := util.StorageOperationMetric.WithLabelValues(expectedPluginName, "unmap_volume", "success", "false")
|
||||
storageOperationDurationSecondsMetricBefore, _ := testutil.GetHistogramMetricCount(m)
|
||||
|
||||
var ee error
|
||||
unmapVolumeFunc.CompleteFunc(volumetypes.CompleteFuncParam{Err: &ee})
|
||||
|
||||
storageOperationDurationSecondsMetricAfter := findMetricWithNameAndLabels(metricFamilyName, labelFilter)
|
||||
if storageOperationDurationSecondsMetricAfter == nil {
|
||||
t.Fatalf("Couldn't find the metric with name(%s) and labels(%v)", metricFamilyName, labelFilter)
|
||||
}
|
||||
|
||||
if storageOperationDurationSecondsMetricBefore == nil {
|
||||
assert.Equal(t, uint64(1), *storageOperationDurationSecondsMetricAfter.Histogram.SampleCount, tc.name)
|
||||
} else {
|
||||
metricValueDiff := *storageOperationDurationSecondsMetricAfter.Histogram.SampleCount - *storageOperationDurationSecondsMetricBefore.Histogram.SampleCount
|
||||
assert.Equal(t, uint64(1), metricValueDiff, tc.name)
|
||||
}
|
||||
storageOperationDurationSecondsMetricAfter, _ := testutil.GetHistogramMetricCount(m)
|
||||
metricValueDiff := storageOperationDurationSecondsMetricAfter - storageOperationDurationSecondsMetricBefore
|
||||
assert.Equal(t, uint64(1), metricValueDiff, tc.name)
|
||||
}
|
||||
}
|
||||
|
||||
@ -406,40 +391,6 @@ func getTestPV(volumeName string, specSize string) *v1.PersistentVolume {
|
||||
}
|
||||
}
|
||||
|
||||
func findMetricWithNameAndLabels(metricFamilyName string, labelFilter map[string]string) *io_prometheus_client.Metric {
|
||||
metricFamily := getMetricFamily(metricFamilyName)
|
||||
if metricFamily == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
for _, metric := range metricFamily.GetMetric() {
|
||||
if isLabelsMatchWithMetric(labelFilter, metric) {
|
||||
return metric
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func isLabelsMatchWithMetric(labelFilter map[string]string, metric *io_prometheus_client.Metric) bool {
|
||||
if len(labelFilter) != len(metric.Label) {
|
||||
return false
|
||||
}
|
||||
for labelName, labelValue := range labelFilter {
|
||||
labelFound := false
|
||||
for _, labelPair := range metric.Label {
|
||||
if labelName == *labelPair.Name && labelValue == *labelPair.Value {
|
||||
labelFound = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !labelFound {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func getTestOperationGenerator(volumePluginMgr *volume.VolumePluginMgr, objects ...runtime.Object) OperationGenerator {
|
||||
fakeKubeClient := fakeclient.NewSimpleClientset(objects...)
|
||||
fakeRecorder := &record.FakeRecorder{}
|
||||
@ -492,16 +443,6 @@ func getTestVolumeToUnmount(pod *v1.Pod, pvSpec v1.PersistentVolumeSpec, pluginN
|
||||
return volumeToUnmount
|
||||
}
|
||||
|
||||
func getMetricFamily(metricFamilyName string) *io_prometheus_client.MetricFamily {
|
||||
metricFamilies, _ := legacyregistry.DefaultGatherer.Gather()
|
||||
for _, mf := range metricFamilies {
|
||||
if *mf.Name == metricFamilyName {
|
||||
return mf
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func initTestPlugins(t *testing.T, plugs []volume.VolumePlugin, pluginName string) (*volume.VolumePluginMgr, string) {
|
||||
client := fakeclient.NewSimpleClientset()
|
||||
pluginMgr, _, tmpDir := csitesting.NewTestPlugin(t, client)
|
||||
|
Loading…
Reference in New Issue
Block a user