Introduce metrics library
This commit is contained in:
@@ -36,6 +36,7 @@ import (
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
"github.com/kubernetes-csi/csi-lib-utils/connection"
|
||||
"github.com/kubernetes-csi/csi-lib-utils/leaderelection"
|
||||
"github.com/kubernetes-csi/csi-lib-utils/metrics"
|
||||
csirpc "github.com/kubernetes-csi/csi-lib-utils/rpc"
|
||||
controller "github.com/kubernetes-csi/external-snapshotter/pkg/sidecar-controller"
|
||||
"github.com/kubernetes-csi/external-snapshotter/pkg/snapshotter"
|
||||
@@ -66,6 +67,9 @@ var (
|
||||
|
||||
leaderElection = flag.Bool("leader-election", false, "Enables leader election.")
|
||||
leaderElectionNamespace = flag.String("leader-election-namespace", "", "The namespace where the leader election resource exists. Defaults to the pod namespace if not set.")
|
||||
|
||||
metricsAddress = flag.String("metrics-address", "", "The TCP network address address where the prometheus metrics endpoint will listen (example: `:8080`). The default is empty string, which means metrics endpoint is disabled.")
|
||||
metricsPath = flag.String("metrics-path", "/metrics", "The HTTP path where prometheus metrics will be exposed. Default is `/metrics`.")
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -110,7 +114,11 @@ func main() {
|
||||
snapshotscheme.AddToScheme(scheme.Scheme)
|
||||
|
||||
// Connect to CSI.
|
||||
csiConn, err := connection.Connect(*csiAddress, connection.OnConnectionLoss(connection.ExitOnConnectionLoss()))
|
||||
metricsManager := metrics.NewCSIMetricsManager("" /* driverName */)
|
||||
csiConn, err := connection.Connect(
|
||||
*csiAddress,
|
||||
metricsManager,
|
||||
connection.OnConnectionLoss(connection.ExitOnConnectionLoss()))
|
||||
if err != nil {
|
||||
klog.Errorf("error connecting to CSI driver: %v", err)
|
||||
os.Exit(1)
|
||||
@@ -128,6 +136,8 @@ func main() {
|
||||
}
|
||||
|
||||
klog.V(2).Infof("CSI driver name: %q", driverName)
|
||||
metricsManager.SetDriverName(driverName)
|
||||
metricsManager.StartMetricsEndpoint(*metricsAddress, *metricsPath)
|
||||
|
||||
// Check it's ready
|
||||
if err = csirpc.ProbeForever(csiConn, *csiTimeout); err != nil {
|
||||
|
@@ -24,6 +24,7 @@ import (
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/kubernetes-csi/csi-lib-utils/connection"
|
||||
"github.com/kubernetes-csi/csi-lib-utils/metrics"
|
||||
"github.com/kubernetes-csi/csi-test/driver"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
@@ -144,6 +145,7 @@ func createMockServer(t *testing.T) (*gomock.Controller, *driver.MockCSIDriver,
|
||||
mockController := gomock.NewController(t)
|
||||
identityServer := driver.NewMockIdentityServer(mockController)
|
||||
controllerServer := driver.NewMockControllerServer(mockController)
|
||||
metricsManager := metrics.NewCSIMetricsManager("" /* driverName */)
|
||||
drv := driver.NewMockCSIDriver(&driver.MockCSIDriverServers{
|
||||
Identity: identityServer,
|
||||
Controller: controllerServer,
|
||||
@@ -152,7 +154,7 @@ func createMockServer(t *testing.T) (*gomock.Controller, *driver.MockCSIDriver,
|
||||
|
||||
// Create a client connection to it
|
||||
addr := drv.Address()
|
||||
csiConn, err := connection.Connect(addr)
|
||||
csiConn, err := connection.Connect(addr, metricsManager)
|
||||
if err != nil {
|
||||
return nil, nil, nil, nil, nil, err
|
||||
}
|
||||
|
Reference in New Issue
Block a user