master
go 56 lines 1.21 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package prometheus
4
5 import (
6 "errors"
7 "fmt"
8
9 "github.com/netdata/netdata/go/plugins/pkg/matcher"
10 "github.com/netdata/netdata/go/plugins/pkg/prometheus"
11 "github.com/netdata/netdata/go/plugins/pkg/web"
12 )
13
14 func (c *Collector) validateConfig() error {
15 if c.URL == "" {
16 return errors.New("'url' can not be empty")
17 }
18 return nil
19 }
20
21 func (c *Collector) initPrometheusClient() (prometheus.Prometheus, error) {
22 httpClient, err := web.NewHTTPClient(c.ClientConfig)
23 if err != nil {
24 return nil, fmt.Errorf("init HTTP client: %v", err)
25 }
26
27 req := c.RequestConfig.Copy()
28
29 sr, err := c.Selector.Parse()
30 if err != nil {
31 return nil, fmt.Errorf("parsing selector: %v", err)
32 }
33
34 if sr != nil {
35 return prometheus.NewWithSelector(httpClient, req, sr), nil
36 }
37 return prometheus.New(httpClient, req), nil
38 }
39
40 func (c *Collector) initFallbackTypeMatcher(expr []string) (matcher.Matcher, error) {
41 if len(expr) == 0 {
42 return matcher.FALSE(), nil
43 }
44
45 m := matcher.FALSE()
46
47 for _, pattern := range expr {
48 v, err := matcher.NewGlobMatcher(pattern)
49 if err != nil {
50 return nil, fmt.Errorf("error on parsing pattern '%s': %v", pattern, err)
51 }
52 m = matcher.Or(m, v)
53 }
54
55 return m, nil
56 }