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 ( import (
"bytes" "bytes"
"context" "context"
"fmt"
"io/ioutil" "io/ioutil"
"strings" "strings"
"time" "time"
@ -227,7 +228,7 @@ func ValidateGroups(grps ...rulefmt.RuleGroup) (errs []error) {
set[g.Name] = struct{}{} set[g.Name] = struct{}{}
for _, r := range g.Rules { for _, r := range g.Rules {
if err := validateRuleNode(&r); err != nil { if err := validateRuleNode(&r, g.Name); err != nil {
errs = append(errs, err) errs = append(errs, err)
} }
} }
@ -236,7 +237,7 @@ func ValidateGroups(grps ...rulefmt.RuleGroup) (errs []error) {
return errs return errs
} }
func validateRuleNode(r *rulefmt.RuleNode) error { func validateRuleNode(r *rulefmt.RuleNode, groupName string) error {
if r.Record.Value != "" && r.Alert.Value != "" { if r.Record.Value != "" && r.Alert.Value != "" {
return errors.Errorf("only one of 'record' and 'alert' must be set") 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 == "" { if r.Expr.Value == "" {
return errors.Errorf("field 'expr' must be set in rule") return errors.Errorf("field 'expr' must be set in rule")
} else if _, err := logql.ParseExpr(r.Expr.Value); err != nil { } 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 != "" { if r.Record.Value != "" {

Loading…
Cancel
Save