diff --git a/mapper.go b/mapper.go index 980daa3..55d6f3b 100644 --- a/mapper.go +++ b/mapper.go @@ -106,9 +106,17 @@ func (m *metricMapper) initFromYAMLString(fileContents string) error { // can use to match metrics later on. metricRe := strings.Replace(currentMapping.Match, ".", "\\.", -1) metricRe = strings.Replace(metricRe, "*", "([^.]*)", -1) - currentMapping.regex = regexp.MustCompile("^" + metricRe + "$") + if regex, err := regexp.Compile("^" + metricRe + "$"); err != nil { + return fmt.Errorf("invalid match %s. cannot compile regex in mapping: %v", currentMapping.Match, err) + } else { + currentMapping.regex = regex + } } else { - currentMapping.regex = regexp.MustCompile(currentMapping.Match) + if regex, err := regexp.Compile(currentMapping.Match); err != nil { + return fmt.Errorf("invalid regex %s in mapping: %v", currentMapping.Match, err) + } else { + currentMapping.regex = regex + } } if currentMapping.TimerType == "" { diff --git a/mapper_test.go b/mapper_test.go index 5803fb7..3605e3d 100644 --- a/mapper_test.go +++ b/mapper_test.go @@ -310,7 +310,7 @@ mappings: { config: `--- mappings: -- match: "*\.foo" +- match: "*\\.foo" match_type: regex name: "foo" labels: {}