diff --git a/backend/app/api/main.go b/backend/app/api/main.go index bfb04ed0..03d98fe6 100644 --- a/backend/app/api/main.go +++ b/backend/app/api/main.go @@ -404,11 +404,11 @@ func run(cfg *config.Config) error { if cfg.Options.AllowAnalytics { runner.AddPlugin(NewTask("send-analytics", time.Duration(24)*time.Hour, func(ctx context.Context) { log.Debug().Msg("running send analytics") - analytics.Send(version, build()) + err := analytics.Send(version, build()) if err != nil { log.Error(). Err(err). - Msg("failed to send analytics") + Msg("failed to send scheduled analytics") } })) } diff --git a/backend/internal/sys/analytics/analytics.go b/backend/internal/sys/analytics/analytics.go index 8b88d348..5138c6af 100644 --- a/backend/internal/sys/analytics/analytics.go +++ b/backend/internal/sys/analytics/analytics.go @@ -11,6 +11,8 @@ import ( "github.com/rs/zerolog/log" ) +var startTime = time.Now() + type Data struct { Domain string `json:"domain"` Name string `json:"name"` @@ -18,7 +20,7 @@ type Data struct { Props map[string]interface{} `json:"props"` } -func Send(version, buildInfo string) { +func Send(version, buildInfo string) error { hostData, _ := host.Info() analytics := Data{ Domain: "homebox.software", @@ -32,18 +34,19 @@ func Send(version, buildInfo string) { "platform_version": hostData.PlatformVersion, "kernel_arch": hostData.KernelArch, "virt_type": hostData.VirtualizationSystem, + "uptime_sec": time.Since(startTime).Seconds(), }, } jsonBody, err := json.Marshal(analytics) if err != nil { log.Error().Err(err).Msg("failed to marshal analytics data") - return + return err } bodyReader := bytes.NewReader(jsonBody) req, err := http.NewRequest("POST", "https://a.sysadmins.zone/api/event", bodyReader) if err != nil { log.Error().Err(err).Msg("failed to create analytics request") - return + return err } req.Header.Set("Content-Type", "application/json") @@ -56,7 +59,7 @@ func Send(version, buildInfo string) { res, err := client.Do(req) if err != nil { log.Error().Err(err).Msg("failed to send analytics request") - return + return err } defer func() { @@ -65,4 +68,5 @@ func Send(version, buildInfo string) { log.Error().Err(err).Msg("failed to close response body") } }() + return nil }