Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions router/core/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -1204,7 +1204,7 @@ func (r *Router) Start(ctx context.Context) error {
}

if err := r.configureUsageTracking(ctx); err != nil {
return err
r.logger.Info("failed to start usage tracking", zap.Error(err))
}

r.trackRouterConfigUsage()
Expand Down Expand Up @@ -1417,13 +1417,16 @@ func (r *Router) configureUsageTracking(ctx context.Context) (err error) {
}
r.usage, err = track.NewUsageTracker(r.logger, cfg)
if err != nil {
return fmt.Errorf("failed to create usage tracker: %w", err)
return err
Comment thread
alepane21 marked this conversation as resolved.
Outdated
}
go r.usage.TrackUptime(ctx)
return nil
}

func (r *Router) trackRouterConfigUsage() {
if r.usage == nil {
return
}
r.usage.TrackRouterConfigUsage(r.Config.Usage())
}

Expand Down
34 changes: 22 additions & 12 deletions router/internal/track/track.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ type UsageTrackerConfig struct {
func NewUsageTracker(log *zap.Logger, config UsageTrackerConfig) (*UsageTracker, error) {
uid, err := uuid.NewUUID()
if err != nil {
log.Error("failed to create uuid", zap.Error(err))
return nil, err
return nil, fmt.Errorf("failed to create uuid: %w", err)
}
tracker := &UsageTracker{
log: log,
Expand All @@ -49,20 +48,18 @@ func NewUsageTracker(log *zap.Logger, config UsageTrackerConfig) (*UsageTracker,
if config.GraphApiToken != "" {
claims, err := jwt.ExtractFederatedGraphTokenClaims(config.GraphApiToken)
if err != nil {
log.Error("failed to extract claims from graph api token", zap.Error(err))
return nil, err
return nil, fmt.Errorf("failed to extract claims from graph api token: %w", err)
}
tracker.organizationID = claims.OrganizationID
tracker.federatedGraphID = claims.FederatedGraphID
}
cfg := posthog.Config{
Logger: tracker.posthogLogger(),
Endpoint: "https://eu.i.posthog.com",
Endpoint: "https://eu.i.posthoga.com",
}
tracker.client, err = posthog.NewWithConfig("phc_h2Efq192t8Jz2eW14BDRt3I8Vrs2WMd3oQ4KOpMu3xT", cfg)
if err != nil {
log.Error("failed to create posthog client", zap.Error(err))
return nil, err
return nil, fmt.Errorf("failed to create posthog client: %w", err)
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
return tracker, nil
}
Expand Down Expand Up @@ -142,6 +139,9 @@ func (u *UsageTracker) findRepositoryURL() {
}

func (u *UsageTracker) TrackExecutionConfigUsage(usage map[string]any) {
if u == nil || u.client == nil {
return
}
props := u.baseProperties()
for k, v := range usage {
props.Set(fmt.Sprintf("execution_config_%s", k), v)
Expand All @@ -153,11 +153,14 @@ func (u *UsageTracker) TrackExecutionConfigUsage(usage map[string]any) {
DistinctId: u.distinctID,
})
if err != nil {
u.log.Error("failed to track event", zap.Error(err))
u.log.Debug("failed to track event", zap.Error(err))
}
}

func (u *UsageTracker) TrackRouterConfigUsage(usage map[string]any) {
if u == nil || u.client == nil {
return
}
props := u.baseProperties()
for k, v := range usage {
props.Set(fmt.Sprintf("router_config_%s", k), v)
Expand All @@ -169,7 +172,7 @@ func (u *UsageTracker) TrackRouterConfigUsage(usage map[string]any) {
Properties: props,
})
if err != nil {
u.log.Error("failed to track event", zap.Error(err))
u.log.Debug("failed to track event", zap.Error(err))
}
}

Expand All @@ -182,7 +185,7 @@ func (p *hogLog) Logf(format string, args ...interface{}) {
}

func (p *hogLog) Errorf(format string, args ...interface{}) {
p.log.Error(fmt.Sprintf(format, args...))
p.log.Debug(fmt.Sprintf(format, args...))
}

func (u *UsageTracker) posthogLogger() posthog.Logger {
Expand All @@ -192,11 +195,18 @@ func (u *UsageTracker) posthogLogger() posthog.Logger {
}

func (u *UsageTracker) Close() {
if u == nil || u.client == nil {
return
}
_ = u.trackRouterUptime(uptimeOptions{closed: true})
_ = u.client.Close()
}

func (u *UsageTracker) TrackUptime(ctx context.Context) {
if u == nil || u.client == nil {
return
}

var err error

u.start = time.Now()
Expand All @@ -206,7 +216,7 @@ func (u *UsageTracker) TrackUptime(ctx context.Context) {

err = u.trackRouterUptime(uptimeOptions{})
if err != nil {
u.log.Error("failed to track event", zap.Error(err))
u.log.Debug("failed to track event", zap.Error(err))
}

for {
Expand All @@ -216,7 +226,7 @@ func (u *UsageTracker) TrackUptime(ctx context.Context) {
case <-tick.C:
err = u.trackRouterUptime(uptimeOptions{})
if err != nil {
u.log.Error("failed to track event", zap.Error(err))
u.log.Debug("failed to track event", zap.Error(err))
}
}
}
Expand Down
Loading