Introduce metrics library
This commit is contained in:
@@ -85,6 +85,10 @@ Install CSI Driver:
|
||||
|
||||
* `--leader-election-namespace <namespace>`: The namespace where the leader election resource exists. Defaults to the pod namespace if not set.
|
||||
|
||||
* `--metrics-address`: The TCP network address address where the prometheus metrics endpoint will run (example: `:8080` which corresponds to port 8080 on local host). The default is empty string, which means metrics endpoint is disabled.
|
||||
|
||||
* `--metrics-path`: The HTTP path where prometheus metrics will be exposed. Default is `/metrics`.
|
||||
|
||||
#### Other recognized arguments
|
||||
* `--kubeconfig <path>`: Path to Kubernetes client configuration that the snapshot controller uses to connect to Kubernetes API server. When omitted, default token provided by Kubernetes will be used. This option is useful only when the snapshot controller does not run as a Kubernetes pod, e.g. for debugging.
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -27,13 +27,14 @@ import (
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/golang/protobuf/ptypes"
|
||||
"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"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
|
||||
"k8s.io/api/core/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
)
|
||||
@@ -47,6 +48,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,
|
||||
@@ -55,7 +57,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