diff --git a/pkg/query-service/model/response.go b/pkg/query-service/model/response.go index d13ebd0cdb..7e8e883164 100644 --- a/pkg/query-service/model/response.go +++ b/pkg/query-service/model/response.go @@ -638,6 +638,12 @@ type AlertsInfo struct { LogsBasedAlerts int `json:"logsBasedAlerts"` MetricBasedAlerts int `json:"metricBasedAlerts"` TracesBasedAlerts int `json:"tracesBasedAlerts"` + SlackChannels int `json:"slackChannels"` + WebHookChannels int `json:"webHookChannels"` + PagerDutyChannels int `json:"pagerDutyChannels"` + OpsGenieChannels int `json:"opsGenieChannels"` + EmailChannels int `json:"emailChannels"` + MSTeamsChannels int `json:"microsoftTeamsChannels"` } type SavedViewsInfo struct { diff --git a/pkg/query-service/telemetry/telemetry.go b/pkg/query-service/telemetry/telemetry.go index e8675b3b90..8cfa7aaec4 100644 --- a/pkg/query-service/telemetry/telemetry.go +++ b/pkg/query-service/telemetry/telemetry.go @@ -293,6 +293,22 @@ func createTelemetry() { if err == nil { channels, err := telemetry.reader.GetChannels() if err == nil { + for _, channel := range *channels { + switch channel.Type { + case "slack": + alertsInfo.SlackChannels++ + case "webhook": + alertsInfo.WebHookChannels++ + case "pagerduty": + alertsInfo.PagerDutyChannels++ + case "opsgenie": + alertsInfo.OpsGenieChannels++ + case "email": + alertsInfo.EmailChannels++ + case "msteams": + alertsInfo.MSTeamsChannels++ + } + } savedViewsInfo, err := telemetry.reader.GetSavedViewsInfo(ctx) if err == nil { dashboardsAlertsData := map[string]interface{}{ @@ -309,6 +325,12 @@ func createTelemetry() { "totalSavedViews": savedViewsInfo.TotalSavedViews, "logsSavedViews": savedViewsInfo.LogsSavedViews, "tracesSavedViews": savedViewsInfo.TracesSavedViews, + "slackChannels": alertsInfo.SlackChannels, + "webHookChannels": alertsInfo.WebHookChannels, + "pagerDutyChannels": alertsInfo.PagerDutyChannels, + "opsGenieChannels": alertsInfo.OpsGenieChannels, + "emailChannels": alertsInfo.EmailChannels, + "msteamsChannels": alertsInfo.MSTeamsChannels, } // send event only if there are dashboards or alerts or channels if (dashboardsInfo.TotalDashboards > 0 || alertsInfo.TotalAlerts > 0 || len(*channels) > 0 || savedViewsInfo.TotalSavedViews > 0) && apiErr == nil {