Forbid invalid relabel configurations

This fix adds check if target_label value is set in case if action is replace or
hashmod
Issue [#1900]
pull/1929/head
Alexey Miroshkin 8 years ago
parent c7bd563b26
commit e29d9394e5

@ -963,6 +963,9 @@ func (c *RelabelConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
if c.Modulus == 0 && c.Action == RelabelHashMod { if c.Modulus == 0 && c.Action == RelabelHashMod {
return fmt.Errorf("relabel configuration for hashmod requires non-zero modulus") 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 return nil
} }

@ -397,6 +397,12 @@ var expectedErrors = []struct {
}, { }, {
filename: "url_in_targetgroup.bad.yml", filename: "url_in_targetgroup.bad.yml",
errMsg: "\"http://bad\" is not a valid hostname", 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",
}, },
} }

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

@ -0,0 +1,4 @@
scrape_configs:
- job_name: prometheus
relabel_configs:
- regex: abcdef
Loading…
Cancel
Save