From c718c12f7e3d01fc8a0d1cdfb78d6a93721c0509 Mon Sep 17 00:00:00 2001 From: Craig Peterson <192540+captncraig@users.noreply.github.com> Date: Tue, 28 Nov 2023 21:08:38 -0500 Subject: [PATCH] use common deploymod code. try to detect homebrew --- internal/useragent/useragent.go | 10 ++++++++-- pkg/usagestats/stats.go | 14 ++------------ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/internal/useragent/useragent.go b/internal/useragent/useragent.go index bb6043f97aa3..a0187acf55a2 100644 --- a/internal/useragent/useragent.go +++ b/internal/useragent/useragent.go @@ -27,7 +27,7 @@ func Get() string { metadata = append(metadata, mode) } metadata = append(metadata, goos) - if op := getDeployMode(); op != "" { + if op := GetDeployMode(); op != "" { metadata = append(metadata, op) } if len(metadata) > 0 { @@ -49,12 +49,18 @@ func getRunMode() string { } } -func getDeployMode() string { +// GetDeployMode returns our best-effort guess at the way Grafana Agent was deployed. +func GetDeployMode() string { op := os.Getenv(deployModeEnv) // only return known modes. Use "binary" as a default catch-all. switch op { case "operator", "helm", "docker", "deb", "rpm", "brew": return op } + // try to detect if executable is in homebrew directory + if path, err := os.Executable(); err == nil && runtime.GOOS == "darwin" && strings.Contains(path, "brew") { + return "brew" + } + // fallback to binary return "binary" } diff --git a/pkg/usagestats/stats.go b/pkg/usagestats/stats.go index 8d4c1fa8d6b4..d3418a5c4bde 100644 --- a/pkg/usagestats/stats.go +++ b/pkg/usagestats/stats.go @@ -7,10 +7,10 @@ import ( "fmt" "io" "net/http" - "os" "runtime" "time" + "github.com/grafana/agent/internal/useragent" "github.com/prometheus/common/version" ) @@ -40,7 +40,7 @@ func sendReport(ctx context.Context, seed *AgentSeed, interval time.Time, metric Arch: runtime.GOARCH, Interval: interval, Metrics: metrics, - DeployMode: getDeployMode(), + DeployMode: useragent.GetDeployMode(), } out, err := json.MarshalIndent(report, "", " ") if err != nil { @@ -66,13 +66,3 @@ func sendReport(ctx context.Context, seed *AgentSeed, interval time.Time, metric } return nil } - -func getDeployMode() string { - op := os.Getenv("AGENT_DEPLOY_MODE") - // only return known modes. Use "binary" as a default catch-all. - switch op { - case "operator", "helm", "docker", "deb", "rpm", "brew": - return op - } - return "binary" -}