github.com/netdata/go.d.plugin@v0.58.1/modules/consul/collect_config.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package consul 4 5 import ( 6 "github.com/blang/semver/v4" 7 ) 8 9 const ( 10 // https://developer.hashicorp.com/consul/api-docs/agent#read-configuration 11 urlPathAgentSelf = "/v1/agent/self" 12 ) 13 14 type consulConfig struct { 15 Config struct { 16 Datacenter string 17 PrimaryDatacenter string 18 NodeName string 19 NodeID string 20 Server bool 21 Version string 22 } 23 DebugConfig struct { 24 Telemetry struct { 25 MetricsPrefix string 26 DisableHostname bool 27 PrometheusOpts struct { 28 Expiration string 29 Name string 30 } 31 } 32 Cloud struct { 33 AuthURL string 34 ClientID string 35 ClientSecret string 36 Hostname string 37 ResourceID string 38 ScadaAddress string 39 } 40 } 41 Stats struct { 42 License struct { 43 ID string `json:"id"` 44 } `json:"license"` 45 } 46 } 47 48 func (c *Consul) collectConfiguration() error { 49 var cfg consulConfig 50 51 if err := c.doOKDecode(urlPathAgentSelf, &cfg); err != nil { 52 return err 53 } 54 55 c.cfg = &cfg 56 c.Debugf("consul config: %+v", cfg) 57 58 if !c.isTelemetryPrometheusEnabled() { 59 c.Warning("export of Prometheus metrics is disabled") 60 } 61 62 ver, err := semver.New(c.cfg.Config.Version) 63 if err != nil { 64 c.Warningf("error on parsing Consul version '%s': %v", c.cfg.Config.Version, err) 65 return nil 66 } 67 68 c.version = ver 69 70 return nil 71 }