code: func QuerySeries(url *url.URL, matchers []string, start, end string, p printer) 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
  	}
  
  	// TODO: clean up timestamps
  	var (
  		minTime = time.Now().Add(-9999 * time.Hour)
  		maxTime = time.Now().Add(9999 * time.Hour)
  	)
  
  	var stime, etime time.Time
  
  	if start == "" {
  		stime = minTime
  	} else {
  		stime, err = parseTime(start)
  		if err != nil {
  			fmt.Fprintln(os.Stderr, "error parsing start time:", err)
  		}
  	}
  
  	if end == "" {
  		etime = maxTime
  	} else {
  		etime, err = parseTime(end)
  		if err != nil {
  			fmt.Fprintln(os.Stderr, "error parsing end time:", err)
  		}
  	}
  
  	// Run query against client.
  	api := v1.NewAPI(c)
  	ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
  	val, err := api.Series(ctx, matchers, stime, etime)
  	cancel()
  
  	if err != nil {
  		fmt.Fprintln(os.Stderr, "query error:", err)
  		return 1
  	}
  
  	p.printSeries(val)
  	return 0
  }
docs: // QuerySeries queries for a series against a Prometheus server.