migrate controller-manager metrics to stability framework

This commit is contained in:
Han Kang 2019-08-22 17:40:36 -07:00
parent bdfc8f62b4
commit 59db3ac27e
29 changed files with 184 additions and 140 deletions

View File

@ -21,9 +21,8 @@ go_library(
deps = [ deps = [
"//cmd/cloud-controller-manager/app:go_default_library", "//cmd/cloud-controller-manager/app:go_default_library",
"//pkg/cloudprovider/providers: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/logs:go_default_library",
"//staging/src/k8s.io/component-base/metrics/prometheus/clientgo:go_default_library",
], ],
) )

View File

@ -18,7 +18,6 @@ go_library(
"//pkg/features:go_default_library", "//pkg/features:go_default_library",
"//pkg/util/configz:go_default_library", "//pkg/util/configz:go_default_library",
"//pkg/util/flag:go_default_library", "//pkg/util/flag:go_default_library",
"//pkg/version:go_default_library",
"//pkg/version/verflag: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/sets:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/uuid: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/cloud-provider:go_default_library",
"//staging/src/k8s.io/component-base/cli/flag: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/cli/globalflag:go_default_library",
"//staging/src/k8s.io/component-base/version:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/utils/net:go_default_library", "//vendor/k8s.io/utils/net:go_default_library",

View File

@ -37,13 +37,13 @@ import (
cloudprovider "k8s.io/cloud-provider" cloudprovider "k8s.io/cloud-provider"
cliflag "k8s.io/component-base/cli/flag" cliflag "k8s.io/component-base/cli/flag"
"k8s.io/component-base/cli/globalflag" "k8s.io/component-base/cli/globalflag"
"k8s.io/component-base/version"
"k8s.io/klog" "k8s.io/klog"
cloudcontrollerconfig "k8s.io/kubernetes/cmd/cloud-controller-manager/app/config" cloudcontrollerconfig "k8s.io/kubernetes/cmd/cloud-controller-manager/app/config"
"k8s.io/kubernetes/cmd/cloud-controller-manager/app/options" "k8s.io/kubernetes/cmd/cloud-controller-manager/app/options"
genericcontrollermanager "k8s.io/kubernetes/cmd/controller-manager/app" genericcontrollermanager "k8s.io/kubernetes/cmd/controller-manager/app"
"k8s.io/kubernetes/pkg/util/configz" "k8s.io/kubernetes/pkg/util/configz"
utilflag "k8s.io/kubernetes/pkg/util/flag" utilflag "k8s.io/kubernetes/pkg/util/flag"
"k8s.io/kubernetes/pkg/version"
"k8s.io/kubernetes/pkg/version/verflag" "k8s.io/kubernetes/pkg/version/verflag"
) )

View File

@ -29,9 +29,8 @@ import (
// NOTE: Importing all in-tree cloud-providers is not required when // NOTE: Importing all in-tree cloud-providers is not required when
// implementing an out-of-tree cloud-provider. // 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/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() { func main() {

View File

@ -22,7 +22,7 @@ go_library(
"//staging/src/k8s.io/apiserver/pkg/server/routes:go_default_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/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/component-base/config: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", "//vendor/k8s.io/klog:go_default_library",
], ],
) )

View File

@ -20,8 +20,6 @@ import (
"net/http" "net/http"
goruntime "runtime" goruntime "runtime"
"github.com/prometheus/client_golang/prometheus"
genericapifilters "k8s.io/apiserver/pkg/endpoints/filters" genericapifilters "k8s.io/apiserver/pkg/endpoints/filters"
apirequest "k8s.io/apiserver/pkg/endpoints/request" apirequest "k8s.io/apiserver/pkg/endpoints/request"
apiserver "k8s.io/apiserver/pkg/server" apiserver "k8s.io/apiserver/pkg/server"
@ -30,6 +28,7 @@ import (
"k8s.io/apiserver/pkg/server/mux" "k8s.io/apiserver/pkg/server/mux"
"k8s.io/apiserver/pkg/server/routes" "k8s.io/apiserver/pkg/server/routes"
componentbaseconfig "k8s.io/component-base/config" componentbaseconfig "k8s.io/component-base/config"
"k8s.io/component-base/metrics/legacyregistry"
"k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/util/configz" "k8s.io/kubernetes/pkg/util/configz"
) )
@ -64,7 +63,7 @@ func NewBaseHandler(c *componentbaseconfig.DebuggingConfiguration, checks ...hea
} }
} }
configz.InstallHandler(mux) configz.InstallHandler(mux)
mux.Handle("/metrics", prometheus.Handler()) mux.Handle("/metrics", legacyregistry.Handler())
return mux return mux
} }

View File

@ -24,11 +24,11 @@ go_library(
"//cmd/kube-proxy/app:go_default_library", "//cmd/kube-proxy/app:go_default_library",
"//cmd/kube-scheduler/app:go_default_library", "//cmd/kube-scheduler/app:go_default_library",
"//cmd/kubelet/app:go_default_library", "//cmd/kubelet/app:go_default_library",
"//pkg/client/metrics/prometheus:go_default_library",
"//pkg/kubectl/cmd:go_default_library", "//pkg/kubectl/cmd:go_default_library",
"//pkg/version/prometheus: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/cli/flag:go_default_library",
"//staging/src/k8s.io/component-base/logs: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/cobra:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library",
], ],

View File

@ -31,13 +31,13 @@ import (
cliflag "k8s.io/component-base/cli/flag" cliflag "k8s.io/component-base/cli/flag"
"k8s.io/component-base/logs" "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" cloudcontrollermanager "k8s.io/kubernetes/cmd/cloud-controller-manager/app"
kubeapiserver "k8s.io/kubernetes/cmd/kube-apiserver/app" kubeapiserver "k8s.io/kubernetes/cmd/kube-apiserver/app"
kubecontrollermanager "k8s.io/kubernetes/cmd/kube-controller-manager/app" kubecontrollermanager "k8s.io/kubernetes/cmd/kube-controller-manager/app"
kubeproxy "k8s.io/kubernetes/cmd/kube-proxy/app" kubeproxy "k8s.io/kubernetes/cmd/kube-proxy/app"
kubescheduler "k8s.io/kubernetes/cmd/kube-scheduler/app" kubescheduler "k8s.io/kubernetes/cmd/kube-scheduler/app"
kubelet "k8s.io/kubernetes/cmd/kubelet/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" kubectl "k8s.io/kubernetes/pkg/kubectl/cmd"
_ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration _ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration
) )

View File

@ -20,9 +20,8 @@ go_library(
importpath = "k8s.io/kubernetes/cmd/kube-controller-manager", importpath = "k8s.io/kubernetes/cmd/kube-controller-manager",
deps = [ deps = [
"//cmd/kube-controller-manager/app:go_default_library", "//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/logs:go_default_library",
"//staging/src/k8s.io/component-base/metrics/prometheus/clientgo:go_default_library",
], ],
) )

View File

@ -26,9 +26,8 @@ import (
"time" "time"
"k8s.io/component-base/logs" "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/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() { func main() {

View File

@ -38,6 +38,8 @@ go_library(
"//staging/src/k8s.io/cloud-provider/volume:go_default_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/errors:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers: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:go_default_library",
"//vendor/github.com/gophercloud/gophercloud/openstack:go_default_library", "//vendor/github.com/gophercloud/gophercloud/openstack:go_default_library",
"//vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions:go_default_library", "//vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions:go_default_library",

View File

@ -21,7 +21,8 @@ package openstack
import ( import (
"sync" "sync"
"github.com/prometheus/client_golang/prometheus" "k8s.io/component-base/metrics"
"k8s.io/component-base/metrics/legacyregistry"
) )
const ( const (
@ -31,20 +32,22 @@ const (
) )
var ( var (
openstackOperationsLatency = prometheus.NewHistogramVec( openstackOperationsLatency = metrics.NewHistogramVec(
prometheus.HistogramOpts{ &metrics.HistogramOpts{
Subsystem: openstackSubsystem, Subsystem: openstackSubsystem,
Name: openstackOperationKey, Name: openstackOperationKey,
Help: "Latency of openstack api call", Help: "Latency of openstack api call",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"request"}, []string{"request"},
) )
openstackAPIRequestErrors = prometheus.NewCounterVec( openstackAPIRequestErrors = metrics.NewCounterVec(
prometheus.CounterOpts{ &metrics.CounterOpts{
Subsystem: openstackSubsystem, Subsystem: openstackSubsystem,
Name: openstackOperationErrorKey, Name: openstackOperationErrorKey,
Help: "Cumulative number of openstack Api call errors", Help: "Cumulative number of openstack Api call errors",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"request"}, []string{"request"},
) )
@ -54,7 +57,7 @@ var registerOnce sync.Once
func registerMetrics() { func registerMetrics() {
registerOnce.Do(func() { registerOnce.Do(func() {
prometheus.MustRegister(openstackOperationsLatency) legacyregistry.MustRegister(openstackOperationsLatency)
prometheus.MustRegister(openstackAPIRequestErrors) legacyregistry.MustRegister(openstackAPIRequestErrors)
}) })
} }

View File

@ -41,7 +41,8 @@ go_library(
"//staging/src/k8s.io/client-go/tools/record:go_default_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/flowcontrol:go_default_library",
"//staging/src/k8s.io/client-go/util/workqueue: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", "//vendor/k8s.io/klog:go_default_library",
], ],
) )

View File

@ -19,7 +19,8 @@ package nodelifecycle
import ( import (
"sync" "sync"
"github.com/prometheus/client_golang/prometheus" "k8s.io/component-base/metrics"
"k8s.io/component-base/metrics/legacyregistry"
) )
const ( const (
@ -31,35 +32,39 @@ const (
) )
var ( var (
zoneHealth = prometheus.NewGaugeVec( zoneHealth = metrics.NewGaugeVec(
prometheus.GaugeOpts{ &metrics.GaugeOpts{
Subsystem: nodeControllerSubsystem, Subsystem: nodeControllerSubsystem,
Name: zoneHealthStatisticKey, Name: zoneHealthStatisticKey,
Help: "Gauge measuring percentage of healthy nodes per zone.", Help: "Gauge measuring percentage of healthy nodes per zone.",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"zone"}, []string{"zone"},
) )
zoneSize = prometheus.NewGaugeVec( zoneSize = metrics.NewGaugeVec(
prometheus.GaugeOpts{ &metrics.GaugeOpts{
Subsystem: nodeControllerSubsystem, Subsystem: nodeControllerSubsystem,
Name: zoneSizeKey, Name: zoneSizeKey,
Help: "Gauge measuring number of registered Nodes per zones.", Help: "Gauge measuring number of registered Nodes per zones.",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"zone"}, []string{"zone"},
) )
unhealthyNodes = prometheus.NewGaugeVec( unhealthyNodes = metrics.NewGaugeVec(
prometheus.GaugeOpts{ &metrics.GaugeOpts{
Subsystem: nodeControllerSubsystem, Subsystem: nodeControllerSubsystem,
Name: zoneNoUnhealthyNodesKey, Name: zoneNoUnhealthyNodesKey,
Help: "Gauge measuring number of not Ready Nodes per zones.", Help: "Gauge measuring number of not Ready Nodes per zones.",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"zone"}, []string{"zone"},
) )
evictionsNumber = prometheus.NewCounterVec( evictionsNumber = metrics.NewCounterVec(
prometheus.CounterOpts{ &metrics.CounterOpts{
Subsystem: nodeControllerSubsystem, Subsystem: nodeControllerSubsystem,
Name: evictionsNumberKey, Name: evictionsNumberKey,
Help: "Number of Node evictions that happened since current instance of NodeController started.", Help: "Number of Node evictions that happened since current instance of NodeController started.",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"zone"}, []string{"zone"},
) )
@ -70,9 +75,9 @@ var registerMetrics sync.Once
// Register the metrics that are to be monitored. // Register the metrics that are to be monitored.
func Register() { func Register() {
registerMetrics.Do(func() { registerMetrics.Do(func() {
prometheus.MustRegister(zoneHealth) legacyregistry.MustRegister(zoneHealth)
prometheus.MustRegister(zoneSize) legacyregistry.MustRegister(zoneSize)
prometheus.MustRegister(unhealthyNodes) legacyregistry.MustRegister(unhealthyNodes)
prometheus.MustRegister(evictionsNumber) legacyregistry.MustRegister(evictionsNumber)
}) })
} }

View File

@ -12,6 +12,8 @@ go_library(
"//pkg/volume/util:go_default_library", "//pkg/volume/util:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/labels: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/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/github.com/prometheus/client_golang/prometheus:go_default_library",
"//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/klog:go_default_library",
], ],

View File

@ -20,8 +20,11 @@ import (
"sync" "sync"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
corelisters "k8s.io/client-go/listers/core/v1" corelisters "k8s.io/client-go/listers/core/v1"
"k8s.io/component-base/metrics"
"k8s.io/component-base/metrics/legacyregistry"
"k8s.io/klog" "k8s.io/klog"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache" "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/util" "k8s.io/kubernetes/pkg/controller/volume/attachdetach/util"
@ -42,10 +45,12 @@ var (
"Number of volumes in A/D Controller", "Number of volumes in A/D Controller",
[]string{"plugin_name", "state"}, nil) []string{"plugin_name", "state"}, nil)
forcedDetachMetricCounter = prometheus.NewCounter( forcedDetachMetricCounter = metrics.NewCounter(
prometheus.CounterOpts{ &metrics.CounterOpts{
Name: "attachdetach_controller_forced_detaches", Name: "attachdetach_controller_forced_detaches",
Help: "Number of times the A/D Controller performed a forced detach"}) Help: "Number of times the A/D Controller performed a forced detach",
StabilityLevel: metrics.ALPHA,
})
) )
var registerMetrics sync.Once var registerMetrics sync.Once
@ -57,13 +62,13 @@ func Register(pvcLister corelisters.PersistentVolumeClaimLister,
dsw cache.DesiredStateOfWorld, dsw cache.DesiredStateOfWorld,
pluginMgr *volume.VolumePluginMgr) { pluginMgr *volume.VolumePluginMgr) {
registerMetrics.Do(func() { registerMetrics.Do(func() {
prometheus.MustRegister(newAttachDetachStateCollector(pvcLister, legacyregistry.RawMustRegister(newAttachDetachStateCollector(pvcLister,
podLister, podLister,
pvLister, pvLister,
asw, asw,
dsw, dsw,
pluginMgr)) pluginMgr))
prometheus.MustRegister(forcedDetachMetricCounter) legacyregistry.MustRegister(forcedDetachMetricCounter)
}) })
} }

View File

@ -8,6 +8,8 @@ go_library(
deps = [ deps = [
"//pkg/volume/util:go_default_library", "//pkg/volume/util:go_default_library",
"//staging/src/k8s.io/api/core/v1: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/github.com/prometheus/client_golang/prometheus:go_default_library",
"//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/klog:go_default_library",
], ],

View File

@ -21,7 +21,10 @@ import (
"time" "time"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
"k8s.io/component-base/metrics"
"k8s.io/component-base/metrics/legacyregistry"
"k8s.io/klog" "k8s.io/klog"
metricutil "k8s.io/kubernetes/pkg/volume/util" metricutil "k8s.io/kubernetes/pkg/volume/util"
) )
@ -56,8 +59,8 @@ type PVCLister interface {
// Register all metrics for pv controller. // Register all metrics for pv controller.
func Register(pvLister PVLister, pvcLister PVCLister) { func Register(pvLister PVLister, pvcLister PVCLister) {
registerMetrics.Do(func() { registerMetrics.Do(func() {
prometheus.MustRegister(newPVAndPVCCountCollector(pvLister, pvcLister)) legacyregistry.RawMustRegister(newPVAndPVCCountCollector(pvLister, pvcLister))
prometheus.MustRegister(volumeOperationErrorsMetric) legacyregistry.MustRegister(volumeOperationErrorsMetric)
}) })
} }
@ -92,10 +95,11 @@ var (
"Gauge measuring number of persistent volume claim currently unbound", "Gauge measuring number of persistent volume claim currently unbound",
[]string{namespaceLabel}, nil) []string{namespaceLabel}, nil)
volumeOperationErrorsMetric = prometheus.NewCounterVec( volumeOperationErrorsMetric = metrics.NewCounterVec(
prometheus.CounterOpts{ &metrics.CounterOpts{
Name: "volume_operation_total_errors", Name: "volume_operation_total_errors",
Help: "Total volume operation erros", Help: "Total volume operation erros",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"plugin_name", "operation_name"}) []string{"plugin_name", "operation_name"})
) )

View File

@ -12,7 +12,8 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/util/metrics", importpath = "k8s.io/kubernetes/pkg/util/metrics",
deps = [ deps = [
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//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",
], ],
) )

View File

@ -21,8 +21,8 @@ import (
"sync" "sync"
"k8s.io/client-go/util/flowcontrol" "k8s.io/client-go/util/flowcontrol"
"k8s.io/component-base/metrics"
"github.com/prometheus/client_golang/prometheus" "k8s.io/component-base/metrics/legacyregistry"
) )
var ( var (
@ -31,7 +31,7 @@ var (
) )
type rateLimiterMetric struct { type rateLimiterMetric struct {
metric prometheus.Gauge metric metrics.GaugeMetric
stopCh chan struct{} 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. // only register once in Prometheus. We happen to see an ownerName reused in parallel integration tests.
return nil return nil
} }
metric := prometheus.NewGauge(prometheus.GaugeOpts{ metric := metrics.NewGauge(&metrics.GaugeOpts{
Name: "rate_limiter_use", Name: "rate_limiter_use",
Subsystem: ownerName, Subsystem: ownerName,
Help: fmt.Sprintf("A metric measuring the saturation of the rate limiter for %v", 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) return fmt.Errorf("error registering rate limiter usage metric: %v", err)
} }
stopCh := make(chan struct{}) stopCh := make(chan struct{})

View File

@ -32,6 +32,6 @@ var (
// RegisterBuildInfo registers the build and version info in a metadata metric in prometheus // RegisterBuildInfo registers the build and version info in a metadata metric in prometheus
func RegisterBuildInfo(r KubeRegistry) { func RegisterBuildInfo(r KubeRegistry) {
info := version.Get() 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) 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)
} }

View File

@ -48,6 +48,8 @@ go_library(
"//staging/src/k8s.io/cloud-provider/volume:go_default_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/errors:go_default_library",
"//staging/src/k8s.io/cloud-provider/volume/helpers: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", "//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:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws/awserr:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws/awserr:go_default_library",

View File

@ -22,27 +22,33 @@ import (
"sync" "sync"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
"k8s.io/component-base/metrics"
"k8s.io/component-base/metrics/legacyregistry"
) )
var ( var (
awsAPIMetric = prometheus.NewHistogramVec( awsAPIMetric = metrics.NewHistogramVec(
prometheus.HistogramOpts{ &metrics.HistogramOpts{
Name: "cloudprovider_aws_api_request_duration_seconds", Name: "cloudprovider_aws_api_request_duration_seconds",
Help: "Latency of AWS API calls", Help: "Latency of AWS API calls",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"request"}) []string{"request"})
awsAPIErrorMetric = prometheus.NewCounterVec( awsAPIErrorMetric = metrics.NewCounterVec(
prometheus.CounterOpts{ &metrics.CounterOpts{
Name: "cloudprovider_aws_api_request_errors", Name: "cloudprovider_aws_api_request_errors",
Help: "AWS API errors", Help: "AWS API errors",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"request"}) []string{"request"})
awsAPIThrottlesMetric = prometheus.NewCounterVec( awsAPIThrottlesMetric = metrics.NewCounterVec(
prometheus.CounterOpts{ &metrics.CounterOpts{
Name: "cloudprovider_aws_api_throttled_requests_total", Name: "cloudprovider_aws_api_throttled_requests_total",
Help: "AWS API throttled requests", Help: "AWS API throttled requests",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"operation_name"}) []string{"operation_name"})
) )
@ -63,8 +69,8 @@ var registerOnce sync.Once
func registerMetrics() { func registerMetrics() {
registerOnce.Do(func() { registerOnce.Do(func() {
prometheus.MustRegister(awsAPIMetric) legacyregistry.MustRegister(awsAPIMetric)
prometheus.MustRegister(awsAPIErrorMetric) legacyregistry.MustRegister(awsAPIErrorMetric)
prometheus.MustRegister(awsAPIThrottlesMetric) legacyregistry.MustRegister(awsAPIThrottlesMetric)
}) })
} }

View File

@ -63,6 +63,8 @@ go_library(
"//staging/src/k8s.io/cloud-provider/volume/errors: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/cloud-provider/volume/helpers:go_default_library",
"//staging/src/k8s.io/component-base/featuregate: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", "//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/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", "//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/adal:go_default_library",
"//vendor/github.com/Azure/go-autorest/autorest/azure: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/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/github.com/rubiojr/go-vhd/vhd:go_default_library",
"//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/utils/keymutex:go_default_library", "//vendor/k8s.io/utils/keymutex:go_default_library",

View File

@ -22,12 +22,13 @@ import (
"strings" "strings"
"time" "time"
"github.com/prometheus/client_golang/prometheus" "k8s.io/component-base/metrics"
"k8s.io/component-base/metrics/legacyregistry"
) )
type apiCallMetrics struct { type apiCallMetrics struct {
latency *prometheus.HistogramVec latency *metrics.HistogramVec
errors *prometheus.CounterVec errors *metrics.CounterVec
} }
var ( var (
@ -65,24 +66,26 @@ func (mc *metricContext) Observe(err error) error {
func registerAPIMetrics(attributes ...string) *apiCallMetrics { func registerAPIMetrics(attributes ...string) *apiCallMetrics {
metrics := &apiCallMetrics{ metrics := &apiCallMetrics{
latency: prometheus.NewHistogramVec( latency: metrics.NewHistogramVec(
prometheus.HistogramOpts{ &metrics.HistogramOpts{
Name: "cloudprovider_azure_api_request_duration_seconds", Name: "cloudprovider_azure_api_request_duration_seconds",
Help: "Latency of an Azure API call", Help: "Latency of an Azure API call",
StabilityLevel: metrics.ALPHA,
}, },
attributes, attributes,
), ),
errors: prometheus.NewCounterVec( errors: metrics.NewCounterVec(
prometheus.CounterOpts{ &metrics.CounterOpts{
Name: "cloudprovider_azure_api_request_errors", Name: "cloudprovider_azure_api_request_errors",
Help: "Number of errors for an Azure API call", Help: "Number of errors for an Azure API call",
StabilityLevel: metrics.ALPHA,
}, },
attributes, attributes,
), ),
} }
prometheus.MustRegister(metrics.latency) legacyregistry.MustRegister(metrics.latency)
prometheus.MustRegister(metrics.errors) legacyregistry.MustRegister(metrics.errors)
return metrics return metrics
} }

View File

@ -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/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/meta:go_default_library",
"//vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/mock: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:go_default_library",
"//vendor/golang.org/x/oauth2/google:go_default_library", "//vendor/golang.org/x/oauth2/google:go_default_library",
"//vendor/google.golang.org/api/compute/v0.alpha:go_default_library", "//vendor/google.golang.org/api/compute/v0.alpha:go_default_library",

View File

@ -21,7 +21,8 @@ package gce
import ( import (
"time" "time"
"github.com/prometheus/client_golang/prometheus" "k8s.io/component-base/metrics"
"k8s.io/component-base/metrics/legacyregistry"
) )
const ( const (
@ -32,8 +33,8 @@ const (
) )
type apiCallMetrics struct { type apiCallMetrics struct {
latency *prometheus.HistogramVec latency *metrics.HistogramVec
errors *prometheus.CounterVec errors *metrics.CounterVec
} }
var ( var (
@ -84,24 +85,26 @@ func newGenericMetricContext(prefix, request, region, zone, version string) *met
// registerApiMetrics adds metrics definitions for a category of API calls. // registerApiMetrics adds metrics definitions for a category of API calls.
func registerAPIMetrics(attributes ...string) *apiCallMetrics { func registerAPIMetrics(attributes ...string) *apiCallMetrics {
metrics := &apiCallMetrics{ metrics := &apiCallMetrics{
latency: prometheus.NewHistogramVec( latency: metrics.NewHistogramVec(
prometheus.HistogramOpts{ &metrics.HistogramOpts{
Name: "cloudprovider_gce_api_request_duration_seconds", Name: "cloudprovider_gce_api_request_duration_seconds",
Help: "Latency of a GCE API call", Help: "Latency of a GCE API call",
StabilityLevel: metrics.ALPHA,
}, },
attributes, attributes,
), ),
errors: prometheus.NewCounterVec( errors: metrics.NewCounterVec(
prometheus.CounterOpts{ &metrics.CounterOpts{
Name: "cloudprovider_gce_api_request_errors", Name: "cloudprovider_gce_api_request_errors",
Help: "Number of errors for an API call", Help: "Number of errors for an API call",
StabilityLevel: metrics.ALPHA,
}, },
attributes, attributes,
), ),
} }
prometheus.MustRegister(metrics.latency) legacyregistry.MustRegister(metrics.latency)
prometheus.MustRegister(metrics.errors) legacyregistry.MustRegister(metrics.errors)
return metrics return metrics
} }

View File

@ -27,6 +27,8 @@ go_library(
deps = [ deps = [
"//staging/src/k8s.io/api/core/v1:go_default_library", "//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/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/prometheus/client_golang/prometheus:go_default_library",
"//vendor/github.com/vmware/govmomi/find:go_default_library", "//vendor/github.com/vmware/govmomi/find:go_default_library",
"//vendor/github.com/vmware/govmomi/object:go_default_library", "//vendor/github.com/vmware/govmomi/object:go_default_library",

View File

@ -20,6 +20,9 @@ import (
"time" "time"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
"k8s.io/component-base/metrics"
"k8s.io/component-base/metrics/legacyregistry"
) )
// Cloud Provider API constants // Cloud Provider API constants
@ -43,45 +46,49 @@ const (
) )
// vsphereAPIMetric is for recording latency of Single API Call. // vsphereAPIMetric is for recording latency of Single API Call.
var vsphereAPIMetric = prometheus.NewHistogramVec( var vsphereAPIMetric = metrics.NewHistogramVec(
prometheus.HistogramOpts{ &metrics.HistogramOpts{
Name: "cloudprovider_vsphere_api_request_duration_seconds", Name: "cloudprovider_vsphere_api_request_duration_seconds",
Help: "Latency of vsphere api call", Help: "Latency of vsphere api call",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"request"}, []string{"request"},
) )
var vsphereAPIErrorMetric = prometheus.NewCounterVec( var vsphereAPIErrorMetric = metrics.NewCounterVec(
prometheus.CounterOpts{ &metrics.CounterOpts{
Name: "cloudprovider_vsphere_api_request_errors", Name: "cloudprovider_vsphere_api_request_errors",
Help: "vsphere Api errors", Help: "vsphere Api errors",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"request"}, []string{"request"},
) )
// vsphereOperationMetric is for recording latency of vSphere Operation which invokes multiple APIs to get the task done. // vsphereOperationMetric is for recording latency of vSphere Operation which invokes multiple APIs to get the task done.
var vsphereOperationMetric = prometheus.NewHistogramVec( var vsphereOperationMetric = metrics.NewHistogramVec(
prometheus.HistogramOpts{ &metrics.HistogramOpts{
Name: "cloudprovider_vsphere_operation_duration_seconds", Name: "cloudprovider_vsphere_operation_duration_seconds",
Help: "Latency of vsphere operation call", Help: "Latency of vsphere operation call",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"operation"}, []string{"operation"},
) )
var vsphereOperationErrorMetric = prometheus.NewCounterVec( var vsphereOperationErrorMetric = metrics.NewCounterVec(
prometheus.CounterOpts{ &metrics.CounterOpts{
Name: "cloudprovider_vsphere_operation_errors", Name: "cloudprovider_vsphere_operation_errors",
Help: "vsphere operation errors", Help: "vsphere operation errors",
StabilityLevel: metrics.ALPHA,
}, },
[]string{"operation"}, []string{"operation"},
) )
// RegisterMetrics registers all the API and Operation metrics // RegisterMetrics registers all the API and Operation metrics
func RegisterMetrics() { func RegisterMetrics() {
prometheus.MustRegister(vsphereAPIMetric) legacyregistry.MustRegister(vsphereAPIMetric)
prometheus.MustRegister(vsphereAPIErrorMetric) legacyregistry.MustRegister(vsphereAPIErrorMetric)
prometheus.MustRegister(vsphereOperationMetric) legacyregistry.MustRegister(vsphereOperationMetric)
prometheus.MustRegister(vsphereOperationErrorMetric) legacyregistry.MustRegister(vsphereOperationErrorMetric)
} }
// RecordvSphereMetric records the vSphere API and Operation metrics // RecordvSphereMetric records the vSphere API and Operation metrics