Skip to content
This repository was archived by the owner on Jul 27, 2023. It is now read-only.

Commit 6fe361f

Browse files
shang-wangleeavital
authored andcommitted
[proc] add network address information to container object (#211)
1 parent 01e66a7 commit 6fe361f

5 files changed

Lines changed: 1223 additions & 255 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ tracer-ebpf.o
77
.vscode
88
*.exe
99
*.syso
10+
*.swp
1011
cmd/agent/windows_resources/process-agent-msg.rc
1112
cmd/agent/windows_resources/*.bin
1213
# file generated at build time by message compiler

checks/container.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,7 @@ func (c *ContainerCheck) Run(cfg *config.AgentConfig, groupID int32) ([]model.Me
8585

8686
// fmtContainers formats and chunks the ctrList into a slice of chunks using a specific
8787
// number of chunks. len(result) MUST EQUAL chunks.
88-
func fmtContainers(
89-
ctrList []*containers.Container,
90-
lastRates map[string]util.ContainerRateMetrics,
91-
lastRun time.Time,
92-
chunks int,
93-
) [][]*model.Container {
88+
func fmtContainers(ctrList []*containers.Container, lastRates map[string]util.ContainerRateMetrics, lastRun time.Time, chunks int) [][]*model.Container {
9489
perChunk := (len(ctrList) / chunks) + 1
9590
chunked := make([][]*model.Container, chunks)
9691
chunk := make([]*model.Container, 0, perChunk)
@@ -136,6 +131,7 @@ func fmtContainers(
136131
NetSentPs: calculateRate(ifStats.PacketsSent, lastCtr.NetworkSum.PacketsSent, lastRun),
137132
NetRcvdBps: calculateRate(ifStats.BytesRcvd, lastCtr.NetworkSum.BytesRcvd, lastRun),
138133
NetSentBps: calculateRate(ifStats.BytesSent, lastCtr.NetworkSum.BytesSent, lastRun),
134+
Addresses: convertAddressList(ctr),
139135
Started: ctr.StartedAt,
140136
Tags: tags,
141137
})
@@ -152,6 +148,23 @@ func fmtContainers(
152148
return chunked
153149
}
154150

151+
// convertAddressList converts AddressList into process-agent ContainerNetworkAddress objects
152+
func convertAddressList(ctr *containers.Container) []*model.ContainerAddr {
153+
addrs := make([]*model.ContainerAddr, 0, len(ctr.AddressList))
154+
for _, a := range ctr.AddressList {
155+
protocol := model.ConnectionType_tcp
156+
if a.Protocol == "UDP" {
157+
protocol = model.ConnectionType_udp
158+
}
159+
addrs = append(addrs, &model.ContainerAddr{
160+
Ip: a.IP.String(),
161+
Port: int32(a.Port),
162+
Protocol: protocol,
163+
})
164+
}
165+
return addrs
166+
}
167+
155168
func calculateCtrPct(cur, prev, sys2, sys1 uint64, numCPU int, before time.Time) float32 {
156169
now := time.Now()
157170
diff := now.Unix() - before.Unix()

checks/container_test.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package checks
22

33
import (
4+
"net"
45
"testing"
56
"time"
67

7-
"github.com/DataDog/datadog-agent/pkg/util/containers"
8-
"github.com/DataDog/datadog-agent/pkg/util/containers/metrics"
98
"github.com/stretchr/testify/assert"
109

10+
"github.com/DataDog/datadog-agent/pkg/util/containers"
11+
"github.com/DataDog/datadog-agent/pkg/util/containers/metrics"
12+
"github.com/DataDog/datadog-process-agent/model"
1113
"github.com/DataDog/datadog-process-agent/util"
1214
)
1315

@@ -72,6 +74,17 @@ func TestContainerChunking(t *testing.T) {
7274
}
7375
}
7476

77+
func TestContainerAddressList(t *testing.T) {
78+
ctr := makeContainer("haha")
79+
ctr.AddressList = []containers.NetworkAddress{containers.NetworkAddress{IP: net.ParseIP("192.168.128.141"), Port: 443, Protocol: "TCP"}}
80+
results := fmtContainers([]*containers.Container{ctr}, map[string]util.ContainerRateMetrics{}, time.Now(), 1)
81+
assert.Equal(t, 1, len(results[0]))
82+
addrs := []*model.ContainerAddr{
83+
&model.ContainerAddr{Ip: "192.168.128.141", Port: int32(443), Protocol: model.ConnectionType_tcp},
84+
}
85+
assert.Equal(t, results[0][0].Addresses, addrs)
86+
}
87+
7588
func TestContainerNils(t *testing.T) {
7689
// Make sure formatting doesn't crash with nils
7790
cur := []*containers.Container{&containers.Container{}}

0 commit comments

Comments
 (0)