Browse Source

Add telemetry for EE and FreeTier flags

cameronts 2 years ago
parent
commit
c97d6cfd66
3 changed files with 25 additions and 1 deletions
  1. 2 0
      ee/initialize.go
  2. 2 0
      ee/util.go
  3. 21 1
      logic/telemetry.go

+ 2 - 0
ee/initialize.go

@@ -22,8 +22,10 @@ func InitEE() {
 		ValidateLicense()
 		if Limits.FreeTier {
 			logger.Log(0, "proceeding with Free Tier license")
+			logic.SetFreeTierForTelemetry(true)
 		} else {
 			logger.Log(0, "proceeding with Paid Tier license")
+			logic.SetFreeTierForTelemetry(false)
 		}
 		// == End License Handling ==
 		AddLicenseHooks()

+ 2 - 0
ee/util.go

@@ -10,12 +10,14 @@ var isEnterprise bool
 
 // IsEnterprise - checks if enterprise binary or not
 func IsEnterprise() bool {
+	logic.SetEEForTelemetry(isEnterprise)
 	return isEnterprise
 }
 
 // setIsEnterprise - sets server to use enterprise features
 func setIsEnterprise() {
 	isEnterprise = true
+	logic.SetEEForTelemetry(isEnterprise)
 }
 
 // base64encode - base64 encode helper function

+ 21 - 1
logic/telemetry.go

@@ -10,12 +10,28 @@ import (
 	"github.com/posthog/posthog-go"
 )
 
+// flags to keep for telemetry
+var isFreeTier bool
+var isEE bool
+
 // posthog_pub_key - Key for sending data to PostHog
 const posthog_pub_key = "phc_1vEXhPOA1P7HP5jP2dVU9xDTUqXHAelmtravyZ1vvES"
 
 // posthog_endpoint - Endpoint of PostHog server
 const posthog_endpoint = "https://app.posthog.com"
 
+// setEEForTelemetry - store EE flag without having an import cycle when used for telemetry
+// (as the ee package needs the logic package as currently written).
+func SetEEForTelemetry(eeFlag bool) {
+	isEE = eeFlag
+}
+
+// setFreeTierForTelemetry - store free tier flag without having an import cycle when used for telemetry
+// (as the ee package needs the logic package as currently written).
+func SetFreeTierForTelemetry(freeTierFlag bool) {
+	isFreeTier = freeTierFlag
+}
+
 // sendTelemetry - gathers telemetry data and sends to posthog
 func sendTelemetry() error {
 	if servercfg.Telemetry() == "off" {
@@ -54,7 +70,9 @@ func sendTelemetry() error {
 			Set("freebsd", d.Count.FreeBSD).
 			Set("docker", d.Count.Docker).
 			Set("k8s", d.Count.K8S).
-			Set("version", d.Version),
+			Set("version", d.Version).
+			Set("is_ee", isEE).
+			Set("is_free_tier", isFreeTier),
 	})
 }
 
@@ -144,6 +162,8 @@ type telemetryData struct {
 	Networks   int
 	Servers    int
 	Version    string
+	IsEE       bool
+	IsFreeTier bool
 }
 
 // clientCount - What types of netclients we're tallying