From 5187067a5f4194797b1fe119f1846e15ce2f08fc Mon Sep 17 00:00:00 2001 From: ishleenk17 Date: Thu, 4 Jul 2024 12:56:59 +0530 Subject: [PATCH 1/6] Fix timestamp issue --- remappers/hostmetrics/hostmetrics_test.go | 42 ++++++++--------------- remappers/internal/metric.go | 6 ++++ 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/remappers/hostmetrics/hostmetrics_test.go b/remappers/hostmetrics/hostmetrics_test.go index c116de4..4106506 100644 --- a/remappers/hostmetrics/hostmetrics_test.go +++ b/remappers/hostmetrics/hostmetrics_test.go @@ -113,10 +113,6 @@ func doTestRemap(t *testing.T, id string, remapOpts ...Option) { {Type: Gauge, Name: "system.cpu.system.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.68), Attrs: outAttr("cpu")}}, {Type: Gauge, Name: "system.cpu.user.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.5), Attrs: outAttr("cpu")}}, {Type: Gauge, Name: "system.cpu.steal.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.15), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.iowait.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.nice.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.irq.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.softirq.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, {Type: Sum, Name: "system.cpu.cores", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(4)), Attrs: outAttr("cpu")}}, {Type: Sum, Name: "system.load.cores", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(4)), Attrs: outAttr("cpu")}}, {Type: Gauge, Name: "system.cpu.total.norm.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.3325), Attrs: outAttr("cpu")}}, @@ -124,10 +120,6 @@ func doTestRemap(t *testing.T, id string, remapOpts ...Option) { {Type: Gauge, Name: "system.cpu.system.norm.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.17), Attrs: outAttr("cpu")}}, {Type: Gauge, Name: "system.cpu.user.norm.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.125), Attrs: outAttr("cpu")}}, {Type: Gauge, Name: "system.cpu.steal.norm.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0375), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.iowait.norm.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.nice.norm.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.irq.norm.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.softirq.norm.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, }, }, { @@ -149,10 +141,6 @@ func doTestRemap(t *testing.T, id string, remapOpts ...Option) { {Type: Gauge, Name: "system.cpu.system.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.68), Attrs: outAttr("cpu")}}, {Type: Gauge, Name: "system.cpu.user.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.5), Attrs: outAttr("cpu")}}, {Type: Gauge, Name: "system.cpu.steal.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.15), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.iowait.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.nice.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.irq.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, - {Type: Gauge, Name: "system.cpu.softirq.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("cpu")}}, }, }, { @@ -217,29 +205,29 @@ func doTestRemap(t *testing.T, id string, remapOpts ...Option) { {Type: Sum, Name: "process.memory.usage", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(2048))}}, {Type: Sum, Name: "process.memory.virtual", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(128))}}, {Type: Sum, Name: "process.open_file_descriptors", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(10))}}, - {Type: Sum, Name: "process.cpu.time", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(3)), Attrs: map[string]any{"state": "system"}}}, - {Type: Sum, Name: "process.cpu.time", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(4)), Attrs: map[string]any{"state": "user"}}}, - {Type: Sum, Name: "process.cpu.time", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(5)), Attrs: map[string]any{"state": "wait"}}}, - {Type: Sum, Name: "process.disk.io", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(1024))}}, - {Type: Sum, Name: "process.disk.operations", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(10))}}, + {Type: Sum, Name: "process.cpu.time", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.3345), Attrs: map[string]any{"state": "system"}}}, + {Type: Sum, Name: "process.cpu.time", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.5546), Attrs: map[string]any{"state": "user"}}}, + {Type: Sum, Name: "process.cpu.time", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.8752), Attrs: map[string]any{"state": "wait"}}}, + {Type: Sum, Name: "process.disk.io", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(1024)), Attrs: map[string]any{"direction": "read"}}}, + {Type: Sum, Name: "process.disk.io", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(2048)), Attrs: map[string]any{"direction": "write"}}}, + {Type: Sum, Name: "process.disk.operations", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(10)), Attrs: map[string]any{"direction": "read"}}}, + {Type: Sum, Name: "process.disk.operations", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(20)), Attrs: map[string]any{"direction": "write"}}}, }, expected: []internal.TestMetric{ - {Type: Sum, Name: "process.cpu.start_time", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(0)), Attrs: outAttr("process")}}, - {Type: Sum, Name: "system.process.cpu.start_time", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(0)), Attrs: outAttr("process")}}, {Type: Sum, Name: "system.process.num_threads", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(7)), Attrs: outAttr("process")}}, {Type: Gauge, Name: "system.process.memory.rss.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.15), Attrs: outAttr("process")}}, {Type: Sum, Name: "system.process.memory.rss.bytes", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(2048)), Attrs: outAttr("process")}}, {Type: Sum, Name: "system.process.memory.size", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(128)), Attrs: outAttr("process")}}, {Type: Sum, Name: "system.process.fd.open", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(10)), Attrs: outAttr("process")}}, {Type: Gauge, Name: "process.memory.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.15), Attrs: outAttr("process")}}, - {Type: Sum, Name: "system.process.cpu.total.value", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("process")}}, - {Type: Sum, Name: "system.process.cpu.system.ticks", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("process")}}, - {Type: Sum, Name: "system.process.cpu.user.ticks", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("process")}}, - {Type: Sum, Name: "system.process.cpu.total.ticks", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("process")}}, - {Type: Sum, Name: "system.process.io.read_bytes", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(0)), Attrs: outAttr("process")}}, - {Type: Sum, Name: "system.process.io.write_bytes", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(0)), Attrs: outAttr("process")}}, - {Type: Sum, Name: "system.process.io.read_ops", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(0)), Attrs: outAttr("process")}}, - {Type: Sum, Name: "system.process.io.write_ops", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(0)), Attrs: outAttr("process")}}, + {Type: Sum, Name: "system.process.cpu.total.value", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(1764.3), Attrs: outAttr("process")}}, + {Type: Sum, Name: "system.process.cpu.system.ticks", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(334.5), Attrs: outAttr("process")}}, + {Type: Sum, Name: "system.process.cpu.user.ticks", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(554.6), Attrs: outAttr("process")}}, + {Type: Sum, Name: "system.process.cpu.total.ticks", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(1764.3), Attrs: outAttr("process")}}, + {Type: Sum, Name: "system.process.io.read_bytes", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(1024)), Attrs: outAttr("process")}}, + {Type: Sum, Name: "system.process.io.write_bytes", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(2048)), Attrs: outAttr("process")}}, + {Type: Sum, Name: "system.process.io.read_ops", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(10)), Attrs: outAttr("process")}}, + {Type: Sum, Name: "system.process.io.write_ops", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(20)), Attrs: outAttr("process")}}, {Type: Gauge, Name: "system.process.cpu.total.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("process")}}, }, }, diff --git a/remappers/internal/metric.go b/remappers/internal/metric.go index a6ebba0..341733f 100644 --- a/remappers/internal/metric.go +++ b/remappers/internal/metric.go @@ -46,6 +46,12 @@ func AddMetrics( ms.EnsureCapacity(ms.Len() + len(metrics)) for _, metric := range metrics { + + //The translated metric should not be generated for a null or negative value + if (metric.IntValue != nil && *metric.IntValue <= 0) || (metric.DoubleValue != nil && *metric.DoubleValue <= 0) { + continue + } + m := ms.AppendEmpty() m.SetName(metric.Name) From f22646c1b75d31e56718b6a3fd60c5eab5201871 Mon Sep 17 00:00:00 2001 From: ishleenk17 Date: Thu, 4 Jul 2024 13:06:12 +0530 Subject: [PATCH 2/6] Update k8s tests --- remappers/kubernetesmetrics/k8smetrics_test.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/remappers/kubernetesmetrics/k8smetrics_test.go b/remappers/kubernetesmetrics/k8smetrics_test.go index 12eef8d..7019e48 100644 --- a/remappers/kubernetesmetrics/k8smetrics_test.go +++ b/remappers/kubernetesmetrics/k8smetrics_test.go @@ -84,14 +84,9 @@ func doTestRemap(t *testing.T, id string, remapOpts ...Option) { expected: []internal.TestMetric{ {Type: Gauge, Name: "kubernetes.pod.cpu.usage.limit.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.26), Attrs: outAttr("kubeletstatsreceiver")}}, {Type: Gauge, Name: "kubernetes.pod.cpu.usage.node.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.12), Attrs: outAttr("kubeletstatsreceiver")}}, - {Type: Gauge, Name: "kubernetes.pod.memory.usage.node.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("kubeletstatsreceiver")}}, {Type: Gauge, Name: "kubernetes.pod.memory.usage.limit.pct", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.18), Attrs: outAttr("kubeletstatsreceiver")}}, {Type: Sum, Name: "kubernetes.pod.network.tx.bytes", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(2048)), Attrs: outAttr("kubeletstatsreceiver")}}, {Type: Sum, Name: "kubernetes.pod.network.rx.bytes", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(1024)), Attrs: outAttr("kubeletstatsreceiver")}}, - {Type: Gauge, Name: "kubernetes.node.cpu.usage.nanocores", DP: internal.TestDP{Ts: now, Dbl: internal.Ptr(0.0), Attrs: outAttr("kubeletstatsreceiver")}}, - {Type: Gauge, Name: "kubernetes.node.memory.usage.bytes", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(0)), Attrs: outAttr("kubeletstatsreceiver")}}, - {Type: Gauge, Name: "kubernetes.node.fs.capacity.bytes", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(0)), Attrs: outAttr("kubeletstatsreceiver")}}, - {Type: Gauge, Name: "kubernetes.node.fs.used.bytes", DP: internal.TestDP{Ts: now, Int: internal.Ptr(int64(0)), Attrs: outAttr("kubeletstatsreceiver")}}, }, }, } { From 602194d05236909d8801f5dfec5427b6e9309450 Mon Sep 17 00:00:00 2001 From: Ishleen Kaur <102962586+ishleenk17@users.noreply.github.com> Date: Thu, 4 Jul 2024 15:05:25 +0530 Subject: [PATCH 3/6] Update remappers/internal/metric.go Co-authored-by: Vishal Raj --- remappers/internal/metric.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/remappers/internal/metric.go b/remappers/internal/metric.go index 341733f..34c243d 100644 --- a/remappers/internal/metric.go +++ b/remappers/internal/metric.go @@ -48,7 +48,7 @@ func AddMetrics( for _, metric := range metrics { //The translated metric should not be generated for a null or negative value - if (metric.IntValue != nil && *metric.IntValue <= 0) || (metric.DoubleValue != nil && *metric.DoubleValue <= 0) { + if (metric.IntValue != nil && *metric.IntValue <= 0) || (metric.DoubleValue != nil && *metric.DoubleValue <= 0 && math.IsInf(*metric.DoubleValue, 0) { continue } From c1ed8d79c9987009d9d78ca5940a7de195c3cd71 Mon Sep 17 00:00:00 2001 From: Ishleen Kaur <102962586+ishleenk17@users.noreply.github.com> Date: Thu, 4 Jul 2024 15:09:08 +0530 Subject: [PATCH 4/6] Update remappers/internal/metric.go Co-authored-by: Vishal Raj --- remappers/internal/metric.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/remappers/internal/metric.go b/remappers/internal/metric.go index 34c243d..96dea9b 100644 --- a/remappers/internal/metric.go +++ b/remappers/internal/metric.go @@ -48,7 +48,7 @@ func AddMetrics( for _, metric := range metrics { //The translated metric should not be generated for a null or negative value - if (metric.IntValue != nil && *metric.IntValue <= 0) || (metric.DoubleValue != nil && *metric.DoubleValue <= 0 && math.IsInf(*metric.DoubleValue, 0) { + if (metric.IntValue != nil && *metric.IntValue <= 0) || (metric.DoubleValue != nil && *metric.DoubleValue <= 0 && math.IsInf(*metric.DoubleValue, 0)) { continue } From a82ea822cbbe4e72a4d7a764b35e3eb980894dbc Mon Sep 17 00:00:00 2001 From: ishleenk17 Date: Thu, 4 Jul 2024 15:16:00 +0530 Subject: [PATCH 5/6] import math package --- remappers/internal/metric.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/remappers/internal/metric.go b/remappers/internal/metric.go index 96dea9b..8712db2 100644 --- a/remappers/internal/metric.go +++ b/remappers/internal/metric.go @@ -18,6 +18,8 @@ package internal import ( + "math" + "github.com/elastic/opentelemetry-lib/remappers/common" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" From 2f544bd9bbf2a5737f56e9f9e75dd59a38feed51 Mon Sep 17 00:00:00 2001 From: ishleenk17 Date: Thu, 4 Jul 2024 15:51:27 +0530 Subject: [PATCH 6/6] Add the correct check --- remappers/internal/metric.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/remappers/internal/metric.go b/remappers/internal/metric.go index 8712db2..2fd3996 100644 --- a/remappers/internal/metric.go +++ b/remappers/internal/metric.go @@ -50,7 +50,7 @@ func AddMetrics( for _, metric := range metrics { //The translated metric should not be generated for a null or negative value - if (metric.IntValue != nil && *metric.IntValue <= 0) || (metric.DoubleValue != nil && *metric.DoubleValue <= 0 && math.IsInf(*metric.DoubleValue, 0)) { + if (metric.IntValue != nil && *metric.IntValue <= 0) || (metric.DoubleValue != nil && (*metric.DoubleValue <= 0 || math.IsInf(*metric.DoubleValue, 0))) { continue }