Skip to content

Commit e5aceed

Browse files
authored
[telemetry] add nix.version to sentry and segment (#1469)
## Summary Upon request by @Lagoja, this PR adds nix-version information to the sentry and segment telemetry logging. ## How was it tested? Added a sentryDSN and telemetryKey locally, and built the binary. Added a print-statement to verify the nix-version in the commandEvent to segment is correctly set for me.
1 parent 7d25f3b commit e5aceed

File tree

4 files changed

+25
-3
lines changed

4 files changed

+25
-3
lines changed

internal/boxcli/midcobra/telemetry.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010

1111
"github.com/spf13/cobra"
1212
"github.com/spf13/pflag"
13-
1413
"go.jetpack.io/devbox"
1514
"go.jetpack.io/devbox/internal/boxcli/featureflag"
1615
"go.jetpack.io/devbox/internal/envir"
@@ -54,6 +53,7 @@ func (m *telemetryMiddleware) postRun(cmd *cobra.Command, args []string, runErr
5453
}
5554
meta.Command = subcmd.CommandPath()
5655
meta.CommandFlags = flags
56+
5757
meta.Packages, meta.NixpkgsHash = getPackagesAndCommitHash(cmd)
5858
meta.InShell = envir.IsDevboxShellEnabled()
5959
meta.InBrowser = envir.IsInBrowser()

internal/build/build.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,14 @@ var (
1717
Commit = "none"
1818
CommitDate = "unknown"
1919

20-
SentryDSN = "" // Disabled by default
21-
TelemetryKey = "" // Disabled by default
20+
// SentryDSN is injected in the build from
21+
// https://jetpack-io.sentry.io/settings/projects/devbox/keys/
22+
// It is disabled by default.
23+
SentryDSN = ""
24+
// TelemetryKey is the Segment Write Key
25+
// https://segment.com/docs/connections/sources/catalog/libraries/server/go/quickstart/
26+
// It is disabled by default.
27+
TelemetryKey = ""
2228
)
2329

2430
// User-presentable names of operating systems supported by Devbox.

internal/telemetry/segment.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"time"
1212

1313
segment "github.com/segmentio/analytics-go"
14+
"go.jetpack.io/devbox/internal/nix"
1415

1516
"go.jetpack.io/devbox/internal/build"
1617
"go.jetpack.io/devbox/internal/envir"
@@ -32,6 +33,11 @@ func initSegmentClient() bool {
3233
}
3334

3435
func newTrackMessage(name string, meta Metadata) *segment.Track {
36+
nixVersion, err := nix.Version()
37+
if err != nil {
38+
nixVersion = "unknown"
39+
}
40+
3541
dur := time.Since(procStartTime)
3642
if !meta.CommandStart.IsZero() {
3743
dur = time.Since(meta.CommandStart)
@@ -63,6 +69,7 @@ func newTrackMessage(name string, meta Metadata) *segment.Track {
6369
"packages": meta.Packages,
6470
"shell": os.Getenv(envir.Shell),
6571
"shell_access": shellAccess(),
72+
"nix_version": nixVersion,
6673
},
6774
}
6875
}

internal/telemetry/telemetry.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/google/uuid"
2525
"github.com/pkg/errors"
2626
segment "github.com/segmentio/analytics-go"
27+
"go.jetpack.io/devbox/internal/nix"
2728

2829
"go.jetpack.io/devbox/internal/build"
2930
"go.jetpack.io/devbox/internal/envir"
@@ -117,6 +118,11 @@ func Error(err error, meta Metadata) {
117118
return
118119
}
119120

121+
nixVersion, err := nix.Version()
122+
if err != nil {
123+
nixVersion = "unknown"
124+
}
125+
120126
event := &sentry.Event{
121127
EventID: sentry.EventID(ExecutionID),
122128
Level: sentry.LevelError,
@@ -133,6 +139,9 @@ func Error(err error, meta Metadata) {
133139
"name": "Go",
134140
"version": strings.TrimPrefix(runtime.Version(), "go"),
135141
},
142+
"nix": {
143+
"version": nixVersion,
144+
},
136145
},
137146
}
138147
if meta.Command != "" {

0 commit comments

Comments
 (0)