github.com/fafucoder/cilium@v1.6.11/cilium/cmd/metrics_list.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 "text/tabwriter" 8 9 "github.com/cilium/cilium/pkg/command" 10 "github.com/spf13/cobra" 11 ) 12 13 // MetricsListCmd dumps all metrics into stdout 14 var MetricsListCmd = &cobra.Command{ 15 Use: "list", 16 Short: "List all metrics", 17 Run: func(cmd *cobra.Command, args []string) { 18 res, err := client.Metrics.GetMetrics(nil) 19 if err != nil { 20 Fatalf("Cannot get metrics list: %s", err) 21 } 22 23 if command.OutputJSON() { 24 if err := command.PrintOutput(res.Payload); err != nil { 25 os.Exit(1) 26 } 27 return 28 } 29 30 w := tabwriter.NewWriter(os.Stdout, 5, 0, 3, ' ', 0) 31 32 fmt.Fprintln(w, "Metric\tLabels\tValue") 33 for _, metric := range res.Payload { 34 label := "" 35 if len(metric.Labels) > 0 { 36 labelArray := []string{} 37 for key, value := range metric.Labels { 38 labelArray = append(labelArray, fmt.Sprintf(`%s="%s"`, key, value)) 39 } 40 label = strings.Join(labelArray, " ") 41 } 42 fmt.Fprintf(w, "%s\t%s\t%f\n", metric.Name, label, metric.Value) 43 } 44 w.Flush() 45 os.Exit(0) 46 }, 47 } 48 49 func init() { 50 metricsCmd.AddCommand(MetricsListCmd) 51 command.AddJSONOutput(MetricsListCmd) 52 }