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  }