mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 03:32:11 +08:00

* setup distributor module * move lifecycler into resource server provider * remove ring/client pool setup from distributor module and use the same ring/client pool between storage server module and distributor module * implement resourcestore server methods * make healthcheck fail if ring is not running
58 lines
1.8 KiB
Go
58 lines
1.8 KiB
Go
package server
|
|
|
|
import (
|
|
"github.com/grafana/dskit/dns"
|
|
"github.com/grafana/dskit/flagext"
|
|
"github.com/grafana/dskit/kv"
|
|
"github.com/grafana/dskit/kv/codec"
|
|
"github.com/grafana/dskit/kv/memberlist"
|
|
"github.com/grafana/dskit/ring"
|
|
"github.com/grafana/dskit/services"
|
|
"github.com/grafana/grafana/pkg/infra/log"
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
)
|
|
|
|
func (ms *ModuleServer) initMemberlistKV() (services.Service, error) {
|
|
logger := log.New("memberlist")
|
|
|
|
dnsProviderReg := prometheus.WrapRegistererWithPrefix(
|
|
"grafana",
|
|
prometheus.WrapRegistererWith(
|
|
prometheus.Labels{"component": "memberlist"},
|
|
ms.registerer,
|
|
),
|
|
)
|
|
dnsProvider := dns.NewProvider(logger, dnsProviderReg, dns.GolangResolverType)
|
|
|
|
KVStore := kv.Config{Store: "memberlist"}
|
|
|
|
memberlistKVsvc := memberlist.NewKVInitService(toMemberlistConfig(ms.cfg), logger, dnsProvider, ms.registerer)
|
|
KVStore.MemberlistKV = memberlistKVsvc.GetMemberlistKV
|
|
|
|
ms.MemberlistKVConfig = KVStore
|
|
|
|
ms.httpServerRouter.Path("/memberlist").Methods("GET", "POST").Handler(memberlistKVsvc)
|
|
|
|
return memberlistKVsvc, nil
|
|
}
|
|
|
|
func toMemberlistConfig(cfg *setting.Cfg) *memberlist.KVConfig {
|
|
memberlistKVcfg := &memberlist.KVConfig{}
|
|
flagext.DefaultValues(memberlistKVcfg)
|
|
memberlistKVcfg.Codecs = []codec.Codec{
|
|
ring.GetCodec(),
|
|
}
|
|
memberlistKVcfg.ClusterLabel = cfg.MemberlistClusterLabel
|
|
memberlistKVcfg.ClusterLabelVerificationDisabled = cfg.MemberlistClusterLabelVerificationDisabled
|
|
if cfg.MemberlistBindAddr != "" {
|
|
memberlistKVcfg.TCPTransport.BindAddrs = []string{cfg.MemberlistBindAddr}
|
|
}
|
|
if cfg.MemberlistAdvertiseAddr != "" {
|
|
memberlistKVcfg.AdvertiseAddr = cfg.MemberlistAdvertiseAddr
|
|
}
|
|
memberlistKVcfg.JoinMembers = []string{cfg.MemberlistJoinMember}
|
|
|
|
return memberlistKVcfg
|
|
}
|