return nil, err
}
- clientSingleton, err = NewEtcdClient(id)
+ clientSingleton, err = NewEtcdClient(id, etcdDiscoveryDomain)
if err == nil {
break
}
return clientSingleton, nil
}
-func NewEtcdClient(id mtls.Identity) (*etcd_client.Client, error) {
+func NewEtcdClient(id mtls.Identity, domain string) (*etcd_client.Client, error) {
deadline := time.Now().Add(time.Millisecond * time.Duration(etcdStartupTimeoutMs))
return NewEtcdClientWithDeadline(
- id, deadline)
+ id, domain, deadline)
}
-func NewEtcdClientWithDeadline(id mtls.Identity, deadline time.Time) (*etcd_client.Client, error) {
+func NewEtcdClientWithDeadline(id mtls.Identity, domain string, deadline time.Time) (*etcd_client.Client, error) {
var client *etcd_client.Client
tlsConfig, err := id.TlsConfig(context.Background())
}
pnv := mtls.NewPeerNameVerifier()
pnv.AllowFrom(mtls.Service, "etcd")
- pnv.ConfigureClient(tlsConfig)
+ err = pnv.ConfigureClient(tlsConfig)
+ if err != nil {
+ return nil, err
+ }
- clients, err := srv.GetClient("etcd-client", etcdDiscoveryDomain, "")
+ clients, err := srv.GetClient("etcd-client", domain, "")
if err != nil {
return nil, fmt.Errorf("failed to discover peers: %v", err)
}
"net"
"net/http"
"os/signal"
+ "strings"
"sync"
"syscall"
"protocol=%q,service=%q,monitor_host=%q,monitor_region=%q",
s.Protocol, s.Service, s.MonitorHost, s.MonitorRegion)
+ if s.Node == "" {
+ nodeName := strings.Split(s.MonitorHost, ".")[0]
+ labels += fmt.Sprintf(",node_name=%q", nodeName)
+ } else {
+ labels += fmt.Sprintf(",node_name=%q", s.Shard)
+ }
if s.Shard != "" {
labels += fmt.Sprintf(",shard_name=%q", s.Shard)
}
publisher := &sd.SDPublisher{
AdvertisePort: tcpAddr.AddrPort().Port(),
Protocol: sd.ProtocolTCP,
- Service: "health-exporter",
+ Service: "otel-tls",
+ ShardName: "health-exporter",
}
publisher.Publish(ctx)
Up bool
Domain string
Shard string
+ Node string
ShardRegion string
Protocol string
Service string
SocketPort: sdp.publisher.AdvertisePort,
Domain: sdp.publisher.Domain,
Shard: sdp.publisher.ShardName,
+ Node: sdp.publisher.NodeName,
ShardRegion: strings.Split(sdp.publisher.AdvertiseHost, ".")[1],
Protocol: sdp.healthcheck.ServiceDefinition().Engine,
MonitorHost: hostname.Fqdn(),