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  }