diff --git a/pkg/query-service/app/clickhouseReader/reader.go b/pkg/query-service/app/clickhouseReader/reader.go index 1d3116e24c..81a91c7e0a 100644 --- a/pkg/query-service/app/clickhouseReader/reader.go +++ b/pkg/query-service/app/clickhouseReader/reader.go @@ -3291,7 +3291,9 @@ func (r *ClickHouseReader) GetLogs(ctx context.Context, params *model.LogsFilter data := map[string]interface{}{ "lenFilters": lenFilters, } - telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_LOGS_FILTERS, data) + if lenFilters != 0 { + telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_LOGS_FILTERS, data) + } query := fmt.Sprintf("%s from %s.%s", constants.LogsSQLSelect, r.logsDB, r.logsTable) @@ -3329,7 +3331,9 @@ func (r *ClickHouseReader) TailLogs(ctx context.Context, client *model.LogsTailC data := map[string]interface{}{ "lenFilters": lenFilters, } - telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_LOGS_FILTERS, data) + if lenFilters != 0 { + telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_LOGS_FILTERS, data) + } if err != nil { client.Error <- err @@ -3417,7 +3421,9 @@ func (r *ClickHouseReader) AggregateLogs(ctx context.Context, params *model.Logs data := map[string]interface{}{ "lenFilters": lenFilters, } - telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_LOGS_FILTERS, data) + if lenFilters != 0 { + telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_LOGS_FILTERS, data) + } query := "" if params.GroupBy != "" { diff --git a/pkg/query-service/app/server.go b/pkg/query-service/app/server.go index 3f00483d10..e4f1ea0b02 100644 --- a/pkg/query-service/app/server.go +++ b/pkg/query-service/app/server.go @@ -256,10 +256,14 @@ func extractDashboardMetaData(path string, r *http.Request) (map[string]interfac compositeMetricQuery, compositeMetricQueryExists := requestBody["compositeMetricQuery"] compositeMetricQueryMap := compositeMetricQuery.(map[string]interface{}) + signozMetricFound := false + if compositeMetricQueryExists { + signozMetricFound = telemetry.GetInstance().CheckSigNozMetrics(compositeMetricQueryMap) queryType, queryTypeExists := compositeMetricQueryMap["queryType"] if queryTypeExists { data["queryType"] = queryType + } panelType, panelTypeExists := compositeMetricQueryMap["panelType"] if panelTypeExists { @@ -272,15 +276,18 @@ func extractDashboardMetaData(path string, r *http.Request) (map[string]interfac data["datasource"] = datasource } - telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_DASHBOARDS_METADATA, data, false) + if !signozMetricFound { + telemetry.GetInstance().AddActiveMetricsUser() + telemetry.GetInstance().SendEvent(telemetry.TELEMETRY_EVENT_DASHBOARDS_METADATA, data, false) + } return data, true } -func getActiveMetricsOrLogs(path string, r *http.Request) { - if path == "/api/v1/dashboards/{uuid}" { - telemetry.GetInstance().AddActiveMetricsUser() - } +func getActiveLogs(path string, r *http.Request) { + // if path == "/api/v1/dashboards/{uuid}" { + // telemetry.GetInstance().AddActiveMetricsUser() + // } if path == "/api/v1/logs" { hasFilters := len(r.URL.Query().Get("q")) if hasFilters > 0 { @@ -297,7 +304,7 @@ func (s *Server) analyticsMiddleware(next http.Handler) http.Handler { path, _ := route.GetPathTemplate() dashboardMetadata, metadataExists := extractDashboardMetaData(path, r) - getActiveMetricsOrLogs(path, r) + getActiveLogs(path, r) lrw := NewLoggingResponseWriter(w) next.ServeHTTP(lrw, r) diff --git a/pkg/query-service/dao/sqlite/connection.go b/pkg/query-service/dao/sqlite/connection.go index 6cbe164951..a1b7842bb3 100644 --- a/pkg/query-service/dao/sqlite/connection.go +++ b/pkg/query-service/dao/sqlite/connection.go @@ -125,6 +125,13 @@ func (mds *ModelDaoSqlite) initializeOrgPreferences(ctx context.Context) error { // set telemetry fields from userPreferences telemetry.GetInstance().SetDistinctId(org.Id) + users, _ := mds.GetUsers(ctx) + countUsers := len(users) + telemetry.GetInstance().SetCountUsers(int8(countUsers)) + if countUsers > 0 { + telemetry.GetInstance().SetCompanyDomain(users[countUsers-1].Email) + } + return nil } diff --git a/pkg/query-service/telemetry/telemetry.go b/pkg/query-service/telemetry/telemetry.go index f9217f11a7..4d01970f76 100644 --- a/pkg/query-service/telemetry/telemetry.go +++ b/pkg/query-service/telemetry/telemetry.go @@ -2,6 +2,7 @@ package telemetry import ( "context" + "encoding/json" "io/ioutil" "math/rand" "net/http" @@ -69,6 +70,23 @@ func (a *Telemetry) IsSampled() bool { } +func (telemetry *Telemetry) CheckSigNozMetrics(compositeMetricQueryMap map[string]interface{}) bool { + + builderQueries, builderQueriesExists := compositeMetricQueryMap["builderQueries"] + if builderQueriesExists { + builderQueriesStr, _ := json.Marshal(builderQueries) + return strings.Contains(string(builderQueriesStr), "signoz_") + } + + promQueries, promQueriesExists := compositeMetricQueryMap["promQueries"] + if promQueriesExists { + promQueriesStr, _ := json.Marshal(promQueries) + return strings.Contains(string(promQueriesStr), "signoz_") + } + + return false +} + func (telemetry *Telemetry) AddActiveTracesUser() { telemetry.activeUser["traces"] = 1 } @@ -92,6 +110,7 @@ type Telemetry struct { maxRandInt int rateLimits map[string]int8 activeUser map[string]int8 + countUsers int8 } func createTelemetry() { @@ -152,11 +171,19 @@ func createTelemetry() { getLogsInfoInLastHeartBeatInterval, _ := telemetry.reader.GetLogsInfoInLastHeartBeatInterval(context.Background()) + traceTTL, _ := telemetry.reader.GetTTL(context.Background(), &model.GetTTLParams{Type: constants.TraceTTL}) + metricsTTL, _ := telemetry.reader.GetTTL(context.Background(), &model.GetTTLParams{Type: constants.MetricsTTL}) + logsTTL, _ := telemetry.reader.GetTTL(context.Background(), &model.GetTTLParams{Type: constants.LogsTTL}) + data := map[string]interface{}{ "totalSpans": totalSpans, "spansInLastHeartBeatInterval": spansInLastHeartBeatInterval, "getSamplesInfoInLastHeartBeatInterval": getSamplesInfoInLastHeartBeatInterval, "getLogsInfoInLastHeartBeatInterval": getLogsInfoInLastHeartBeatInterval, + "countUsers": telemetry.countUsers, + "metricsTTLStatus": metricsTTL.Status, + "tracesTTLStatus": traceTTL.Status, + "logsTTLStatus": logsTTL.Status, } for key, value := range tsInfo { data[key] = value @@ -197,7 +224,7 @@ func (a *Telemetry) IdentifyUser(user *model.User) { if !a.isTelemetryEnabled() || a.isTelemetryAnonymous() { return } - a.setCompanyDomain(user.Email) + a.SetCompanyDomain(user.Email) a.operator.Enqueue(analytics.Identify{ UserId: a.ipAddress, @@ -213,7 +240,11 @@ func (a *Telemetry) IdentifyUser(user *model.User) { } -func (a *Telemetry) setCompanyDomain(email string) { +func (a *Telemetry) SetCountUsers(countUsers int8) { + a.countUsers = countUsers +} + +func (a *Telemetry) SetCompanyDomain(email string) { email_split := strings.Split(email, "@") if len(email_split) != 2 {