From b4c0143cca13c253f075d0c83f997f4b3607e773 Mon Sep 17 00:00:00 2001 From: akartasov Date: Mon, 30 Jan 2023 15:00:34 -0300 Subject: [PATCH 1/3] feat (engine): add system stats to the EngineStarted telemetry event (#461) --- engine/cmd/database-lab/main.go | 6 ++++++ engine/go.mod | 1 + engine/go.sum | 2 ++ engine/internal/telemetry/events.go | 7 +++++++ 4 files changed, 16 insertions(+) diff --git a/engine/cmd/database-lab/main.go b/engine/cmd/database-lab/main.go index d4a63f2af..c487c6680 100644 --- a/engine/cmd/database-lab/main.go +++ b/engine/cmd/database-lab/main.go @@ -13,11 +13,13 @@ import ( "fmt" "os" "os/signal" + "runtime" "strings" "syscall" "time" "github.com/docker/docker/client" + "github.com/pbnjay/memory" "github.com/pkg/errors" "gitlab.com/postgres-ai/database-lab/v3/internal/cloning" @@ -162,6 +164,10 @@ func main() { DBVersion: provisioner.DetectDBVersion(), Pools: pm.CollectPoolStat(), Restore: retrievalSvc.ReportState(), + System: telemetry.System{ + CPU: runtime.NumCPU(), + TotalMemory: memory.TotalMemory(), + }, }) embeddedUI := embeddedui.New(cfg.EmbeddedUI, engProps, runner, docker) diff --git a/engine/go.mod b/engine/go.mod index de3c2b64a..cada63aa6 100644 --- a/engine/go.mod +++ b/engine/go.mod @@ -65,6 +65,7 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.0.2 // indirect github.com/opencontainers/runc v1.1.0 // indirect + github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.0.1 // indirect github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect diff --git a/engine/go.sum b/engine/go.sum index 861cc0ab5..3a570cb9f 100644 --- a/engine/go.sum +++ b/engine/go.sum @@ -580,6 +580,8 @@ github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xA github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= diff --git a/engine/internal/telemetry/events.go b/engine/internal/telemetry/events.go index f85823aa3..2b79102c5 100644 --- a/engine/internal/telemetry/events.go +++ b/engine/internal/telemetry/events.go @@ -15,6 +15,7 @@ type EngineStarted struct { DBVersion string `json:"db_version"` Pools PoolStat `json:"pools"` Restore Restore `json:"restore"` + System System `json:"system"` } // PoolStat describes the pool stat data. @@ -32,6 +33,12 @@ type Restore struct { Jobs []string `json:"jobs"` } +// System describes system stats of the machine where the DLE instance runs. +type System struct { + CPU int `json:"cpu"` + TotalMemory uint64 `json:"totalMemory"` +} + // EngineStopped describes the engine stop event. type EngineStopped struct { Uptime float64 `json:"uptime"` -- GitLab From 36a0c561e1ce99b0a1d30d4227ab853fe5983b64 Mon Sep 17 00:00:00 2001 From: akartasov Date: Mon, 30 Jan 2023 15:06:11 -0300 Subject: [PATCH 2/3] use snake case in payload of the telemetry event --- engine/internal/telemetry/events.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/internal/telemetry/events.go b/engine/internal/telemetry/events.go index 2b79102c5..e3bfab236 100644 --- a/engine/internal/telemetry/events.go +++ b/engine/internal/telemetry/events.go @@ -36,7 +36,7 @@ type Restore struct { // System describes system stats of the machine where the DLE instance runs. type System struct { CPU int `json:"cpu"` - TotalMemory uint64 `json:"totalMemory"` + TotalMemory uint64 `json:"total_memory"` } // EngineStopped describes the engine stop event. -- GitLab From a8ef835a43ab9aa154d8656d3721a54e06b1e667 Mon Sep 17 00:00:00 2001 From: akartasov Date: Mon, 30 Jan 2023 15:11:11 -0300 Subject: [PATCH 3/3] add info about db engine --- engine/cmd/database-lab/main.go | 1 + engine/internal/telemetry/events.go | 1 + 2 files changed, 2 insertions(+) diff --git a/engine/cmd/database-lab/main.go b/engine/cmd/database-lab/main.go index c487c6680..e3cb27a5e 100644 --- a/engine/cmd/database-lab/main.go +++ b/engine/cmd/database-lab/main.go @@ -161,6 +161,7 @@ func main() { tm.SendEvent(ctx, telemetry.EngineStartedEvent, telemetry.EngineStarted{ EngineVersion: version.GetVersion(), + DBEngine: cfg.Global.Engine, DBVersion: provisioner.DetectDBVersion(), Pools: pm.CollectPoolStat(), Restore: retrievalSvc.ReportState(), diff --git a/engine/internal/telemetry/events.go b/engine/internal/telemetry/events.go index e3bfab236..2f341d577 100644 --- a/engine/internal/telemetry/events.go +++ b/engine/internal/telemetry/events.go @@ -12,6 +12,7 @@ import ( // EngineStarted describes the engine start event. type EngineStarted struct { EngineVersion string `json:"engine_version"` + DBEngine string `json:"db_engine"` DBVersion string `json:"db_version"` Pools PoolStat `json:"pools"` Restore Restore `json:"restore"` -- GitLab