code: func (rule *RecordingRule) Eval(ctx context.Context, ts time.Time, query QueryFunc, _ *url.URL) (promql.Vector, error) {
  	vector, err := query(ctx, rule.vector.String(), ts)
  	if err != nil {
  		rule.SetHealth(HealthBad)
  		rule.SetLastError(err)
  		return nil, err
  	}
  	// Override the metric name and labels.
  	for i := range vector {
  		sample := &vector[i]
  
  		lb := labels.NewBuilder(sample.Metric)
  
  		lb.Set(labels.MetricName, rule.name)
  
  		for _, l := range rule.labels {
  			if l.Value == "" {
  				lb.Del(l.Name)
  			} else {
  				lb.Set(l.Name, l.Value)
  			}
  		}
  
  		sample.Metric = lb.Labels()
  	}
  	rule.SetHealth(HealthGood)
  	rule.SetLastError(err)
  	return vector, nil
  }
docs: // Eval evaluates the rule and then overrides the metric names and labels accordingly.