From 16dc90bbd1a414e2e10e82f65895ce2d9642dcf1 Mon Sep 17 00:00:00 2001 From: Srikanth Chekuri Date: Fri, 2 Aug 2024 18:45:02 +0530 Subject: [PATCH] =?UTF-8?q?chore(telemetry):=20add=20telemetry=20for=20met?= =?UTF-8?q?rics=20query=20type=20and=20count=20prom=E2=80=A6=20(#5627)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/query-service/model/response.go | 24 ++++++++++++++---------- pkg/query-service/rules/db.go | 16 ++++++++++++++++ pkg/query-service/telemetry/telemetry.go | 4 ++++ 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/pkg/query-service/model/response.go b/pkg/query-service/model/response.go index 7e8e883164..eb979642da 100644 --- a/pkg/query-service/model/response.go +++ b/pkg/query-service/model/response.go @@ -634,16 +634,20 @@ type TagsInfo struct { } type AlertsInfo struct { - TotalAlerts int `json:"totalAlerts"` - 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"` + TotalAlerts int `json:"totalAlerts"` + 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"` + MetricsBuilderQueries int `json:"metricsBuilderQueries"` + MetricsClickHouseQueries int `json:"metricsClickHouseQueries"` + MetricsPrometheusQueries int `json:"metricsPrometheusQueries"` + SpanMetricsPrometheusQueries int `json:"spanMetricsPrometheusQueries"` } type SavedViewsInfo struct { diff --git a/pkg/query-service/rules/db.go b/pkg/query-service/rules/db.go index 4d51d462dd..64a35e3eb9 100644 --- a/pkg/query-service/rules/db.go +++ b/pkg/query-service/rules/db.go @@ -5,12 +5,14 @@ import ( "encoding/json" "fmt" "strconv" + "strings" "time" "github.com/jmoiron/sqlx" "go.signoz.io/signoz/pkg/query-service/auth" "go.signoz.io/signoz/pkg/query-service/common" "go.signoz.io/signoz/pkg/query-service/model" + v3 "go.signoz.io/signoz/pkg/query-service/model/v3" "go.uber.org/zap" ) @@ -322,6 +324,20 @@ func (r *ruleDB) GetAlertsInfo(ctx context.Context) (*model.AlertsInfo, error) { alertsInfo.LogsBasedAlerts = alertsInfo.LogsBasedAlerts + 1 } else if rule.AlertType == "METRIC_BASED_ALERT" { alertsInfo.MetricBasedAlerts = alertsInfo.MetricBasedAlerts + 1 + if rule.RuleCondition != nil && rule.RuleCondition.CompositeQuery != nil { + if rule.RuleCondition.CompositeQuery.QueryType == v3.QueryTypeBuilder { + alertsInfo.MetricsBuilderQueries = alertsInfo.MetricsBuilderQueries + 1 + } else if rule.RuleCondition.CompositeQuery.QueryType == v3.QueryTypeClickHouseSQL { + alertsInfo.MetricsClickHouseQueries = alertsInfo.MetricsClickHouseQueries + 1 + } else if rule.RuleCondition.CompositeQuery.QueryType == v3.QueryTypePromQL { + alertsInfo.MetricsPrometheusQueries = alertsInfo.MetricsPrometheusQueries + 1 + for _, query := range rule.RuleCondition.CompositeQuery.PromQueries { + if strings.Contains(query.Query, "signoz_") { + alertsInfo.SpanMetricsPrometheusQueries = alertsInfo.SpanMetricsPrometheusQueries + 1 + } + } + } + } } else if rule.AlertType == "TRACES_BASED_ALERT" { alertsInfo.TracesBasedAlerts = alertsInfo.TracesBasedAlerts + 1 } diff --git a/pkg/query-service/telemetry/telemetry.go b/pkg/query-service/telemetry/telemetry.go index 8cfa7aaec4..2c9dceb910 100644 --- a/pkg/query-service/telemetry/telemetry.go +++ b/pkg/query-service/telemetry/telemetry.go @@ -331,6 +331,10 @@ func createTelemetry() { "opsGenieChannels": alertsInfo.OpsGenieChannels, "emailChannels": alertsInfo.EmailChannels, "msteamsChannels": alertsInfo.MSTeamsChannels, + "metricsBuilderQueries": alertsInfo.MetricsBuilderQueries, + "metricsClickHouseQueries": alertsInfo.MetricsClickHouseQueries, + "metricsPrometheusQueries": alertsInfo.MetricsPrometheusQueries, + "spanMetricsPrometheusQueries": alertsInfo.SpanMetricsPrometheusQueries, } // 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 {