diff --git a/cmd/cloud-controller-manager/BUILD b/cmd/cloud-controller-manager/BUILD index 29a29722b18..cc25f935b33 100644 --- a/cmd/cloud-controller-manager/BUILD +++ b/cmd/cloud-controller-manager/BUILD @@ -21,9 +21,8 @@ go_library( deps = [ "//cmd/cloud-controller-manager/app:go_default_library", "//pkg/cloudprovider/providers:go_default_library", - "//pkg/util/prometheusclientgo:go_default_library", - "//pkg/version/prometheus:go_default_library", "//staging/src/k8s.io/component-base/logs:go_default_library", + "//staging/src/k8s.io/component-base/metrics/prometheus/clientgo:go_default_library", ], ) diff --git a/cmd/cloud-controller-manager/app/BUILD b/cmd/cloud-controller-manager/app/BUILD index 2b0d6581f6a..bf877959422 100644 --- a/cmd/cloud-controller-manager/app/BUILD +++ b/cmd/cloud-controller-manager/app/BUILD @@ -18,7 +18,6 @@ go_library( "//pkg/features:go_default_library", "//pkg/util/configz:go_default_library", "//pkg/util/flag:go_default_library", - "//pkg/version:go_default_library", "//pkg/version/verflag:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", @@ -32,6 +31,7 @@ go_library( "//staging/src/k8s.io/cloud-provider:go_default_library", "//staging/src/k8s.io/component-base/cli/flag:go_default_library", "//staging/src/k8s.io/component-base/cli/globalflag:go_default_library", + "//staging/src/k8s.io/component-base/version:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/utils/net:go_default_library", diff --git a/cmd/cloud-controller-manager/app/controllermanager.go b/cmd/cloud-controller-manager/app/controllermanager.go index 3521eafa197..f77262d484f 100644 --- a/cmd/cloud-controller-manager/app/controllermanager.go +++ b/cmd/cloud-controller-manager/app/controllermanager.go @@ -37,13 +37,13 @@ import ( cloudprovider "k8s.io/cloud-provider" cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/cli/globalflag" + "k8s.io/component-base/version" "k8s.io/klog" cloudcontrollerconfig "k8s.io/kubernetes/cmd/cloud-controller-manager/app/config" "k8s.io/kubernetes/cmd/cloud-controller-manager/app/options" genericcontrollermanager "k8s.io/kubernetes/cmd/controller-manager/app" "k8s.io/kubernetes/pkg/util/configz" utilflag "k8s.io/kubernetes/pkg/util/flag" - "k8s.io/kubernetes/pkg/version" "k8s.io/kubernetes/pkg/version/verflag" ) diff --git a/cmd/cloud-controller-manager/controller-manager.go b/cmd/cloud-controller-manager/controller-manager.go index 4857416db9e..a165d0b63ec 100644 --- a/cmd/cloud-controller-manager/controller-manager.go +++ b/cmd/cloud-controller-manager/controller-manager.go @@ -29,9 +29,8 @@ import ( // NOTE: Importing all in-tree cloud-providers is not required when // implementing an out-of-tree cloud-provider. + _ "k8s.io/component-base/metrics/prometheus/clientgo" // load all the prometheus client-go plugins _ "k8s.io/kubernetes/pkg/cloudprovider/providers" - _ "k8s.io/kubernetes/pkg/util/prometheusclientgo" // load all the prometheus client-go plugins - _ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration ) func main() { diff --git a/cmd/controller-manager/app/BUILD b/cmd/controller-manager/app/BUILD index f88adc9ef20..984cf2b7676 100644 --- a/cmd/controller-manager/app/BUILD +++ b/cmd/controller-manager/app/BUILD @@ -22,7 +22,7 @@ go_library( "//staging/src/k8s.io/apiserver/pkg/server/routes:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/component-base/config:go_default_library", - "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", + "//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library", "//vendor/k8s.io/klog:go_default_library", ], ) diff --git a/cmd/controller-manager/app/serve.go b/cmd/controller-manager/app/serve.go index 81b01329ddc..127ed02ced1 100644 --- a/cmd/controller-manager/app/serve.go +++ b/cmd/controller-manager/app/serve.go @@ -20,8 +20,6 @@ import ( "net/http" goruntime "runtime" - "github.com/prometheus/client_golang/prometheus" - genericapifilters "k8s.io/apiserver/pkg/endpoints/filters" apirequest "k8s.io/apiserver/pkg/endpoints/request" apiserver "k8s.io/apiserver/pkg/server" @@ -30,6 +28,7 @@ import ( "k8s.io/apiserver/pkg/server/mux" "k8s.io/apiserver/pkg/server/routes" componentbaseconfig "k8s.io/component-base/config" + "k8s.io/component-base/metrics/legacyregistry" "k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/util/configz" ) @@ -64,7 +63,7 @@ func NewBaseHandler(c *componentbaseconfig.DebuggingConfiguration, checks ...hea } } configz.InstallHandler(mux) - mux.Handle("/metrics", prometheus.Handler()) + mux.Handle("/metrics", legacyregistry.Handler()) return mux } diff --git a/cmd/hyperkube/BUILD b/cmd/hyperkube/BUILD index 41c086780a4..df5d3c2254c 100644 --- a/cmd/hyperkube/BUILD +++ b/cmd/hyperkube/BUILD @@ -24,11 +24,11 @@ go_library( "//cmd/kube-proxy/app:go_default_library", "//cmd/kube-scheduler/app:go_default_library", "//cmd/kubelet/app:go_default_library", - "//pkg/client/metrics/prometheus:go_default_library", "//pkg/kubectl/cmd:go_default_library", "//pkg/version/prometheus:go_default_library", "//staging/src/k8s.io/component-base/cli/flag:go_default_library", "//staging/src/k8s.io/component-base/logs:go_default_library", + "//staging/src/k8s.io/component-base/metrics/prometheus/restclient:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", ], diff --git a/cmd/hyperkube/main.go b/cmd/hyperkube/main.go index 5568f0e7d3a..58b98d1c24f 100644 --- a/cmd/hyperkube/main.go +++ b/cmd/hyperkube/main.go @@ -31,13 +31,13 @@ import ( cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" + _ "k8s.io/component-base/metrics/prometheus/restclient" // for client metric registration cloudcontrollermanager "k8s.io/kubernetes/cmd/cloud-controller-manager/app" kubeapiserver "k8s.io/kubernetes/cmd/kube-apiserver/app" kubecontrollermanager "k8s.io/kubernetes/cmd/kube-controller-manager/app" kubeproxy "k8s.io/kubernetes/cmd/kube-proxy/app" kubescheduler "k8s.io/kubernetes/cmd/kube-scheduler/app" kubelet "k8s.io/kubernetes/cmd/kubelet/app" - _ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration kubectl "k8s.io/kubernetes/pkg/kubectl/cmd" _ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration ) diff --git a/cmd/kube-controller-manager/BUILD b/cmd/kube-controller-manager/BUILD index 6e9b0b68288..b77adbe6a7e 100644 --- a/cmd/kube-controller-manager/BUILD +++ b/cmd/kube-controller-manager/BUILD @@ -20,9 +20,8 @@ go_library( importpath = "k8s.io/kubernetes/cmd/kube-controller-manager", deps = [ "//cmd/kube-controller-manager/app:go_default_library", - "//pkg/util/prometheusclientgo:go_default_library", - "//pkg/version/prometheus:go_default_library", "//staging/src/k8s.io/component-base/logs:go_default_library", + "//staging/src/k8s.io/component-base/metrics/prometheus/clientgo:go_default_library", ], ) diff --git a/cmd/kube-controller-manager/controller-manager.go b/cmd/kube-controller-manager/controller-manager.go index 4cfd37c8ed5..fdb473aee1c 100644 --- a/cmd/kube-controller-manager/controller-manager.go +++ b/cmd/kube-controller-manager/controller-manager.go @@ -26,9 +26,8 @@ import ( "time" "k8s.io/component-base/logs" + _ "k8s.io/component-base/metrics/prometheus/clientgo" // load all the prometheus client-go plugin "k8s.io/kubernetes/cmd/kube-controller-manager/app" - _ "k8s.io/kubernetes/pkg/util/prometheusclientgo" // load all the prometheus client-go plugin - _ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration ) func main() { diff --git a/pkg/cloudprovider/providers/openstack/BUILD b/pkg/cloudprovider/providers/openstack/BUILD index 1aa0eb3eb41..6ce8090d2d3 100644 --- a/pkg/cloudprovider/providers/openstack/BUILD +++ b/pkg/cloudprovider/providers/openstack/BUILD @@ -38,6 +38,8 @@ go_library( "//staging/src/k8s.io/cloud-provider/volume:go_default_library", "//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library", "//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library", + "//staging/src/k8s.io/component-base/metrics:go_default_library", + "//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library", "//vendor/github.com/gophercloud/gophercloud:go_default_library", "//vendor/github.com/gophercloud/gophercloud/openstack:go_default_library", "//vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions:go_default_library", diff --git a/pkg/cloudprovider/providers/openstack/openstack_metrics.go b/pkg/cloudprovider/providers/openstack/openstack_metrics.go index 84021f58f0f..0088c4e4901 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_metrics.go +++ b/pkg/cloudprovider/providers/openstack/openstack_metrics.go @@ -21,7 +21,8 @@ package openstack import ( "sync" - "github.com/prometheus/client_golang/prometheus" + "k8s.io/component-base/metrics" + "k8s.io/component-base/metrics/legacyregistry" ) const ( @@ -31,20 +32,22 @@ const ( ) var ( - openstackOperationsLatency = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Subsystem: openstackSubsystem, - Name: openstackOperationKey, - Help: "Latency of openstack api call", + openstackOperationsLatency = metrics.NewHistogramVec( + &metrics.HistogramOpts{ + Subsystem: openstackSubsystem, + Name: openstackOperationKey, + Help: "Latency of openstack api call", + StabilityLevel: metrics.ALPHA, }, []string{"request"}, ) - openstackAPIRequestErrors = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Subsystem: openstackSubsystem, - Name: openstackOperationErrorKey, - Help: "Cumulative number of openstack Api call errors", + openstackAPIRequestErrors = metrics.NewCounterVec( + &metrics.CounterOpts{ + Subsystem: openstackSubsystem, + Name: openstackOperationErrorKey, + Help: "Cumulative number of openstack Api call errors", + StabilityLevel: metrics.ALPHA, }, []string{"request"}, ) @@ -54,7 +57,7 @@ var registerOnce sync.Once func registerMetrics() { registerOnce.Do(func() { - prometheus.MustRegister(openstackOperationsLatency) - prometheus.MustRegister(openstackAPIRequestErrors) + legacyregistry.MustRegister(openstackOperationsLatency) + legacyregistry.MustRegister(openstackAPIRequestErrors) }) } diff --git a/pkg/controller/nodelifecycle/BUILD b/pkg/controller/nodelifecycle/BUILD index 34a02a89682..b460c14fcb2 100644 --- a/pkg/controller/nodelifecycle/BUILD +++ b/pkg/controller/nodelifecycle/BUILD @@ -41,7 +41,8 @@ go_library( "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//staging/src/k8s.io/client-go/util/workqueue:go_default_library", - "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", + "//staging/src/k8s.io/component-base/metrics:go_default_library", + "//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library", "//vendor/k8s.io/klog:go_default_library", ], ) diff --git a/pkg/controller/nodelifecycle/metrics.go b/pkg/controller/nodelifecycle/metrics.go index ae61266c8ad..9314af04291 100644 --- a/pkg/controller/nodelifecycle/metrics.go +++ b/pkg/controller/nodelifecycle/metrics.go @@ -19,7 +19,8 @@ package nodelifecycle import ( "sync" - "github.com/prometheus/client_golang/prometheus" + "k8s.io/component-base/metrics" + "k8s.io/component-base/metrics/legacyregistry" ) const ( @@ -31,35 +32,39 @@ const ( ) var ( - zoneHealth = prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Subsystem: nodeControllerSubsystem, - Name: zoneHealthStatisticKey, - Help: "Gauge measuring percentage of healthy nodes per zone.", + zoneHealth = metrics.NewGaugeVec( + &metrics.GaugeOpts{ + Subsystem: nodeControllerSubsystem, + Name: zoneHealthStatisticKey, + Help: "Gauge measuring percentage of healthy nodes per zone.", + StabilityLevel: metrics.ALPHA, }, []string{"zone"}, ) - zoneSize = prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Subsystem: nodeControllerSubsystem, - Name: zoneSizeKey, - Help: "Gauge measuring number of registered Nodes per zones.", + zoneSize = metrics.NewGaugeVec( + &metrics.GaugeOpts{ + Subsystem: nodeControllerSubsystem, + Name: zoneSizeKey, + Help: "Gauge measuring number of registered Nodes per zones.", + StabilityLevel: metrics.ALPHA, }, []string{"zone"}, ) - unhealthyNodes = prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Subsystem: nodeControllerSubsystem, - Name: zoneNoUnhealthyNodesKey, - Help: "Gauge measuring number of not Ready Nodes per zones.", + unhealthyNodes = metrics.NewGaugeVec( + &metrics.GaugeOpts{ + Subsystem: nodeControllerSubsystem, + Name: zoneNoUnhealthyNodesKey, + Help: "Gauge measuring number of not Ready Nodes per zones.", + StabilityLevel: metrics.ALPHA, }, []string{"zone"}, ) - evictionsNumber = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Subsystem: nodeControllerSubsystem, - Name: evictionsNumberKey, - Help: "Number of Node evictions that happened since current instance of NodeController started.", + evictionsNumber = metrics.NewCounterVec( + &metrics.CounterOpts{ + Subsystem: nodeControllerSubsystem, + Name: evictionsNumberKey, + Help: "Number of Node evictions that happened since current instance of NodeController started.", + StabilityLevel: metrics.ALPHA, }, []string{"zone"}, ) @@ -70,9 +75,9 @@ var registerMetrics sync.Once // Register the metrics that are to be monitored. func Register() { registerMetrics.Do(func() { - prometheus.MustRegister(zoneHealth) - prometheus.MustRegister(zoneSize) - prometheus.MustRegister(unhealthyNodes) - prometheus.MustRegister(evictionsNumber) + legacyregistry.MustRegister(zoneHealth) + legacyregistry.MustRegister(zoneSize) + legacyregistry.MustRegister(unhealthyNodes) + legacyregistry.MustRegister(evictionsNumber) }) } diff --git a/pkg/controller/volume/attachdetach/metrics/BUILD b/pkg/controller/volume/attachdetach/metrics/BUILD index c1efd8ca811..1b13127dcab 100644 --- a/pkg/controller/volume/attachdetach/metrics/BUILD +++ b/pkg/controller/volume/attachdetach/metrics/BUILD @@ -12,6 +12,8 @@ go_library( "//pkg/volume/util:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library", + "//staging/src/k8s.io/component-base/metrics:go_default_library", + "//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/k8s.io/klog:go_default_library", ], diff --git a/pkg/controller/volume/attachdetach/metrics/metrics.go b/pkg/controller/volume/attachdetach/metrics/metrics.go index 86f99c5e8b6..25fa1f55df8 100644 --- a/pkg/controller/volume/attachdetach/metrics/metrics.go +++ b/pkg/controller/volume/attachdetach/metrics/metrics.go @@ -20,8 +20,11 @@ import ( "sync" "github.com/prometheus/client_golang/prometheus" + "k8s.io/apimachinery/pkg/labels" corelisters "k8s.io/client-go/listers/core/v1" + "k8s.io/component-base/metrics" + "k8s.io/component-base/metrics/legacyregistry" "k8s.io/klog" "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache" "k8s.io/kubernetes/pkg/controller/volume/attachdetach/util" @@ -42,10 +45,12 @@ var ( "Number of volumes in A/D Controller", []string{"plugin_name", "state"}, nil) - forcedDetachMetricCounter = prometheus.NewCounter( - prometheus.CounterOpts{ - Name: "attachdetach_controller_forced_detaches", - Help: "Number of times the A/D Controller performed a forced detach"}) + forcedDetachMetricCounter = metrics.NewCounter( + &metrics.CounterOpts{ + Name: "attachdetach_controller_forced_detaches", + Help: "Number of times the A/D Controller performed a forced detach", + StabilityLevel: metrics.ALPHA, + }) ) var registerMetrics sync.Once @@ -57,13 +62,13 @@ func Register(pvcLister corelisters.PersistentVolumeClaimLister, dsw cache.DesiredStateOfWorld, pluginMgr *volume.VolumePluginMgr) { registerMetrics.Do(func() { - prometheus.MustRegister(newAttachDetachStateCollector(pvcLister, + legacyregistry.RawMustRegister(newAttachDetachStateCollector(pvcLister, podLister, pvLister, asw, dsw, pluginMgr)) - prometheus.MustRegister(forcedDetachMetricCounter) + legacyregistry.MustRegister(forcedDetachMetricCounter) }) } diff --git a/pkg/controller/volume/persistentvolume/metrics/BUILD b/pkg/controller/volume/persistentvolume/metrics/BUILD index 54c222ec798..e4461663d19 100644 --- a/pkg/controller/volume/persistentvolume/metrics/BUILD +++ b/pkg/controller/volume/persistentvolume/metrics/BUILD @@ -8,6 +8,8 @@ go_library( deps = [ "//pkg/volume/util:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/component-base/metrics:go_default_library", + "//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/k8s.io/klog:go_default_library", ], diff --git a/pkg/controller/volume/persistentvolume/metrics/metrics.go b/pkg/controller/volume/persistentvolume/metrics/metrics.go index bb66fe22422..629745ddf57 100644 --- a/pkg/controller/volume/persistentvolume/metrics/metrics.go +++ b/pkg/controller/volume/persistentvolume/metrics/metrics.go @@ -21,7 +21,10 @@ import ( "time" "github.com/prometheus/client_golang/prometheus" + v1 "k8s.io/api/core/v1" + "k8s.io/component-base/metrics" + "k8s.io/component-base/metrics/legacyregistry" "k8s.io/klog" metricutil "k8s.io/kubernetes/pkg/volume/util" ) @@ -56,8 +59,8 @@ type PVCLister interface { // Register all metrics for pv controller. func Register(pvLister PVLister, pvcLister PVCLister) { registerMetrics.Do(func() { - prometheus.MustRegister(newPVAndPVCCountCollector(pvLister, pvcLister)) - prometheus.MustRegister(volumeOperationErrorsMetric) + legacyregistry.RawMustRegister(newPVAndPVCCountCollector(pvLister, pvcLister)) + legacyregistry.MustRegister(volumeOperationErrorsMetric) }) } @@ -92,10 +95,11 @@ var ( "Gauge measuring number of persistent volume claim currently unbound", []string{namespaceLabel}, nil) - volumeOperationErrorsMetric = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "volume_operation_total_errors", - Help: "Total volume operation erros", + volumeOperationErrorsMetric = metrics.NewCounterVec( + &metrics.CounterOpts{ + Name: "volume_operation_total_errors", + Help: "Total volume operation erros", + StabilityLevel: metrics.ALPHA, }, []string{"plugin_name", "operation_name"}) ) diff --git a/pkg/util/metrics/BUILD b/pkg/util/metrics/BUILD index a15d30ec247..5416001e924 100644 --- a/pkg/util/metrics/BUILD +++ b/pkg/util/metrics/BUILD @@ -12,7 +12,8 @@ go_library( importpath = "k8s.io/kubernetes/pkg/util/metrics", deps = [ "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", - "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", + "//staging/src/k8s.io/component-base/metrics:go_default_library", + "//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library", ], ) diff --git a/pkg/util/metrics/util.go b/pkg/util/metrics/util.go index f1bb7773efb..74d762fafff 100644 --- a/pkg/util/metrics/util.go +++ b/pkg/util/metrics/util.go @@ -21,8 +21,8 @@ import ( "sync" "k8s.io/client-go/util/flowcontrol" - - "github.com/prometheus/client_golang/prometheus" + "k8s.io/component-base/metrics" + "k8s.io/component-base/metrics/legacyregistry" ) var ( @@ -31,7 +31,7 @@ var ( ) type rateLimiterMetric struct { - metric prometheus.Gauge + metric metrics.GaugeMetric stopCh chan struct{} } @@ -43,12 +43,13 @@ func registerRateLimiterMetric(ownerName string) error { // only register once in Prometheus. We happen to see an ownerName reused in parallel integration tests. return nil } - metric := prometheus.NewGauge(prometheus.GaugeOpts{ - Name: "rate_limiter_use", - Subsystem: ownerName, - Help: fmt.Sprintf("A metric measuring the saturation of the rate limiter for %v", ownerName), + metric := metrics.NewGauge(&metrics.GaugeOpts{ + Name: "rate_limiter_use", + Subsystem: ownerName, + Help: fmt.Sprintf("A metric measuring the saturation of the rate limiter for %v", ownerName), + StabilityLevel: metrics.ALPHA, }) - if err := prometheus.Register(metric); err != nil { + if err := legacyregistry.Register(metric); err != nil { return fmt.Errorf("error registering rate limiter usage metric: %v", err) } stopCh := make(chan struct{}) diff --git a/staging/src/k8s.io/component-base/metrics/version.go b/staging/src/k8s.io/component-base/metrics/version.go index 21d1f152f5a..63cc606e4c1 100644 --- a/staging/src/k8s.io/component-base/metrics/version.go +++ b/staging/src/k8s.io/component-base/metrics/version.go @@ -32,6 +32,6 @@ var ( // RegisterBuildInfo registers the build and version info in a metadata metric in prometheus func RegisterBuildInfo(r KubeRegistry) { info := version.Get() - buildInfo.WithLabelValues(info.Major, info.Minor, info.GitVersion, info.GitCommit, info.GitTreeState, info.BuildDate, info.GoVersion, info.Compiler, info.Platform).Set(1) r.MustRegister(buildInfo) + buildInfo.WithLabelValues(info.Major, info.Minor, info.GitVersion, info.GitCommit, info.GitTreeState, info.BuildDate, info.GoVersion, info.Compiler, info.Platform).Set(1) } diff --git a/staging/src/k8s.io/legacy-cloud-providers/aws/BUILD b/staging/src/k8s.io/legacy-cloud-providers/aws/BUILD index 0a6eae57a71..1d7542aaf41 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/aws/BUILD +++ b/staging/src/k8s.io/legacy-cloud-providers/aws/BUILD @@ -48,6 +48,8 @@ go_library( "//staging/src/k8s.io/cloud-provider/volume:go_default_library", "//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library", "//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library", + "//staging/src/k8s.io/component-base/metrics:go_default_library", + "//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library", "//staging/src/k8s.io/csi-translation-lib/plugins:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws/awserr:go_default_library", diff --git a/staging/src/k8s.io/legacy-cloud-providers/aws/aws_metrics.go b/staging/src/k8s.io/legacy-cloud-providers/aws/aws_metrics.go index 16d97e1e636..90153ec35ce 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/aws/aws_metrics.go +++ b/staging/src/k8s.io/legacy-cloud-providers/aws/aws_metrics.go @@ -22,27 +22,33 @@ import ( "sync" "github.com/prometheus/client_golang/prometheus" + + "k8s.io/component-base/metrics" + "k8s.io/component-base/metrics/legacyregistry" ) var ( - awsAPIMetric = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Name: "cloudprovider_aws_api_request_duration_seconds", - Help: "Latency of AWS API calls", + awsAPIMetric = metrics.NewHistogramVec( + &metrics.HistogramOpts{ + Name: "cloudprovider_aws_api_request_duration_seconds", + Help: "Latency of AWS API calls", + StabilityLevel: metrics.ALPHA, }, []string{"request"}) - awsAPIErrorMetric = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "cloudprovider_aws_api_request_errors", - Help: "AWS API errors", + awsAPIErrorMetric = metrics.NewCounterVec( + &metrics.CounterOpts{ + Name: "cloudprovider_aws_api_request_errors", + Help: "AWS API errors", + StabilityLevel: metrics.ALPHA, }, []string{"request"}) - awsAPIThrottlesMetric = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "cloudprovider_aws_api_throttled_requests_total", - Help: "AWS API throttled requests", + awsAPIThrottlesMetric = metrics.NewCounterVec( + &metrics.CounterOpts{ + Name: "cloudprovider_aws_api_throttled_requests_total", + Help: "AWS API throttled requests", + StabilityLevel: metrics.ALPHA, }, []string{"operation_name"}) ) @@ -63,8 +69,8 @@ var registerOnce sync.Once func registerMetrics() { registerOnce.Do(func() { - prometheus.MustRegister(awsAPIMetric) - prometheus.MustRegister(awsAPIErrorMetric) - prometheus.MustRegister(awsAPIThrottlesMetric) + legacyregistry.MustRegister(awsAPIMetric) + legacyregistry.MustRegister(awsAPIErrorMetric) + legacyregistry.MustRegister(awsAPIThrottlesMetric) }) } diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/BUILD b/staging/src/k8s.io/legacy-cloud-providers/azure/BUILD index b6a2178520a..d410cf087c2 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/BUILD +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/BUILD @@ -63,6 +63,8 @@ go_library( "//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library", "//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library", "//staging/src/k8s.io/component-base/featuregate:go_default_library", + "//staging/src/k8s.io/component-base/metrics:go_default_library", + "//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library", "//staging/src/k8s.io/legacy-cloud-providers/azure/auth:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute:go_default_library", "//vendor/github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-06-01/network:go_default_library", @@ -72,7 +74,6 @@ go_library( "//vendor/github.com/Azure/go-autorest/autorest/adal:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library", "//vendor/github.com/Azure/go-autorest/autorest/to:go_default_library", - "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/github.com/rubiojr/go-vhd/vhd:go_default_library", "//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/utils/keymutex:go_default_library", diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/azure_metrics.go b/staging/src/k8s.io/legacy-cloud-providers/azure/azure_metrics.go index 3a4ce99ff71..3ba202756d5 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/azure_metrics.go +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/azure_metrics.go @@ -22,12 +22,13 @@ import ( "strings" "time" - "github.com/prometheus/client_golang/prometheus" + "k8s.io/component-base/metrics" + "k8s.io/component-base/metrics/legacyregistry" ) type apiCallMetrics struct { - latency *prometheus.HistogramVec - errors *prometheus.CounterVec + latency *metrics.HistogramVec + errors *metrics.CounterVec } var ( @@ -65,24 +66,26 @@ func (mc *metricContext) Observe(err error) error { func registerAPIMetrics(attributes ...string) *apiCallMetrics { metrics := &apiCallMetrics{ - latency: prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Name: "cloudprovider_azure_api_request_duration_seconds", - Help: "Latency of an Azure API call", + latency: metrics.NewHistogramVec( + &metrics.HistogramOpts{ + Name: "cloudprovider_azure_api_request_duration_seconds", + Help: "Latency of an Azure API call", + StabilityLevel: metrics.ALPHA, }, attributes, ), - errors: prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "cloudprovider_azure_api_request_errors", - Help: "Number of errors for an Azure API call", + errors: metrics.NewCounterVec( + &metrics.CounterOpts{ + Name: "cloudprovider_azure_api_request_errors", + Help: "Number of errors for an Azure API call", + StabilityLevel: metrics.ALPHA, }, attributes, ), } - prometheus.MustRegister(metrics.latency) - prometheus.MustRegister(metrics.errors) + legacyregistry.MustRegister(metrics.latency) + legacyregistry.MustRegister(metrics.errors) return metrics } diff --git a/staging/src/k8s.io/legacy-cloud-providers/gce/BUILD b/staging/src/k8s.io/legacy-cloud-providers/gce/BUILD index 266696e8f98..cb68d40eaa3 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/gce/BUILD +++ b/staging/src/k8s.io/legacy-cloud-providers/gce/BUILD @@ -73,7 +73,6 @@ go_library( "//vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/filter:go_default_library", "//vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta:go_default_library", "//vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/mock:go_default_library", - "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/golang.org/x/oauth2:go_default_library", "//vendor/golang.org/x/oauth2/google:go_default_library", "//vendor/google.golang.org/api/compute/v0.alpha:go_default_library", diff --git a/staging/src/k8s.io/legacy-cloud-providers/gce/metrics.go b/staging/src/k8s.io/legacy-cloud-providers/gce/metrics.go index ef56b869242..314195a3e2f 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/gce/metrics.go +++ b/staging/src/k8s.io/legacy-cloud-providers/gce/metrics.go @@ -21,7 +21,8 @@ package gce import ( "time" - "github.com/prometheus/client_golang/prometheus" + "k8s.io/component-base/metrics" + "k8s.io/component-base/metrics/legacyregistry" ) const ( @@ -32,8 +33,8 @@ const ( ) type apiCallMetrics struct { - latency *prometheus.HistogramVec - errors *prometheus.CounterVec + latency *metrics.HistogramVec + errors *metrics.CounterVec } var ( @@ -84,24 +85,26 @@ func newGenericMetricContext(prefix, request, region, zone, version string) *met // registerApiMetrics adds metrics definitions for a category of API calls. func registerAPIMetrics(attributes ...string) *apiCallMetrics { metrics := &apiCallMetrics{ - latency: prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Name: "cloudprovider_gce_api_request_duration_seconds", - Help: "Latency of a GCE API call", + latency: metrics.NewHistogramVec( + &metrics.HistogramOpts{ + Name: "cloudprovider_gce_api_request_duration_seconds", + Help: "Latency of a GCE API call", + StabilityLevel: metrics.ALPHA, }, attributes, ), - errors: prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "cloudprovider_gce_api_request_errors", - Help: "Number of errors for an API call", + errors: metrics.NewCounterVec( + &metrics.CounterOpts{ + Name: "cloudprovider_gce_api_request_errors", + Help: "Number of errors for an API call", + StabilityLevel: metrics.ALPHA, }, attributes, ), } - prometheus.MustRegister(metrics.latency) - prometheus.MustRegister(metrics.errors) + legacyregistry.MustRegister(metrics.latency) + legacyregistry.MustRegister(metrics.errors) return metrics } diff --git a/staging/src/k8s.io/legacy-cloud-providers/vsphere/vclib/BUILD b/staging/src/k8s.io/legacy-cloud-providers/vsphere/vclib/BUILD index b8f2bf37af0..794192566d5 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/vsphere/vclib/BUILD +++ b/staging/src/k8s.io/legacy-cloud-providers/vsphere/vclib/BUILD @@ -27,6 +27,8 @@ go_library( deps = [ "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/client-go/pkg/version:go_default_library", + "//staging/src/k8s.io/component-base/metrics:go_default_library", + "//staging/src/k8s.io/component-base/metrics/legacyregistry:go_default_library", "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", "//vendor/github.com/vmware/govmomi/find:go_default_library", "//vendor/github.com/vmware/govmomi/object:go_default_library", diff --git a/staging/src/k8s.io/legacy-cloud-providers/vsphere/vclib/vsphere_metrics.go b/staging/src/k8s.io/legacy-cloud-providers/vsphere/vclib/vsphere_metrics.go index ab5b45f87f9..5baafc4ff0e 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/vsphere/vclib/vsphere_metrics.go +++ b/staging/src/k8s.io/legacy-cloud-providers/vsphere/vclib/vsphere_metrics.go @@ -20,6 +20,9 @@ import ( "time" "github.com/prometheus/client_golang/prometheus" + + "k8s.io/component-base/metrics" + "k8s.io/component-base/metrics/legacyregistry" ) // Cloud Provider API constants @@ -43,45 +46,49 @@ const ( ) // vsphereAPIMetric is for recording latency of Single API Call. -var vsphereAPIMetric = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Name: "cloudprovider_vsphere_api_request_duration_seconds", - Help: "Latency of vsphere api call", +var vsphereAPIMetric = metrics.NewHistogramVec( + &metrics.HistogramOpts{ + Name: "cloudprovider_vsphere_api_request_duration_seconds", + Help: "Latency of vsphere api call", + StabilityLevel: metrics.ALPHA, }, []string{"request"}, ) -var vsphereAPIErrorMetric = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "cloudprovider_vsphere_api_request_errors", - Help: "vsphere Api errors", +var vsphereAPIErrorMetric = metrics.NewCounterVec( + &metrics.CounterOpts{ + Name: "cloudprovider_vsphere_api_request_errors", + Help: "vsphere Api errors", + StabilityLevel: metrics.ALPHA, }, []string{"request"}, ) // vsphereOperationMetric is for recording latency of vSphere Operation which invokes multiple APIs to get the task done. -var vsphereOperationMetric = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Name: "cloudprovider_vsphere_operation_duration_seconds", - Help: "Latency of vsphere operation call", +var vsphereOperationMetric = metrics.NewHistogramVec( + &metrics.HistogramOpts{ + Name: "cloudprovider_vsphere_operation_duration_seconds", + Help: "Latency of vsphere operation call", + StabilityLevel: metrics.ALPHA, }, []string{"operation"}, ) -var vsphereOperationErrorMetric = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "cloudprovider_vsphere_operation_errors", - Help: "vsphere operation errors", +var vsphereOperationErrorMetric = metrics.NewCounterVec( + &metrics.CounterOpts{ + Name: "cloudprovider_vsphere_operation_errors", + Help: "vsphere operation errors", + StabilityLevel: metrics.ALPHA, }, []string{"operation"}, ) // RegisterMetrics registers all the API and Operation metrics func RegisterMetrics() { - prometheus.MustRegister(vsphereAPIMetric) - prometheus.MustRegister(vsphereAPIErrorMetric) - prometheus.MustRegister(vsphereOperationMetric) - prometheus.MustRegister(vsphereOperationErrorMetric) + legacyregistry.MustRegister(vsphereAPIMetric) + legacyregistry.MustRegister(vsphereAPIErrorMetric) + legacyregistry.MustRegister(vsphereOperationMetric) + legacyregistry.MustRegister(vsphereOperationErrorMetric) } // RecordvSphereMetric records the vSphere API and Operation metrics