diff --git a/pkg/loki/modules.go b/pkg/loki/modules.go index 3fc3ec2e1ac3e..3c76434ef852c 100644 --- a/pkg/loki/modules.go +++ b/pkg/loki/modules.go @@ -23,6 +23,7 @@ import ( "github.com/grafana/dskit/kv/codec" "github.com/grafana/dskit/kv/memberlist" "github.com/grafana/dskit/middleware" + "github.com/grafana/dskit/netutil" "github.com/grafana/dskit/ring" "github.com/grafana/dskit/runtimeconfig" "github.com/grafana/dskit/server" @@ -1384,6 +1385,15 @@ func (t *Loki) initMemberlistKV() (services.Service, error) { ) dnsProvider := dns.NewProvider(util_log.Logger, dnsProviderReg, dns.GolangResolverType) + var err error + t.Cfg.MemberlistKV.AdvertiseAddr, err = GetInstanceAddr( + t.Cfg.MemberlistKV.AdvertiseAddr, + t.Cfg.Common.InstanceInterfaceNames, + util_log.Logger, + ) + if err != nil { + return nil, err + } t.MemberlistKV = memberlist.NewKVInitService(&t.Cfg.MemberlistKV, util_log.Logger, dnsProvider, reg) t.Cfg.CompactorConfig.CompactorRing.KVStore.MemberlistKV = t.MemberlistKV.GetMemberlistKV @@ -2015,3 +2025,11 @@ func schemaHasBoltDBShipperConfig(scfg config.SchemaConfig) bool { return false } + +func GetInstanceAddr(addr string, netInterfaces []string, logger log.Logger) (string, error) { + if addr != "" { + return addr, nil + } + + return netutil.GetFirstAddressOf(netInterfaces, logger, false) +}