]> go.fuhry.dev Git - runtime.git/commitdiff
health-exporter: include node name in labels, publish under correct otel-tls service
authorDan Fuhry <dan@fuhry.com>
Fri, 4 Apr 2025 03:38:58 +0000 (23:38 -0400)
committerDan Fuhry <dan@fuhry.com>
Fri, 4 Apr 2025 03:38:58 +0000 (23:38 -0400)
sd/etcd_factory.go
sd/health_exporter/main.go
sd/monitor.go

index f264ed4c3333050289d72a660fd7faf6a705ed50..5212aceaa41416aa783d1b191bf0c604fb5bce89 100644 (file)
@@ -37,7 +37,7 @@ func NewDefaultEtcdClient() (*etcd_client.Client, error) {
                                return nil, err
                        }
 
-                       clientSingleton, err = NewEtcdClient(id)
+                       clientSingleton, err = NewEtcdClient(id, etcdDiscoveryDomain)
                        if err == nil {
                                break
                        }
@@ -52,14 +52,14 @@ func NewDefaultEtcdClient() (*etcd_client.Client, error) {
        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())
@@ -68,9 +68,12 @@ func NewEtcdClientWithDeadline(id mtls.Identity, deadline time.Time) (*etcd_clie
        }
        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)
        }
index 6b7c87ed0048ced56e11a765528470fef11a4a15..bd58ab12909577fdc4ef7981bbec6d13c90d5786 100644 (file)
@@ -9,6 +9,7 @@ import (
        "net"
        "net/http"
        "os/signal"
+       "strings"
        "sync"
        "syscall"
 
@@ -64,6 +65,12 @@ func main() {
                                "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)
                        }
@@ -88,7 +95,8 @@ func main() {
        publisher := &sd.SDPublisher{
                AdvertisePort: tcpAddr.AddrPort().Port(),
                Protocol:      sd.ProtocolTCP,
-               Service:       "health-exporter",
+               Service:       "otel-tls",
+               ShardName:     "health-exporter",
        }
        publisher.Publish(ctx)
 
index 579d6ab31fac0bb9f0f3edcdcf02991f848c8a91..656af853ea44ee27fdccfac265a2559a7706bf06 100644 (file)
@@ -25,6 +25,7 @@ type SDHealthReport struct {
        Up            bool
        Domain        string
        Shard         string
+       Node          string
        ShardRegion   string
        Protocol      string
        Service       string
@@ -114,6 +115,7 @@ func (sdp *healthCheckingPublisher) updateHealth(ctx context.Context, lease *etc
                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(),