Forbid invalid relabel configurations

This fix adds check if target_label value is set in case if action is replace or
hashmod
Issue [#1900]
This commit is contained in:
Alexey Miroshkin 2016-08-29 16:01:45 +02:00
parent c7bd563b26
commit e29d9394e5
4 changed files with 19 additions and 0 deletions

View file

@ -963,6 +963,9 @@ func (c *RelabelConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
if c.Modulus == 0 && c.Action == RelabelHashMod {
return fmt.Errorf("relabel configuration for hashmod requires non-zero modulus")
}
if (c.Action == RelabelReplace || c.Action == RelabelHashMod) && c.TargetLabel == "" {
return fmt.Errorf("relabel configuration for %s action requires 'target_label' value", c.Action)
}
return nil
}

View file

@ -397,6 +397,12 @@ var expectedErrors = []struct {
}, {
filename: "url_in_targetgroup.bad.yml",
errMsg: "\"http://bad\" is not a valid hostname",
}, {
filename: "target_label_missing.bad.yml",
errMsg: "relabel configuration for replace action requires 'target_label' value",
}, {
filename: "target_label_hashmod_missing.bad.yml",
errMsg: "relabel configuration for hashmod action requires 'target_label' value",
},
}

View file

@ -0,0 +1,6 @@
scrape_configs:
- job_name: prometheus
relabel_configs:
- source_labels: [__address__]
modulus: 8
action: hashmod

View file

@ -0,0 +1,4 @@
scrape_configs:
- job_name: prometheus
relabel_configs:
- regex: abcdef