mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-04 16:51:11 +01:00
lib/promscrape: add -promscrape.config.strictParse
flag for detecting errors in -promscrape.config
file
This commit is contained in:
parent
90b4a6dd12
commit
2814b1490f
@ -1,6 +1,7 @@
|
|||||||
package promscrape
|
package promscrape
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/url"
|
"net/url"
|
||||||
@ -15,6 +16,11 @@ import (
|
|||||||
"gopkg.in/yaml.v2"
|
"gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
strictParse = flag.Bool("promscrape.config.strictParse", false, "Whether to allow only supported fields in '-promscrape.config'. "+
|
||||||
|
"This option may be used for errors detection in '-promscrape.config' file")
|
||||||
|
)
|
||||||
|
|
||||||
// Config represents essential parts from Prometheus config defined at https://prometheus.io/docs/prometheus/latest/configuration/configuration/
|
// Config represents essential parts from Prometheus config defined at https://prometheus.io/docs/prometheus/latest/configuration/configuration/
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Global GlobalConfig `yaml:"global"`
|
Global GlobalConfig `yaml:"global"`
|
||||||
@ -101,7 +107,7 @@ func loadConfig(path string) (cfg *Config, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *Config) parse(data []byte, path string) error {
|
func (cfg *Config) parse(data []byte, path string) error {
|
||||||
if err := yaml.Unmarshal(data, cfg); err != nil {
|
if err := unmarshalMaybeStrict(data, cfg); err != nil {
|
||||||
return fmt.Errorf("cannot unmarshal data: %s", err)
|
return fmt.Errorf("cannot unmarshal data: %s", err)
|
||||||
}
|
}
|
||||||
absPath, err := filepath.Abs(path)
|
absPath, err := filepath.Abs(path)
|
||||||
@ -120,6 +126,16 @@ func (cfg *Config) parse(data []byte, path string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func unmarshalMaybeStrict(data []byte, dst interface{}) error {
|
||||||
|
var err error
|
||||||
|
if *strictParse {
|
||||||
|
err = yaml.UnmarshalStrict(data, dst)
|
||||||
|
} else {
|
||||||
|
err = yaml.Unmarshal(data, dst)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (cfg *Config) fileSDConfigsCount() int {
|
func (cfg *Config) fileSDConfigsCount() int {
|
||||||
n := 0
|
n := 0
|
||||||
for i := range cfg.ScrapeConfigs {
|
for i := range cfg.ScrapeConfigs {
|
||||||
|
Loading…
Reference in New Issue
Block a user