From 60dc8bdde62a46e1ce6cdf2c1a38ec9ea182e6fb Mon Sep 17 00:00:00 2001 From: Mayank Pande Date: Wed, 15 May 2024 12:21:06 +0000 Subject: [PATCH] fix: fix for node metadata init --- common/ip_resolver.go | 1 - containers/container.go | 3 +-- containers/registry.go | 15 +++++++++------ main.go | 7 ++++--- node/collector.go | 3 +-- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/common/ip_resolver.go b/common/ip_resolver.go index 8c407f0a..da8344c3 100644 --- a/common/ip_resolver.go +++ b/common/ip_resolver.go @@ -746,7 +746,6 @@ func (resolver *K8sIPResolver) updateIpMapping() { Region: region, Zone: zone, } - log.Printf("created pod workload %v", podWorkload) resolver.storePodsIP(podIp.IP, &podWorkload) } return true diff --git a/containers/container.go b/containers/container.go index f1f85f89..22fff6f3 100644 --- a/containers/container.go +++ b/containers/container.go @@ -147,8 +147,7 @@ type Container struct { instanceMetadata *metadata.CloudMetadata } -func NewContainer(id ContainerID, cg *cgroup.Cgroup, md *ContainerMetadata, hostConntrack *Conntrack, pid uint32, ip_resolver IPResolver) (*Container, error) { - instanceMetadata := metadata.GetInstanceMetadata() +func NewContainer(id ContainerID, cg *cgroup.Cgroup, md *ContainerMetadata, hostConntrack *Conntrack, pid uint32, ip_resolver IPResolver, instanceMetadata *metadata.CloudMetadata) (*Container, error) { netNs, err := proc.GetNetNs(pid) if err != nil { return nil, err diff --git a/containers/registry.go b/containers/registry.go index c3396deb..03b153a2 100644 --- a/containers/registry.go +++ b/containers/registry.go @@ -12,6 +12,7 @@ import ( "github.com/coroot/coroot-node-agent/common" "github.com/coroot/coroot-node-agent/ebpftracer" "github.com/coroot/coroot-node-agent/flags" + "github.com/coroot/coroot-node-agent/node/metadata" "github.com/coroot/coroot-node-agent/proc" "github.com/prometheus/client_golang/prometheus" "github.com/vishvananda/netns" @@ -51,11 +52,12 @@ type Registry struct { containersByCgroupId map[string]*Container containersByPid map[uint32]*Container - processInfoCh chan<- ProcessInfo - ip_resolver IPResolver + processInfoCh chan<- ProcessInfo + ip_resolver IPResolver + instanceMetadata *metadata.CloudMetadata } -func NewRegistry(reg prometheus.Registerer, kernelVersion string, processInfoCh chan<- ProcessInfo, ip_resolver *common.K8sIPResolver) (*Registry, error) { +func NewRegistry(reg prometheus.Registerer, kernelVersion string, processInfoCh chan<- ProcessInfo, ip_resolver *common.K8sIPResolver, md *metadata.CloudMetadata) (*Registry, error) { ns, err := proc.GetSelfNetNs() if err != nil { return nil, err @@ -109,8 +111,9 @@ func NewRegistry(reg prometheus.Registerer, kernelVersion string, processInfoCh processInfoCh: processInfoCh, - tracer: ebpftracer.NewTracer(kernelVersion, *flags.DisableL7Tracing), - ip_resolver: ip_resolver, + tracer: ebpftracer.NewTracer(kernelVersion, *flags.DisableL7Tracing), + ip_resolver: ip_resolver, + instanceMetadata: md, } go r.handleEvents(r.events) @@ -306,7 +309,7 @@ func (r *Registry) getOrCreateContainer(pid uint32) *Container { r.containersByCgroupId[cg.Id] = c return c } - c, err := NewContainer(id, cg, md, r.hostConntrack, pid, r.ip_resolver) + c, err := NewContainer(id, cg, md, r.hostConntrack, pid, r.ip_resolver, r.instanceMetadata) if err != nil { klog.Warningf("failed to create container pid=%d cg=%s id=%s: %s", pid, cg.Id, id, err) return nil diff --git a/main.go b/main.go index 2ebfd3f5..7baa355f 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,7 @@ import ( "github.com/coroot/coroot-node-agent/flags" "github.com/coroot/coroot-node-agent/logs" "github.com/coroot/coroot-node-agent/node" + "github.com/coroot/coroot-node-agent/node/metadata" "github.com/coroot/coroot-node-agent/profiling" "github.com/coroot/coroot-node-agent/prom" "github.com/coroot/coroot-node-agent/tracing" @@ -155,14 +156,14 @@ func main() { registerer := prometheus.WrapRegistererWith(prometheus.Labels{"machine_id": machineId}, registry) registerer.MustRegister(info("node_agent_info", version)) - - if err := registerer.Register(node.NewCollector(hostname, kv)); err != nil { + md := metadata.GetInstanceMetadata() + if err := registerer.Register(node.NewCollector(hostname, kv, md)); err != nil { klog.Exitln(err) } processInfoCh := profiling.Init(machineId, hostname) - cr, err := containers.NewRegistry(registerer, kv, processInfoCh, resolver) + cr, err := containers.NewRegistry(registerer, kv, processInfoCh, resolver, md) if err != nil { klog.Exitln(err) } diff --git a/node/collector.go b/node/collector.go index fc86458f..d2358be4 100644 --- a/node/collector.go +++ b/node/collector.go @@ -152,8 +152,7 @@ type Collector struct { instanceMetadata *metadata.CloudMetadata } -func NewCollector(hostname, kernelVersion string) *Collector { - md := metadata.GetInstanceMetadata() +func NewCollector(hostname, kernelVersion string, md *metadata.CloudMetadata) *Collector { klog.Infof("instance metadata: %+v", md) return &Collector{ hostname: hostname,