diff --git a/ee/query-service/app/server.go b/ee/query-service/app/server.go index 73426fbfa0..f97f5e0da1 100644 --- a/ee/query-service/app/server.go +++ b/ee/query-service/app/server.go @@ -30,6 +30,7 @@ import ( "go.signoz.io/signoz/pkg/query-service/healthcheck" basealm "go.signoz.io/signoz/pkg/query-service/integrations/alertManager" baseint "go.signoz.io/signoz/pkg/query-service/interfaces" + "go.signoz.io/signoz/pkg/query-service/model" pqle "go.signoz.io/signoz/pkg/query-service/pqlEngine" rules "go.signoz.io/signoz/pkg/query-service/rules" "go.signoz.io/signoz/pkg/query-service/telemetry" @@ -271,8 +272,9 @@ func (lrw *loggingResponseWriter) Flush() { func extractDashboardMetaData(path string, r *http.Request) (map[string]interface{}, bool) { pathToExtractBodyFrom := "/api/v2/metrics/query_range" - var requestBody map[string]interface{} + data := map[string]interface{}{} + var postData *model.QueryRangeParamsV2 if path == pathToExtractBodyFrom && (r.Method == "POST") { if r.Body != nil { @@ -282,7 +284,8 @@ func extractDashboardMetaData(path string, r *http.Request) (map[string]interfac } r.Body.Close() // must close r.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes)) - json.Unmarshal(bodyBytes, &requestBody) + json.Unmarshal(bodyBytes, &postData) + } else { return nil, false } @@ -291,31 +294,20 @@ func extractDashboardMetaData(path string, r *http.Request) (map[string]interfac return nil, false } - compositeMetricQuery, compositeMetricQueryExists := requestBody["compositeMetricQuery"] + signozMetricNotFound := false - signozMetricFound := false + if postData != nil { + signozMetricNotFound = telemetry.GetInstance().CheckSigNozMetricsV2(postData.CompositeMetricQuery) - if compositeMetricQueryExists { - compositeMetricQueryMap := compositeMetricQuery.(map[string]interface{}) - - signozMetricFound = telemetry.GetInstance().CheckSigNozMetrics(compositeMetricQueryMap) - - queryType, queryTypeExists := compositeMetricQueryMap["queryType"] - if queryTypeExists { - data["queryType"] = queryType - } - panelType, panelTypeExists := compositeMetricQueryMap["panelType"] - if panelTypeExists { - data["panelType"] = panelType + if postData.CompositeMetricQuery != nil { + data["queryType"] = postData.CompositeMetricQuery.QueryType + data["panelType"] = postData.CompositeMetricQuery.PanelType } + + data["datasource"] = postData.DataSource } - datasource, datasourceExists := requestBody["dataSource"] - if datasourceExists { - data["datasource"] = datasource - } - - if !signozMetricFound { + if signozMetricNotFound { telemetry.GetInstance().AddActiveMetricsUser() telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_DASHBOARDS_METADATA, data, true) } diff --git a/pkg/query-service/app/server.go b/pkg/query-service/app/server.go index e6222449e8..c9505b9391 100644 --- a/pkg/query-service/app/server.go +++ b/pkg/query-service/app/server.go @@ -26,6 +26,7 @@ import ( "go.signoz.io/signoz/pkg/query-service/healthcheck" am "go.signoz.io/signoz/pkg/query-service/integrations/alertManager" "go.signoz.io/signoz/pkg/query-service/interfaces" + "go.signoz.io/signoz/pkg/query-service/model" pqle "go.signoz.io/signoz/pkg/query-service/pqlEngine" "go.signoz.io/signoz/pkg/query-service/rules" "go.signoz.io/signoz/pkg/query-service/telemetry" @@ -237,11 +238,11 @@ func (lrw *loggingResponseWriter) WriteHeader(code int) { func (lrw *loggingResponseWriter) Flush() { lrw.ResponseWriter.(http.Flusher).Flush() } - func extractDashboardMetaData(path string, r *http.Request) (map[string]interface{}, bool) { pathToExtractBodyFrom := "/api/v2/metrics/query_range" - var requestBody map[string]interface{} + data := map[string]interface{}{} + var postData *model.QueryRangeParamsV2 if path == pathToExtractBodyFrom && (r.Method == "POST") { if r.Body != nil { @@ -251,7 +252,8 @@ func extractDashboardMetaData(path string, r *http.Request) (map[string]interfac } r.Body.Close() // must close r.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes)) - json.Unmarshal(bodyBytes, &requestBody) + json.Unmarshal(bodyBytes, &postData) + } else { return nil, false } @@ -260,31 +262,20 @@ func extractDashboardMetaData(path string, r *http.Request) (map[string]interfac return nil, false } - compositeMetricQuery, compositeMetricQueryExists := requestBody["compositeMetricQuery"] + signozMetricNotFound := false - signozMetricFound := false + if postData != nil { + signozMetricNotFound = telemetry.GetInstance().CheckSigNozMetricsV2(postData.CompositeMetricQuery) - if compositeMetricQueryExists { - compositeMetricQueryMap := compositeMetricQuery.(map[string]interface{}) - - signozMetricFound = telemetry.GetInstance().CheckSigNozMetrics(compositeMetricQueryMap) - - queryType, queryTypeExists := compositeMetricQueryMap["queryType"] - if queryTypeExists { - data["queryType"] = queryType - } - panelType, panelTypeExists := compositeMetricQueryMap["panelType"] - if panelTypeExists { - data["panelType"] = panelType + if postData.CompositeMetricQuery != nil { + data["queryType"] = postData.CompositeMetricQuery.QueryType + data["panelType"] = postData.CompositeMetricQuery.PanelType } + + data["datasource"] = postData.DataSource } - datasource, datasourceExists := requestBody["dataSource"] - if datasourceExists { - data["datasource"] = datasource - } - - if !signozMetricFound { + if signozMetricNotFound { telemetry.GetInstance().AddActiveMetricsUser() telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_DASHBOARDS_METADATA, data, true) } diff --git a/pkg/query-service/telemetry/telemetry.go b/pkg/query-service/telemetry/telemetry.go index 83e9155b88..a2b6031fad 100644 --- a/pkg/query-service/telemetry/telemetry.go +++ b/pkg/query-service/telemetry/telemetry.go @@ -2,7 +2,6 @@ package telemetry import ( "context" - "encoding/json" "io/ioutil" "math/rand" "net/http" @@ -73,21 +72,28 @@ func (a *Telemetry) IsSampled() bool { } -func (telemetry *Telemetry) CheckSigNozMetrics(compositeMetricQueryMap map[string]interface{}) bool { +func (telemetry *Telemetry) CheckSigNozMetricsV2(compositeQuery *model.CompositeMetricQuery) bool { - builderQueries, builderQueriesExists := compositeMetricQueryMap["builderQueries"] - if builderQueriesExists { - builderQueriesStr, _ := json.Marshal(builderQueries) - return strings.Contains(string(builderQueriesStr), "signoz_") + signozMetricsNotFound := false + + if compositeQuery.BuilderQueries != nil && len(compositeQuery.BuilderQueries) > 0 { + if !strings.Contains(compositeQuery.BuilderQueries["A"].MetricName, "signoz_") && len(compositeQuery.BuilderQueries["A"].MetricName) > 0 { + signozMetricsNotFound = true + } } - promQueries, promQueriesExists := compositeMetricQueryMap["promQueries"] - if promQueriesExists { - promQueriesStr, _ := json.Marshal(promQueries) - return strings.Contains(string(promQueriesStr), "signoz_") + if compositeQuery.PromQueries != nil && len(compositeQuery.PromQueries) > 0 { + if !strings.Contains(compositeQuery.PromQueries["A"].Query, "signoz_") && len(compositeQuery.PromQueries["A"].Query) > 0 { + signozMetricsNotFound = true + } + } + if compositeQuery.ClickHouseQueries != nil && len(compositeQuery.ClickHouseQueries) > 0 { + if !strings.Contains(compositeQuery.ClickHouseQueries["A"].Query, "signoz_") && len(compositeQuery.ClickHouseQueries["A"].Query) > 0 { + signozMetricsNotFound = true + } } - return false + return signozMetricsNotFound } func (telemetry *Telemetry) AddActiveTracesUser() {