diff --git a/satellite/analytics/service.go b/satellite/analytics/service.go index ba2ffc054..8989921fb 100644 --- a/satellite/analytics/service.go +++ b/satellite/analytics/service.go @@ -17,6 +17,7 @@ const ( // Config is a configuration struct for analytics Service. type Config struct { SegmentWriteKey string `help:"segment write key" default:""` + Enabled bool `help:"enable analytics reporting" default:"false"` } // Service for sending analytics. @@ -32,17 +33,23 @@ type Service struct { // NewService creates new service for creating sending analytics. func NewService(log *zap.Logger, config Config, satelliteName string) *Service { - return &Service{ + service := &Service{ log: log, config: config, satelliteName: satelliteName, - - segment: segment.New(config.SegmentWriteKey), } + if config.Enabled { + service.segment = segment.New(config.SegmentWriteKey) + } + return service } // Close closes the Segment client. func (service *Service) Close() error { + if !service.config.Enabled { + return nil + } + return service.segment.Close() } @@ -67,19 +74,27 @@ type TrackCreateUserFields struct { JobTitle string } +func (service *Service) enqueueMessage(message segment.Message) { + if !service.config.Enabled { + return + } + + err := service.segment.Enqueue(message) + if err != nil { + service.log.Error("Error enqueueing message", zap.Error(err)) + } +} + // TrackCreateUser sends an "Account Created" event to Segment. func (service *Service) TrackCreateUser(fields TrackCreateUserFields) { traits := segment.NewTraits() traits.SetName(fields.FullName) traits.SetEmail(fields.Email) - err := service.segment.Enqueue(segment.Identify{ + service.enqueueMessage(segment.Identify{ UserId: fields.ID.String(), Traits: traits, }) - if err != nil { - service.log.Error("Error with identify event", zap.Error(err)) - } props := segment.NewProperties() props.Set("email", fields.Email) @@ -93,12 +108,9 @@ func (service *Service) TrackCreateUser(fields TrackCreateUserFields) { props.Set("job_title", fields.JobTitle) } - err = service.segment.Enqueue(segment.Track{ + service.enqueueMessage(segment.Track{ UserId: fields.ID.String(), Event: eventAccountCreated, Properties: props, }) - if err != nil { - service.log.Error("Error with track event", zap.Error(err)) - } } diff --git a/scripts/testdata/satellite-config.yaml.lock b/scripts/testdata/satellite-config.yaml.lock index a0ba35ea2..296a2ab9b 100755 --- a/scripts/testdata/satellite-config.yaml.lock +++ b/scripts/testdata/satellite-config.yaml.lock @@ -1,6 +1,9 @@ # admin peer http listening address # admin.address: "" +# enable analytics reporting +# analytics.enabled: false + # segment write key # analytics.segment-write-key: ""