diff --git a/app/vmalert/config.go b/app/vmalert/config.go index 34dd99e549..aabd6ff2d2 100644 --- a/app/vmalert/config.go +++ b/app/vmalert/config.go @@ -40,7 +40,10 @@ func Parse(pathPatterns []string, validateAnnotations bool) ([]Group, error) { rule.alerts = make(map[uint64]*notifier.Alert) if validateAnnotations { if err = notifier.ValidateAnnotations(rule.Annotations); err != nil { - return nil, fmt.Errorf("invalida annotations filepath:%s, group %s:%w", file, group.Name, err) + return nil, fmt.Errorf("invalid annotations filepath:%s, group %s:%w", file, group.Name, err) + } + if err = notifier.ValidateAnnotations(rule.Labels); err != nil { + return nil, fmt.Errorf("invalid labels filepath:%s, group %s:%w", file, group.Name, err) } } rule.group = &group diff --git a/app/vmalert/config_test.go b/app/vmalert/config_test.go index 6eaabb3b6f..057d1ab8bc 100644 --- a/app/vmalert/config_test.go +++ b/app/vmalert/config_test.go @@ -30,6 +30,9 @@ func TestParseBad(t *testing.T) { if _, err := Parse([]string{"testdata/dir/rules1-bad.rules"}, true); err == nil { t.Errorf("expected same group error") } + if _, err := Parse([]string{"testdata/dir/rules2-bad.rules"}, true); err == nil { + t.Errorf("expected template label error") + } if _, err := Parse([]string{"testdata/*.yaml"}, true); err == nil { t.Errorf("expected empty group") } diff --git a/app/vmalert/testdata/dir/rules2-bad.rules b/app/vmalert/testdata/dir/rules2-bad.rules new file mode 100644 index 0000000000..57ed213576 --- /dev/null +++ b/app/vmalert/testdata/dir/rules2-bad.rules @@ -0,0 +1,11 @@ +groups: + - name: group + rules: + - alert: UnkownLabelFunction + for: 5m + expr: vm_rows > 0 + labels: + label: bar + summary: "{{ value|query }}" + annotations: + description: "{{$labels}}" diff --git a/app/vmalert/testdata/rules0-good.rules b/app/vmalert/testdata/rules0-good.rules index 6419f3c92b..ddb55a1d81 100644 --- a/app/vmalert/testdata/rules0-good.rules +++ b/app/vmalert/testdata/rules0-good.rules @@ -6,6 +6,7 @@ groups: expr: vm_rows > 0 labels: label: bar + template: "{{ $value|humanize }}" annotations: summary: "{{ $value|humanize }}" description: "{{$labels}}"