diff --git a/cmd/cephcsi.go b/cmd/cephcsi.go index dac23d21e..88276a99f 100644 --- a/cmd/cephcsi.go +++ b/cmd/cephcsi.go @@ -106,8 +106,8 @@ func init() { "", "Comma separated string of mount options accepted by ceph-fuse mounter") - // liveness/grpc metrics related flags - flag.IntVar(&conf.MetricsPort, "metricsport", 8080, "TCP port for liveness/grpc metrics requests") + // liveness/profile metrics related flags + flag.IntVar(&conf.MetricsPort, "metricsport", 8080, "TCP port for liveness/profile metrics requests") flag.StringVar( &conf.MetricsPath, "metricspath", @@ -116,14 +116,6 @@ func init() { flag.DurationVar(&conf.PollTime, "polltime", time.Second*pollTime, "time interval in seconds between each poll") flag.DurationVar(&conf.PoolTimeout, "timeout", time.Second*probeTimeout, "probe timeout in seconds") - flag.BoolVar(&conf.EnableGRPCMetrics, "enablegrpcmetrics", false, "[DEPRECATED] enable grpc metrics") - flag.StringVar( - &conf.HistogramOption, - "histogramoption", - "0.5,2,6", - "[DEPRECATED] Histogram option for grpc metrics, should be comma separated value, "+ - "ex:= 0.5,2,6 where start=0.5 factor=2, count=6") - flag.UintVar( &conf.RbdHardMaxCloneDepth, "rbdhardmaxclonedepth", @@ -210,7 +202,7 @@ func main() { setPIDLimit(&conf) - if conf.EnableGRPCMetrics || conf.Vtype == livenessType { + if conf.EnableProfiling || conf.Vtype == livenessType { // validate metrics endpoint conf.MetricsIP = os.Getenv("POD_IP") diff --git a/docs/deploy-cephfs.md b/docs/deploy-cephfs.md index 7e447d0f6..ccdf70621 100644 --- a/docs/deploy-cephfs.md +++ b/docs/deploy-cephfs.md @@ -40,11 +40,9 @@ make image-cephcsi | `--pidlimit` | _0_ | Configure the PID limit in cgroups. The container runtime can restrict the number of processes/tasks which can cause problems while provisioning (or deleting) a large number of volumes. A value of `-1` configures the limit to the maximum, `0` does not configure limits at all. | | `--metricsport` | `8080` | TCP port for liveness metrics requests | | `--metricspath` | `/metrics` | Path of prometheus endpoint where metrics will be available | -| `--enablegrpcmetrics` | `false` | [Deprecated] Enable grpc metrics collection and start prometheus server | | `--polltime` | `60s` | Time interval in between each poll | | `--timeout` | `3s` | Probe timeout in seconds | | `--clustername` | _empty_ | Cluster name to set on subvolume | -| `--histogramoption` | `0.5,2,6` | [Deprecated] Histogram option for grpc metrics, should be comma separated value (ex:= "0.5,2,6" where start=0.5 factor=2, count=6) | | `--forcecephkernelclient` | `false` | Force enabling Ceph Kernel clients for mounting on kernels < 4.17 | | `--kernelmountoptions` | _empty_ | Comma separated string of mount options accepted by cephfs kernel mounter | | `--fusemountoptions` | _empty_ | Comma separated string of mount options accepted by ceph-fuse mounter | diff --git a/docs/deploy-rbd.md b/docs/deploy-rbd.md index d542fe303..9f22c1315 100644 --- a/docs/deploy-rbd.md +++ b/docs/deploy-rbd.md @@ -37,11 +37,9 @@ make image-cephcsi | `--pidlimit` | _0_ | Configure the PID limit in cgroups. The container runtime can restrict the number of processes/tasks which can cause problems while provisioning (or deleting) a large number of volumes. A value of `-1` configures the limit to the maximum, `0` does not configure limits at all. | | `--metricsport` | `8080` | TCP port for liveness metrics requests | | `--metricspath` | `"/metrics"` | Path of prometheus endpoint where metrics will be available | -| `--enablegrpcmetrics` | `false` | [Deprecated] Enable grpc metrics collection and start prometheus server | | `--polltime` | `"60s"` | Time interval in between each poll | | `--timeout` | `"3s"` | Probe timeout in seconds | | `--clustername` | _empty_ | Cluster name to set on RBD image | -| `--histogramoption` | `0.5,2,6` | [Deprecated] Histogram option for grpc metrics, should be comma separated value (ex:= "0.5,2,6" where start=0.5 factor=2, count=6) | | `--domainlabels` | _empty_ | Kubernetes node labels to use as CSI domain labels for topology aware provisioning, should be a comma separated value (ex:= "failure-domain/region,failure-domain/zone") | | `--rbdhardmaxclonedepth` | `8` | Hard limit for maximum number of nested volume clones that are taken before a flatten occurs | | `--rbdsoftmaxclonedepth` | `4` | Soft limit for maximum number of nested volume clones that are taken before a flatten occurs | diff --git a/internal/cephfs/driver.go b/internal/cephfs/driver.go index d134fc048..2ff56750f 100644 --- a/internal/cephfs/driver.go +++ b/internal/cephfs/driver.go @@ -167,15 +167,10 @@ func (fs *Driver) Run(conf *util.Config) { // passing nil for replication server as cephFS does not support mirroring. RS: nil, } - server.Start(conf.Endpoint, conf.HistogramOption, srv, conf.EnableGRPCMetrics) - if conf.EnableGRPCMetrics { - log.WarningLogMsg("EnableGRPCMetrics is deprecated") - go util.StartMetricsServer(conf) - } + server.Start(conf.Endpoint, srv) + if conf.EnableProfiling { - if !conf.EnableGRPCMetrics { - go util.StartMetricsServer(conf) - } + go util.StartMetricsServer(conf) log.DebugLogMsg("Registering profiling handler") go util.EnableProfiling() } diff --git a/internal/csi-common/server.go b/internal/csi-common/server.go index 815044b28..a75f24571 100644 --- a/internal/csi-common/server.go +++ b/internal/csi-common/server.go @@ -19,16 +19,12 @@ package csicommon import ( "net" "os" - "strconv" - "strings" "sync" "github.com/ceph/ceph-csi/internal/util/log" "github.com/container-storage-interface/spec/lib/go/csi" "github.com/csi-addons/spec/lib/go/replication" - grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" - "github.com/prometheus/client_golang/prometheus" "google.golang.org/grpc" "k8s.io/klog/v2" ) @@ -36,7 +32,7 @@ import ( // NonBlockingGRPCServer defines Non blocking GRPC server interfaces. type NonBlockingGRPCServer interface { // Start services at the endpoint - Start(endpoint, hstOptions string, srv Servers, metrics bool) + Start(endpoint string, srv Servers) // Waits for the service to stop Wait() // Stops the service gracefully @@ -65,9 +61,9 @@ type nonBlockingGRPCServer struct { } // Start start service on endpoint. -func (s *nonBlockingGRPCServer) Start(endpoint, hstOptions string, srv Servers, metrics bool) { +func (s *nonBlockingGRPCServer) Start(endpoint string, srv Servers) { s.wg.Add(1) - go s.serve(endpoint, hstOptions, srv, metrics) + go s.serve(endpoint, srv) } // Wait blocks until the WaitGroup counter. @@ -85,7 +81,7 @@ func (s *nonBlockingGRPCServer) ForceStop() { s.server.Stop() } -func (s *nonBlockingGRPCServer) serve(endpoint, hstOptions string, srv Servers, metrics bool) { +func (s *nonBlockingGRPCServer) serve(endpoint string, srv Servers) { proto, addr, err := parseEndpoint(endpoint) if err != nil { klog.Fatal(err.Error()) @@ -103,11 +99,7 @@ func (s *nonBlockingGRPCServer) serve(endpoint, hstOptions string, srv Servers, klog.Fatalf("Failed to listen: %v", err) } - opts := []grpc.ServerOption{ - NewMiddlewareServerOption(metrics), - } - - server := grpc.NewServer(opts...) + server := grpc.NewServer() s.server = server if srv.IS != nil { @@ -124,29 +116,6 @@ func (s *nonBlockingGRPCServer) serve(endpoint, hstOptions string, srv Servers, } log.DefaultLog("Listening for connections on address: %#v", listener.Addr()) - if metrics { - ho := strings.Split(hstOptions, ",") - const expectedHo = 3 - if len(ho) != expectedHo { - klog.Fatalf("invalid histogram options provided: %v", hstOptions) - } - start, e := strconv.ParseFloat(ho[0], 32) - if e != nil { - klog.Fatalf("failed to parse histogram start value: %v", e) - } - factor, e := strconv.ParseFloat(ho[1], 32) - if err != nil { - klog.Fatalf("failed to parse histogram factor value: %v", e) - } - count, e := strconv.Atoi(ho[2]) - if err != nil { - klog.Fatalf("failed to parse histogram count value: %v", e) - } - buckets := prometheus.ExponentialBuckets(start, factor, count) - bktOptions := grpc_prometheus.WithHistogramBuckets(buckets) - grpc_prometheus.EnableHandlingTimeHistogram(bktOptions) - grpc_prometheus.Register(server) - } err = server.Serve(listener) if err != nil { klog.Fatalf("Failed to server: %v", err) diff --git a/internal/nfs/driver/driver.go b/internal/nfs/driver/driver.go index cf7593d6e..ecefa55a9 100644 --- a/internal/nfs/driver/driver.go +++ b/internal/nfs/driver/driver.go @@ -77,15 +77,9 @@ func (fs *Driver) Run(conf *util.Config) { srv.CS = controller.NewControllerServer(cd) } - server.Start(conf.Endpoint, conf.HistogramOption, srv, conf.EnableGRPCMetrics) - if conf.EnableGRPCMetrics { - log.WarningLogMsg("EnableGRPCMetrics is deprecated") - go util.StartMetricsServer(conf) - } + server.Start(conf.Endpoint, srv) if conf.EnableProfiling { - if !conf.EnableGRPCMetrics { - go util.StartMetricsServer(conf) - } + go util.StartMetricsServer(conf) log.DebugLogMsg("Registering profiling handler") go util.EnableProfiling() } diff --git a/internal/rbd/driver/driver.go b/internal/rbd/driver/driver.go index 950a063af..f70a76a80 100644 --- a/internal/rbd/driver/driver.go +++ b/internal/rbd/driver/driver.go @@ -177,11 +177,7 @@ func (r *Driver) Run(conf *util.Config) { CS: r.cs, NS: r.ns, } - s.Start(conf.Endpoint, conf.HistogramOption, srv, conf.EnableGRPCMetrics) - if conf.EnableGRPCMetrics { - log.WarningLogMsg("EnableGRPCMetrics is deprecated") - go util.StartMetricsServer(conf) - } + s.Start(conf.Endpoint, srv) r.startProfiling(conf) @@ -241,9 +237,7 @@ func (r *Driver) setupCSIAddonsServer(conf *util.Config) error { // starts the required profiling services. func (r *Driver) startProfiling(conf *util.Config) { if conf.EnableProfiling { - if !conf.EnableGRPCMetrics { - go util.StartMetricsServer(conf) - } + go util.StartMetricsServer(conf) log.DebugLogMsg("Registering profiling handler") go util.EnableProfiling() } diff --git a/internal/util/util.go b/internal/util/util.go index fa9aa40ea..66ba49e71 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -95,20 +95,17 @@ type Config struct { DomainLabels string // list of domain labels to read from the node // metrics related flags - MetricsPath string // path of prometheus endpoint where metrics will be available - HistogramOption string // Histogram option for grpc metrics, should be comma separated value, - // ex:= "0.5,2,6" where start=0.5 factor=2, count=6 - MetricsIP string // TCP port for liveness/ metrics requests + MetricsPath string // path of prometheus endpoint where metrics will be available + MetricsIP string // TCP port for liveness/ metrics requests // mount option related flags KernelMountOptions string // Comma separated string of mount options accepted by cephfs kernel mounter FuseMountOptions string // Comma separated string of mount options accepted by ceph-fuse mounter - PidLimit int // PID limit to configure through cgroups") - MetricsPort int // TCP port for liveness/grpc metrics requests - PollTime time.Duration // time interval in seconds between each poll - PoolTimeout time.Duration // probe timeout in seconds - EnableGRPCMetrics bool // option to enable grpc metrics + PidLimit int // PID limit to configure through cgroups") + MetricsPort int // TCP port for liveness/grpc metrics requests + PollTime time.Duration // time interval in seconds between each poll + PoolTimeout time.Duration // probe timeout in seconds EnableProfiling bool // flag to enable profiling IsControllerServer bool // if set to true start provisioner server