|
|
|
|
@ -89,6 +89,10 @@ func main() { |
|
|
|
|
debugAllCmd := debugCmd.Command("all", "Fetch all debug information.") |
|
|
|
|
debugAllServer := debugAllCmd.Arg("server", "Prometheus server to get all debug information from.").Required().String() |
|
|
|
|
|
|
|
|
|
queryLabelsCmd := queryCmd.Command("labels", "Run labels query.") |
|
|
|
|
queryLabelsServer := queryLabelsCmd.Arg("server", "Prometheus server to query.").Required().URL() |
|
|
|
|
queryLabelsName := queryLabelsCmd.Arg("name", "Label name to provide label values for.").Required().String() |
|
|
|
|
|
|
|
|
|
switch kingpin.MustParse(app.Parse(os.Args[1:])) { |
|
|
|
|
case checkConfigCmd.FullCommand(): |
|
|
|
|
os.Exit(CheckConfig(*configFiles...)) |
|
|
|
|
@ -119,6 +123,9 @@ func main() { |
|
|
|
|
|
|
|
|
|
case debugAllCmd.FullCommand(): |
|
|
|
|
os.Exit(debugAll(*debugAllServer)) |
|
|
|
|
|
|
|
|
|
case queryLabelsCmd.FullCommand(): |
|
|
|
|
os.Exit(QueryLabels(*queryLabelsServer, *queryLabelsName)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
@ -519,6 +526,36 @@ func QuerySeries(url *url.URL, matchers []string, start string, end string) int |
|
|
|
|
return 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// QueryLabels queries for label values against a Prometheus server.
|
|
|
|
|
func QueryLabels(url *url.URL, name string) int { |
|
|
|
|
config := api.Config{ |
|
|
|
|
Address: url.String(), |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Create new client.
|
|
|
|
|
c, err := api.NewClient(config) |
|
|
|
|
if err != nil { |
|
|
|
|
fmt.Fprintln(os.Stderr, "error creating API client:", err) |
|
|
|
|
return 1 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Run query against client.
|
|
|
|
|
api := v1.NewAPI(c) |
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute) |
|
|
|
|
val, err := api.LabelValues(ctx, name) |
|
|
|
|
cancel() |
|
|
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
fmt.Fprintln(os.Stderr, "query error:", err) |
|
|
|
|
return 1 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, v := range val { |
|
|
|
|
fmt.Println(v) |
|
|
|
|
} |
|
|
|
|
return 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func parseTime(s string) (time.Time, error) { |
|
|
|
|
if t, err := strconv.ParseFloat(s, 64); err == nil { |
|
|
|
|
s, ns := math.Modf(t) |
|
|
|
|
|