Give more context to rule parser errors. (#4730)

Summary:
- Give record and group name for failing parsing.
pull/4751/head
Karsten Jeschkies 4 years ago committed by GitHub
parent c19a6c5bbc
commit 1e796b070f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      pkg/ruler/compat.go

@ -3,6 +3,7 @@ package ruler
import (
"bytes"
"context"
"fmt"
"io/ioutil"
"strings"
"time"
@ -227,7 +228,7 @@ func ValidateGroups(grps ...rulefmt.RuleGroup) (errs []error) {
set[g.Name] = struct{}{}
for _, r := range g.Rules {
if err := validateRuleNode(&r); err != nil {
if err := validateRuleNode(&r, g.Name); err != nil {
errs = append(errs, err)
}
}
@ -236,7 +237,7 @@ func ValidateGroups(grps ...rulefmt.RuleGroup) (errs []error) {
return errs
}
func validateRuleNode(r *rulefmt.RuleNode) error {
func validateRuleNode(r *rulefmt.RuleNode, groupName string) error {
if r.Record.Value != "" && r.Alert.Value != "" {
return errors.Errorf("only one of 'record' and 'alert' must be set")
}
@ -252,7 +253,7 @@ func validateRuleNode(r *rulefmt.RuleNode) error {
if r.Expr.Value == "" {
return errors.Errorf("field 'expr' must be set in rule")
} else if _, err := logql.ParseExpr(r.Expr.Value); err != nil {
return errors.Wrapf(err, "could not parse expression")
return errors.Wrapf(err, fmt.Sprintf("could not parse expression for record '%s' in group '%s'", r.Record.Value, groupName))
}
if r.Record.Value != "" {

Loading…
Cancel
Save