discovery: use consul service address if available

pull/1725/head
Nicholas Capo 9 years ago
parent a3c4beb6ee
commit 84334a8410

@ -229,12 +229,20 @@ func (srv *consulService) watch(ctx context.Context, ch chan<- []*config.TargetG
} }
for _, node := range nodes { for _, node := range nodes {
var (
addr = fmt.Sprintf("%s:%d", node.Address, node.ServicePort)
// We surround the separated list with the separator as well. This way regular expressions // We surround the separated list with the separator as well. This way regular expressions
// in relabeling rules don't have to consider tag positions. // in relabeling rules don't have to consider tag positions.
tags = srv.tagSeparator + strings.Join(node.ServiceTags, srv.tagSeparator) + srv.tagSeparator var tags = srv.tagSeparator + strings.Join(node.ServiceTags, srv.tagSeparator) + srv.tagSeparator
)
// If the service address is not empty it should be used instead of the node address
// since the service may be registered remotely through a different node
var addr string
if node.ServiceAddress != "" {
addr = fmt.Sprintf("%s:%d", node.ServiceAddress, node.ServicePort)
} else {
addr = fmt.Sprintf("%s:%d", node.Address, node.ServicePort)
}
tgroup.Targets = append(tgroup.Targets, model.LabelSet{ tgroup.Targets = append(tgroup.Targets, model.LabelSet{
model.AddressLabel: model.LabelValue(addr), model.AddressLabel: model.LabelValue(addr),
addressLabel: model.LabelValue(node.Address), addressLabel: model.LabelValue(node.Address),

Loading…
Cancel
Save