github.com/telepresenceio/telepresence/v2@v2.20.0-pro.6.0.20240517030216-236ea954e789/pkg/client/cli/cmd/gather_traces.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 6 "github.com/spf13/cobra" 7 8 "github.com/telepresenceio/telepresence/rpc/v2/connector" 9 "github.com/telepresenceio/telepresence/v2/pkg/client/cli/ann" 10 "github.com/telepresenceio/telepresence/v2/pkg/client/cli/connect" 11 "github.com/telepresenceio/telepresence/v2/pkg/client/cli/daemon" 12 "github.com/telepresenceio/telepresence/v2/pkg/errcat" 13 ) 14 15 func gatherTraces() *cobra.Command { 16 tr := connector.TracesRequest{} 17 cmd := &cobra.Command{ 18 Use: "gather-traces", 19 Args: cobra.NoArgs, 20 21 Short: "Gather Traces", 22 RunE: func(cmd *cobra.Command, _ []string) error { 23 return runGatherTraces(cmd, &tr) 24 }, 25 Annotations: map[string]string{ 26 ann.UserDaemon: ann.Required, 27 }, 28 SilenceUsage: true, 29 SilenceErrors: true, 30 } 31 cmd.Flags().Int32VarP(&tr.RemotePort, "port", "p", 15766, 32 "The remote port where traffic manager and agent are exposing traces."+ 33 "Corresponds to tracing.grpcPort in the helm chart values") 34 cmd.Flags().StringVarP(&tr.TracingFile, "output-file", "o", "./traces.gz", "The gzip to be created with binary trace data") 35 36 return cmd 37 } 38 39 func runGatherTraces(cmd *cobra.Command, request *connector.TracesRequest) error { 40 if err := connect.InitCommand(cmd); err != nil { 41 return err 42 } 43 ctx := cmd.Context() 44 r, err := daemon.GetUserClient(ctx).GatherTraces(ctx, request) 45 if err != nil { 46 return err 47 } 48 if err = errcat.FromResult(r); err != nil { 49 return err 50 } 51 fmt.Fprintf(cmd.OutOrStdout(), "Traces saved as %s\n", request.TracingFile) 52 return nil 53 }