Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add NIC metadata (name and version) to telemetry data #5176

Merged
merged 3 commits into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cmd/nginx-ingress/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ func main() {
WatchNamespaceLabel: *watchNamespaceLabel,
EnableTelemetryReporting: *enableTelemetryReporting,
TelemetryReportingPeriod: *telemetryReportingPeriod,
NICVersion: version,
}

lbc := k8s.NewLoadBalancerController(lbcInput)
Expand Down
2 changes: 2 additions & 0 deletions internal/k8s/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ type NewLoadBalancerControllerInput struct {
WatchNamespaceLabel string
EnableTelemetryReporting bool
TelemetryReportingPeriod string
NICVersion string
}

// NewLoadBalancerController creates a controller
Expand Down Expand Up @@ -351,6 +352,7 @@ func NewLoadBalancerController(input NewLoadBalancerControllerInput) *LoadBalanc
CustomK8sClientReader: input.ConfClient,
Period: 5 * time.Second,
Configurator: lbc.configurator,
Version: input.NICVersion,
}
lbc.telemetryChan = make(chan struct{})
collector, err := telemetry.NewCollector(
Expand Down
11 changes: 10 additions & 1 deletion internal/telemetry/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ type CollectorConfig struct {
Period time.Duration

Configurator *configs.Configurator

// Version represents NIC version.
Version string
}

// NewCollector takes 0 or more options and creates a new TraceReporter.
Expand Down Expand Up @@ -93,9 +96,15 @@ func (c *Collector) Collect(ctx context.Context) {

// BuildReport takes context and builds report from gathered telemetry data.
func (c *Collector) BuildReport(ctx context.Context) (Data, error) {
pm := ProjectMeta{
Name: "NIC",
vepatel marked this conversation as resolved.
Show resolved Hide resolved
Version: c.Config.Version,
}
d := Data{
Arch: runtime.GOARCH,
ProjectMeta: pm,
Arch: runtime.GOARCH,
}

var err error

if c.Config.Configurator != nil {
Expand Down
75 changes: 67 additions & 8 deletions internal/telemetry/collector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ func TestCreateNewCollectorWithCustomExporter(t *testing.T) {
cfg := telemetry.CollectorConfig{
K8sClientReader: newTestClientset(),
Configurator: newConfigurator(t),
Version: "3.5.0",
}
c, err := telemetry.NewCollector(cfg, telemetry.WithExporter(exp))
if err != nil {
Expand All @@ -60,6 +61,10 @@ func TestCreateNewCollectorWithCustomExporter(t *testing.T) {
c.Collect(context.Background())

td := telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
K8sVersion: "v1.29.2",
Arch: runtime.GOARCH,
}
Expand All @@ -78,6 +83,7 @@ func TestCollectNodeCountInClusterWithOneNode(t *testing.T) {
cfg := telemetry.CollectorConfig{
Configurator: newConfigurator(t),
K8sClientReader: newTestClientset(node1),
Version: "3.5.0",
}

c, err := telemetry.NewCollector(cfg, telemetry.WithExporter(exp))
Expand All @@ -88,8 +94,8 @@ func TestCollectNodeCountInClusterWithOneNode(t *testing.T) {

td := telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "",
Version: "",
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
VirtualServers: 0,
Expand All @@ -115,6 +121,7 @@ func TestCollectNodeCountInClusterWithThreeNodes(t *testing.T) {
cfg := telemetry.CollectorConfig{
Configurator: newConfigurator(t),
K8sClientReader: newTestClientset(node1, node2, node3),
Version: "3.5.0",
}

c, err := telemetry.NewCollector(cfg, telemetry.WithExporter(exp))
Expand All @@ -125,8 +132,8 @@ func TestCollectNodeCountInClusterWithThreeNodes(t *testing.T) {

td := telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "",
Version: "",
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
VirtualServers: 0,
Expand All @@ -152,6 +159,7 @@ func TestCollectClusterIDInClusterWithOneNode(t *testing.T) {
cfg := telemetry.CollectorConfig{
Configurator: newConfigurator(t),
K8sClientReader: newTestClientset(node1, kubeNS),
Version: "3.5.0",
}

c, err := telemetry.NewCollector(cfg, telemetry.WithExporter(exp))
Expand All @@ -162,8 +170,8 @@ func TestCollectClusterIDInClusterWithOneNode(t *testing.T) {

td := telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "",
Version: "",
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
VirtualServers: 0,
Expand All @@ -190,6 +198,7 @@ func TestCollectK8sVersion(t *testing.T) {
cfg := telemetry.CollectorConfig{
Configurator: newConfigurator(t),
K8sClientReader: newTestClientset(node1, kubeNS),
Version: "3.5.0",
}

c, err := telemetry.NewCollector(cfg, telemetry.WithExporter(exp))
Expand All @@ -200,8 +209,8 @@ func TestCollectK8sVersion(t *testing.T) {

td := telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "",
Version: "",
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
VirtualServers: 0,
Expand Down Expand Up @@ -233,13 +242,21 @@ func TestCountVirtualServers(t *testing.T) {
{
testName: "Create and delete 1 VirtualServer",
expectedTraceDataOnAdd: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
VirtualServers: 1,
},
K8sVersion: "v1.29.2",
Arch: runtime.GOARCH,
},
expectedTraceDataOnDelete: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
VirtualServers: 0,
},
Expand All @@ -262,13 +279,21 @@ func TestCountVirtualServers(t *testing.T) {
{
testName: "Create 2 VirtualServers and delete 2",
expectedTraceDataOnAdd: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
VirtualServers: 2,
},
K8sVersion: "v1.29.2",
Arch: runtime.GOARCH,
},
expectedTraceDataOnDelete: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
VirtualServers: 0,
},
Expand Down Expand Up @@ -300,13 +325,21 @@ func TestCountVirtualServers(t *testing.T) {
{
testName: "Create 2 VirtualServers and delete 1",
expectedTraceDataOnAdd: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
VirtualServers: 2,
},
K8sVersion: "v1.29.2",
Arch: runtime.GOARCH,
},
expectedTraceDataOnDelete: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
VirtualServers: 1,
},
Expand Down Expand Up @@ -343,6 +376,7 @@ func TestCountVirtualServers(t *testing.T) {
c, err := telemetry.NewCollector(telemetry.CollectorConfig{
K8sClientReader: newTestClientset(dummyKubeNS),
Configurator: configurator,
Version: "3.5.0",
})
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -397,13 +431,21 @@ func TestCountTransportServers(t *testing.T) {
{
testName: "Create and delete 1 TransportServer",
expectedTraceDataOnAdd: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
TransportServers: 1,
},
K8sVersion: "v1.29.2",
Arch: runtime.GOARCH,
},
expectedTraceDataOnDelete: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
TransportServers: 0,
},
Expand All @@ -430,13 +472,21 @@ func TestCountTransportServers(t *testing.T) {
{
testName: "Create 2 and delete 2 TransportServer",
expectedTraceDataOnAdd: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
TransportServers: 2,
},
K8sVersion: "v1.29.2",
Arch: runtime.GOARCH,
},
expectedTraceDataOnDelete: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
TransportServers: 0,
},
Expand Down Expand Up @@ -476,13 +526,21 @@ func TestCountTransportServers(t *testing.T) {
{
testName: "Create 2 and delete 1 TransportServer",
expectedTraceDataOnAdd: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
TransportServers: 2,
},
K8sVersion: "v1.29.2",
Arch: runtime.GOARCH,
},
expectedTraceDataOnDelete: telemetry.Data{
ProjectMeta: telemetry.ProjectMeta{
Name: "NIC",
Version: "3.5.0",
},
NICResourceCounts: telemetry.NICResourceCounts{
TransportServers: 1,
},
Expand Down Expand Up @@ -527,6 +585,7 @@ func TestCountTransportServers(t *testing.T) {
c, err := telemetry.NewCollector(telemetry.CollectorConfig{
K8sClientReader: newTestClientset(dummyKubeNS),
Configurator: configurator,
Version: "3.5.0",
})
if err != nil {
t.Fatal(err)
Expand Down
Loading