diff --git a/cmd/legacy/daemon.go b/cmd/legacy/daemon.go index 3d77aadf11..adf251d911 100644 --- a/cmd/legacy/daemon.go +++ b/cmd/legacy/daemon.go @@ -47,7 +47,7 @@ import ( const ( logFileName = "retina.log" - heartbeatInterval = 5 * time.Minute + heartbeatInterval = 10 * time.Minute nodeNameEnvKey = "NODE_NAME" nodeIPEnvKey = "NODE_IP" diff --git a/pkg/telemetry/telemetry.go b/pkg/telemetry/telemetry.go index 32e5f0f7bb..9e81d5b79d 100644 --- a/pkg/telemetry/telemetry.go +++ b/pkg/telemetry/telemetry.go @@ -9,6 +9,7 @@ import ( "os" "runtime" "runtime/debug" + "strconv" "sync" "time" @@ -20,6 +21,13 @@ import ( var ( client appinsights.TelemetryClient version string + mbShift uint64 = 20 + + // property keys + kernelversion = "kernelversion" + allocatedmem = "allocmem" + sysmem = "sysmem" + goroutines = "goroutines" ) type Telemetry interface { @@ -143,7 +151,20 @@ func (t *TelemetryClient) heartbeat(ctx context.Context) { t.trackWarning(err, "failed to get kernel version") } - t.TrackEvent("heartbeat", map[string]string{"kernelversion": kernelVersion}) + var m runtime.MemStats + runtime.ReadMemStats(&m) + props := map[string]string{ + kernelversion: kernelVersion, + allocatedmem: strconv.FormatUint(bToMb(m.Alloc), 10), + sysmem: strconv.FormatUint(bToMb(m.Sys), 10), + goroutines: strconv.Itoa(runtime.NumGoroutine()), + } + + t.TrackEvent("heartbeat", props) +} + +func bToMb(b uint64) uint64 { + return b >> mbShift } func (t *TelemetryClient) TrackEvent(name string, properties map[string]string) { diff --git a/pkg/telemetry/telemetry_test.go b/pkg/telemetry/telemetry_test.go index f94779d05c..f81cda6fea 100644 --- a/pkg/telemetry/telemetry_test.go +++ b/pkg/telemetry/telemetry_test.go @@ -130,3 +130,7 @@ func TestTelemetryClient_StopPerf(t *testing.T) { }) } } + +func TestBtoMB(t *testing.T) { + require.Equal(t, uint64(1), bToMb(1048576)) +}