From b988cd7d4cb7dcf00bb568ac5c4ed44d48f35901 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 9 Mar 2023 10:09:02 +0100 Subject: [PATCH 1/2] Log errors from telemetry events --- server/plugin/telemetry.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server/plugin/telemetry.go b/server/plugin/telemetry.go index 813951eca..2f144c4d7 100644 --- a/server/plugin/telemetry.go +++ b/server/plugin/telemetry.go @@ -11,6 +11,13 @@ const ( keysPerPage = 1000 ) +func (p *Plugin) TrackEvent(event string, properties map[string]interface{}) { + err := p.tracker.TrackEvent(event, properties) + if err != nil { + p.API.LogDebug("Error sending telemetry event", "event", event, "error", err.Error()) + } +} + func (p *Plugin) SendDailyTelemetry() { config := p.getConfiguration() @@ -19,7 +26,7 @@ func (p *Plugin) SendDailyTelemetry() { p.API.LogWarn("Failed to get the number of connected users for telemetry", "error", err) } - _ = p.tracker.TrackEvent("stats", map[string]interface{}{ + p.TrackEvent("stats", map[string]interface{}{ "connected_user_count": connectedUserCount, "is_oauth_configured": config.IsOAuthConfigured(), "is_sass": config.IsSASS(), From 9f1a3e230eb8197aa5940fa3895d304527170415 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Tue, 21 Mar 2023 15:58:52 +0100 Subject: [PATCH 2/2] Also log errors from user events --- server/plugin/flows.go | 26 +++++++++++++++----------- server/plugin/telemetry.go | 7 +++++++ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/server/plugin/flows.go b/server/plugin/flows.go index d5c74549d..c480401f6 100644 --- a/server/plugin/flows.go +++ b/server/plugin/flows.go @@ -12,7 +12,6 @@ import ( pluginapi "github.com/mattermost/mattermost-plugin-api" "github.com/mattermost/mattermost-plugin-api/experimental/flow" - "github.com/mattermost/mattermost-plugin-api/experimental/telemetry" "github.com/pkg/errors" "github.com/mattermost/mattermost-server/v6/model" @@ -23,6 +22,11 @@ type PingBroker interface { SubscribePings() <-chan *github.PingEvent } +type Tracker interface { + TrackEvent(event string, properties map[string]interface{}) + TrackUserEvent(event, userID string, properties map[string]interface{}) +} + type FlowManager struct { client *pluginapi.Client pluginURL string @@ -32,7 +36,7 @@ type FlowManager struct { getGitHubClient func(ctx context.Context, userID string) (*github.Client, error) pingBroker PingBroker - tracker telemetry.Tracker + tracker Tracker setupFlow *flow.Flow oauthFlow *flow.Flow @@ -50,7 +54,7 @@ func (p *Plugin) NewFlowManager() *FlowManager { getGitHubClient: p.GetGitHubClient, pingBroker: p.webhookBroker, - tracker: p.tracker, + tracker: p, } fm.setupFlow = fm.newFlow("setup").WithSteps( @@ -223,14 +227,14 @@ func (fm *FlowManager) StartSetupWizard(userID string, delegatedFrom string) err } func (fm *FlowManager) trackStartSetupWizard(userID string, fromInvite bool) { - _ = fm.tracker.TrackUserEvent("setup_wizard_start", userID, map[string]interface{}{ + fm.tracker.TrackUserEvent("setup_wizard_start", userID, map[string]interface{}{ "from_invite": fromInvite, "time": model.GetMillis(), }) } func (fm *FlowManager) trackCompleteSetupWizard(userID string) { - _ = fm.tracker.TrackUserEvent("setup_wizard_complete", userID, map[string]interface{}{ + fm.tracker.TrackUserEvent("setup_wizard_complete", userID, map[string]interface{}{ "time": model.GetMillis(), }) } @@ -249,13 +253,13 @@ func (fm *FlowManager) StartOauthWizard(userID string) error { } func (fm *FlowManager) trackStartOauthWizard(userID string) { - _ = fm.tracker.TrackUserEvent("oauth_wizard_start", userID, map[string]interface{}{ + fm.tracker.TrackUserEvent("oauth_wizard_start", userID, map[string]interface{}{ "time": model.GetMillis(), }) } func (fm *FlowManager) trackCompleteOauthWizard(userID string) { - _ = fm.tracker.TrackUserEvent("oauth_wizard_complete", userID, map[string]interface{}{ + fm.tracker.TrackUserEvent("oauth_wizard_complete", userID, map[string]interface{}{ "time": model.GetMillis(), }) } @@ -591,13 +595,13 @@ func (fm *FlowManager) StartWebhookWizard(userID string) error { } func (fm *FlowManager) trackStartWebhookWizard(userID string) { - _ = fm.tracker.TrackUserEvent("webhook_wizard_start", userID, map[string]interface{}{ + fm.tracker.TrackUserEvent("webhook_wizard_start", userID, map[string]interface{}{ "time": model.GetMillis(), }) } func (fm *FlowManager) trackCompleteWebhookWizard(userID string) { - _ = fm.tracker.TrackUserEvent("webhook_wizard_complete", userID, map[string]interface{}{ + fm.tracker.TrackUserEvent("webhook_wizard_complete", userID, map[string]interface{}{ "time": model.GetMillis(), }) } @@ -755,13 +759,13 @@ func (fm *FlowManager) StartAnnouncementWizard(userID string) error { } func (fm *FlowManager) trackStartAnnouncementWizard(userID string) { - _ = fm.tracker.TrackUserEvent("announcement_wizard_start", userID, map[string]interface{}{ + fm.tracker.TrackUserEvent("announcement_wizard_start", userID, map[string]interface{}{ "time": model.GetMillis(), }) } func (fm *FlowManager) trackCompletAnnouncementWizard(userID string) { - _ = fm.tracker.TrackUserEvent("announcement_wizard_complete", userID, map[string]interface{}{ + fm.tracker.TrackUserEvent("announcement_wizard_complete", userID, map[string]interface{}{ "time": model.GetMillis(), }) } diff --git a/server/plugin/telemetry.go b/server/plugin/telemetry.go index 2f144c4d7..d3e814d1b 100644 --- a/server/plugin/telemetry.go +++ b/server/plugin/telemetry.go @@ -18,6 +18,13 @@ func (p *Plugin) TrackEvent(event string, properties map[string]interface{}) { } } +func (p *Plugin) TrackUserEvent(event, userID string, properties map[string]interface{}) { + err := p.tracker.TrackUserEvent(event, userID, properties) + if err != nil { + p.API.LogDebug("Error sending user telemetry event", "event", event, "error", err.Error()) + } +} + func (p *Plugin) SendDailyTelemetry() { config := p.getConfiguration()