mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-10 15:44:05 -08:00
Pass through current agent Consul datacenter name
Instead of only filling __meta_consul_dc when datacenter is set in consul_sd_config this change fills the label based on what the agent reports it's current data center is, if datacenter isn't manually set, otherwise it uses whatever datacenter was set to.
This commit is contained in:
parent
60967736fa
commit
48e461f7db
|
@ -52,10 +52,11 @@ const (
|
||||||
// ConsulDiscovery retrieves target information from a Consul server
|
// ConsulDiscovery retrieves target information from a Consul server
|
||||||
// and updates them via watches.
|
// and updates them via watches.
|
||||||
type ConsulDiscovery struct {
|
type ConsulDiscovery struct {
|
||||||
client *consul.Client
|
client *consul.Client
|
||||||
clientConf *consul.Config
|
clientConf *consul.Config
|
||||||
tagSeparator string
|
clientDatacenter string
|
||||||
scrapedServices map[string]struct{}
|
tagSeparator string
|
||||||
|
scrapedServices map[string]struct{}
|
||||||
|
|
||||||
mu sync.RWMutex
|
mu sync.RWMutex
|
||||||
services map[string]*consulService
|
services map[string]*consulService
|
||||||
|
@ -95,6 +96,17 @@ func NewConsulDiscovery(conf *config.ConsulSDConfig) *ConsulDiscovery {
|
||||||
scrapedServices: map[string]struct{}{},
|
scrapedServices: map[string]struct{}{},
|
||||||
services: map[string]*consulService{},
|
services: map[string]*consulService{},
|
||||||
}
|
}
|
||||||
|
// If the datacenter isn't set in the clientConf, let's get it from the local Consul agent
|
||||||
|
// (Consul default is to use local node's datacenter if one isn't given for a query).
|
||||||
|
if clientConf.Datacenter == "" {
|
||||||
|
info, err := client.Agent().Self()
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("discovery.NewConsulDiscovery: %s", err))
|
||||||
|
}
|
||||||
|
cd.clientDatacenter = info["Config"]["Datacenter"].(string)
|
||||||
|
} else {
|
||||||
|
cd.clientDatacenter = clientConf.Datacenter
|
||||||
|
}
|
||||||
for _, name := range conf.Services {
|
for _, name := range conf.Services {
|
||||||
cd.scrapedServices[name] = struct{}{}
|
cd.scrapedServices[name] = struct{}{}
|
||||||
}
|
}
|
||||||
|
@ -214,7 +226,7 @@ func (cd *ConsulDiscovery) watchServices(update chan<- *consulService, done <-ch
|
||||||
}
|
}
|
||||||
srv.tgroup.Labels = clientmodel.LabelSet{
|
srv.tgroup.Labels = clientmodel.LabelSet{
|
||||||
ConsulServiceLabel: clientmodel.LabelValue(name),
|
ConsulServiceLabel: clientmodel.LabelValue(name),
|
||||||
ConsulDCLabel: clientmodel.LabelValue(cd.clientConf.Datacenter),
|
ConsulDCLabel: clientmodel.LabelValue(cd.clientDatacenter),
|
||||||
}
|
}
|
||||||
update <- srv
|
update <- srv
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue