From d732f8ba425a17d063197ee626d52572125d81dd Mon Sep 17 00:00:00 2001 From: Ekansh Gupta Date: Tue, 27 May 2025 23:12:08 +0530 Subject: [PATCH] fix: updated the service name in exceptions filter (#8069) * fix: updated the service name in exceptions filter * fix: updated the service name in exceptions filter * fix: updated the service name in exceptions filter --- pkg/query-service/utils/testutils.go | 1 + pkg/signoz/provider.go | 1 + .../035_update_api_monitoring_filters.go | 103 ++++++++++++++++++ pkg/types/quickfiltertypes/filter.go | 2 +- 4 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 pkg/sqlmigration/035_update_api_monitoring_filters.go diff --git a/pkg/query-service/utils/testutils.go b/pkg/query-service/utils/testutils.go index b7cf1fbcbc..5cd7960786 100644 --- a/pkg/query-service/utils/testutils.go +++ b/pkg/query-service/utils/testutils.go @@ -66,6 +66,7 @@ func NewTestSqliteDB(t *testing.T) (sqlStore sqlstore.SQLStore, testDBFilePath s sqlmigration.NewUpdateQuickFiltersFactory(sqlStore), sqlmigration.NewAuthRefactorFactory(sqlStore), sqlmigration.NewMigratePATToFactorAPIKey(sqlStore), + sqlmigration.NewUpdateApiMonitoringFiltersFactory(sqlStore), ), ) if err != nil { diff --git a/pkg/signoz/provider.go b/pkg/signoz/provider.go index d5363edd68..831d2e2a62 100644 --- a/pkg/signoz/provider.go +++ b/pkg/signoz/provider.go @@ -82,6 +82,7 @@ func NewSQLMigrationProviderFactories(sqlstore sqlstore.SQLStore) factory.NamedM sqlmigration.NewAuthRefactorFactory(sqlstore), sqlmigration.NewUpdateLicenseFactory(sqlstore), sqlmigration.NewMigratePATToFactorAPIKey(sqlstore), + sqlmigration.NewUpdateApiMonitoringFiltersFactory(sqlstore), ) } diff --git a/pkg/sqlmigration/035_update_api_monitoring_filters.go b/pkg/sqlmigration/035_update_api_monitoring_filters.go new file mode 100644 index 0000000000..a1efc60766 --- /dev/null +++ b/pkg/sqlmigration/035_update_api_monitoring_filters.go @@ -0,0 +1,103 @@ +package sqlmigration + +import ( + "context" + "database/sql" + "time" + + "github.com/SigNoz/signoz/pkg/factory" + "github.com/SigNoz/signoz/pkg/sqlstore" + "github.com/SigNoz/signoz/pkg/types/quickfiltertypes" + "github.com/SigNoz/signoz/pkg/valuer" + "github.com/uptrace/bun" + "github.com/uptrace/bun/migrate" +) + +type updateApiMonitoringFilters struct { + store sqlstore.SQLStore +} + +func NewUpdateApiMonitoringFiltersFactory(store sqlstore.SQLStore) factory.ProviderFactory[SQLMigration, Config] { + return factory.NewProviderFactory(factory.MustNewName("update_api_monitoring_filters"), func(ctx context.Context, ps factory.ProviderSettings, c Config) (SQLMigration, error) { + return newUpdateApiMonitoringFilters(ctx, ps, c, store) + }) +} + +func newUpdateApiMonitoringFilters(_ context.Context, _ factory.ProviderSettings, _ Config, store sqlstore.SQLStore) (SQLMigration, error) { + return &updateApiMonitoringFilters{ + store: store, + }, nil +} + +func (migration *updateApiMonitoringFilters) Register(migrations *migrate.Migrations) error { + if err := migrations.Register(migration.Up, migration.Down); err != nil { + return err + } + + return nil +} + +func (migration *updateApiMonitoringFilters) Up(ctx context.Context, db *bun.DB) error { + tx, err := db.BeginTx(ctx, nil) + if err != nil { + return err + } + + defer func() { + _ = tx.Rollback() + }() + + // Get all organization IDs as strings + var orgIDs []string + err = tx.NewSelect(). + Table("organizations"). + Column("id"). + Scan(ctx, &orgIDs) + if err != nil { + if err == sql.ErrNoRows { + if err := tx.Commit(); err != nil { + return err + } + return nil + } + return err + } + + for _, orgID := range orgIDs { + // Get the updated default quick filters which includes the new API monitoring filters + storableQuickFilters, err := quickfiltertypes.NewDefaultQuickFilter(valuer.MustNewUUID(orgID)) + if err != nil { + return err + } + + // Find the API monitoring filter from the storable quick filters + var apiMonitoringFilterJSON string + for _, filter := range storableQuickFilters { + if filter.Signal == quickfiltertypes.SignalApiMonitoring { + apiMonitoringFilterJSON = filter.Filter + break + } + } + + if apiMonitoringFilterJSON != "" { + _, err = tx.NewUpdate(). + Table("quick_filter"). + Set("filter = ?, updated_at = ?", apiMonitoringFilterJSON, time.Now()). + Where("signal = ? AND org_id = ?", quickfiltertypes.SignalApiMonitoring, orgID). + Exec(ctx) + + if err != nil { + return err + } + } + } + + if err := tx.Commit(); err != nil { + return err + } + return nil +} + +func (migration *updateApiMonitoringFilters) Down(ctx context.Context, db *bun.DB) error { + return nil +} diff --git a/pkg/types/quickfiltertypes/filter.go b/pkg/types/quickfiltertypes/filter.go index 9d00833c7e..ac436a451b 100644 --- a/pkg/types/quickfiltertypes/filter.go +++ b/pkg/types/quickfiltertypes/filter.go @@ -164,7 +164,7 @@ func NewDefaultQuickFilter(orgID valuer.UUID) ([]*StorableQuickFilter, error) { apiMonitoringFilters := []map[string]interface{}{ {"key": "deployment.environment", "dataType": "string", "type": "resource"}, - {"key": "service.name", "dataType": "string", "type": "tag"}, + {"key": "service.name", "dataType": "string", "type": "resource"}, {"key": "rpc.method", "dataType": "string", "type": "tag"}, }