diff --git a/admin/commands/inventory/list_agents.go b/admin/commands/inventory/list_agents.go index 3c30df270e..3c87e32b00 100644 --- a/admin/commands/inventory/list_agents.go +++ b/admin/commands/inventory/list_agents.go @@ -124,7 +124,25 @@ func (cmd *ListAgentsCommand) RunCmd() (commands.Result, error) { return nil, err } - var agentsList []listResultAgent //nolint:prealloc + agentsList := make( + []listResultAgent, 0, + len(agentsRes.Payload.PMMAgent)+ + len(agentsRes.Payload.NodeExporter)+ + len(agentsRes.Payload.MysqldExporter)+ + len(agentsRes.Payload.MongodbExporter)+ + len(agentsRes.Payload.PostgresExporter)+ + len(agentsRes.Payload.ValkeyExporter)+ + len(agentsRes.Payload.ProxysqlExporter)+ + len(agentsRes.Payload.RDSExporter)+ + len(agentsRes.Payload.QANMysqlPerfschemaAgent)+ + len(agentsRes.Payload.QANMysqlSlowlogAgent)+ + len(agentsRes.Payload.QANMongodbProfilerAgent)+ + len(agentsRes.Payload.QANMongodbMongologAgent)+ + len(agentsRes.Payload.QANPostgresqlPgstatementsAgent)+ + len(agentsRes.Payload.QANPostgresqlPgstatmonitorAgent)+ + len(agentsRes.Payload.ExternalExporter)+ + len(agentsRes.Payload.RtaMongodbAgent), + ) for _, a := range agentsRes.Payload.PMMAgent { status := "disconnected" if a.Connected { @@ -241,6 +259,16 @@ func (cmd *ListAgentsCommand) RunCmd() (commands.Result, error) { Disabled: a.Disabled, }) } + for _, a := range agentsRes.Payload.QANMongodbMongologAgent { + agentsList = append(agentsList, listResultAgent{ + AgentType: types.AgentTypeQANMongoDBMongologAgent, + AgentID: a.AgentID, + PMMAgentID: a.PMMAgentID, + ServiceID: a.ServiceID, + Status: getAgentStatus(a.Status), + Disabled: a.Disabled, + }) + } for _, a := range agentsRes.Payload.QANPostgresqlPgstatementsAgent { agentsList = append(agentsList, listResultAgent{ AgentType: types.AgentTypeQANPostgreSQLPgStatementsAgent, @@ -271,7 +299,6 @@ func (cmd *ListAgentsCommand) RunCmd() (commands.Result, error) { Port: a.ListenPort, }) } - for _, a := range agentsRes.Payload.RtaMongodbAgent { agentsList = append(agentsList, listResultAgent{ AgentType: types.AgentTypeRTAMongoDBAgent, diff --git a/admin/commands/inventory/list_services.go b/admin/commands/inventory/list_services.go index 5c5d6815cd..01ea7b005d 100644 --- a/admin/commands/inventory/list_services.go +++ b/admin/commands/inventory/list_services.go @@ -104,7 +104,14 @@ func (cmd *ListServicesCommand) RunCmd() (commands.Result, error) { return net.JoinHostPort(address, strconv.FormatInt(port, 10)) } - var servicesList []listResultService //nolint:prealloc + servicesList := make([]listResultService, 0, + len(result.Payload.Mysql)+ + len(result.Payload.Mongodb)+ + len(result.Payload.Postgresql)+ + len(result.Payload.Valkey)+ + len(result.Payload.Proxysql)+ + len(result.Payload.Haproxy)+ + len(result.Payload.External)) for _, s := range result.Payload.Mysql { servicesList = append(servicesList, listResultService{ ServiceType: types.ServiceTypeMySQLService, diff --git a/admin/commands/list.go b/admin/commands/list.go index 365a6f035b..9ec1d28bdb 100644 --- a/admin/commands/list.go +++ b/admin/commands/list.go @@ -287,8 +287,8 @@ func getMetricsMode(s bool) string { } func agentsList(agentsRes *agents.ListAgentsOK, nodeID string) []listResultAgent { - pmmAgentIDs := make(map[string]struct{}) - agentsList := []listResultAgent{} + pmmAgentIDs := make(map[string]struct{}, len(agentsRes.Payload.PMMAgent)) + agentsList := make([]listResultAgent, 0, len(agentsRes.Payload.PMMAgent)) agentsList = append(agentsList, pmmAgents(agentsRes, nodeID, pmmAgentIDs)...) agentsList = append(agentsList, nodeExporters(agentsRes, pmmAgentIDs)...) diff --git a/agent/agents/mongodb/mongolog/internal/monitor_test.go b/agent/agents/mongodb/mongolog/internal/monitor_test.go index 5ad12411b1..caf246f65d 100644 --- a/agent/agents/mongodb/mongolog/internal/monitor_test.go +++ b/agent/agents/mongodb/mongolog/internal/monitor_test.go @@ -154,7 +154,7 @@ func testFileNames(t *testing.T) ([]string, error) { return nil, err } - var names []string //nolint:prealloc + names := make([]string, 0, len(files)) for _, file := range files { if file.IsDir() { continue @@ -171,7 +171,7 @@ func testFileNames(t *testing.T) ([]string, error) { func reorderData(t *testing.T, data []proto.SystemProfile) []proto.SystemProfile { t.Helper() - var res []proto.SystemProfile //nolint:prealloc + res := make([]proto.SystemProfile, 0, len(data)) for _, d := range data { d.Ts = d.Ts.UTC() @@ -189,7 +189,7 @@ func reorderData(t *testing.T, data []proto.SystemProfile) []proto.SystemProfile func reorderBSOND(t *testing.T, data bson.D) bson.D { t.Helper() - var res []bson.E //nolint:prealloc + res := make([]bson.E, 0, len(data)) for _, d := range data { res = append(res, d) } diff --git a/agent/agents/mongodb/profiler/internal/profiler_test.go b/agent/agents/mongodb/profiler/internal/profiler_test.go index 5c1c8d64e4..92ca43c25f 100644 --- a/agent/agents/mongodb/profiler/internal/profiler_test.go +++ b/agent/agents/mongodb/profiler/internal/profiler_test.go @@ -156,7 +156,7 @@ func testProfiler(t *testing.T, url string) { responseLength := float32(45) assert.Len(t, bucketsMap, dbsCount) // 300 sample docs / 10 = different database names - var buckets []*agentv1.MetricsBucket + buckets := make([]*agentv1.MetricsBucket, 0, len(bucketsMap)) for _, bucket := range bucketsMap { buckets = append(buckets, bucket) } diff --git a/agent/agents/mongodb/shared/aggregator/aggregator.go b/agent/agents/mongodb/shared/aggregator/aggregator.go index 82387f6039..c618fbed17 100644 --- a/agent/agents/mongodb/shared/aggregator/aggregator.go +++ b/agent/agents/mongodb/shared/aggregator/aggregator.go @@ -251,7 +251,7 @@ func (a *Aggregator) newInterval(ts time.Time) { func (a *Aggregator) createResult(_ context.Context) *report.Result { queries := a.mongostats.Queries() queryStats := queries.CalcQueriesStats(int64(DefaultInterval)) - var buckets []*agentv1.MetricsBucket //nolint:prealloc + buckets := make([]*agentv1.MetricsBucket, 0, len(queryStats)) a.logger.Tracef("Queries: %#v", queries) a.logger.Tracef("Query Stats: %#v", queryStats) diff --git a/agent/agents/postgres/parser/parser.go b/agent/agents/postgres/parser/parser.go index dad76faa23..fb3c1fd93c 100644 --- a/agent/agents/postgres/parser/parser.go +++ b/agent/agents/postgres/parser/parser.go @@ -30,7 +30,6 @@ var extractTablesRecover = true // ExtractTables extracts table names from query. func ExtractTables(query string) ([]string, error) { var err error - var tables []string //nolint:prealloc if extractTablesRecover { defer func() { @@ -64,6 +63,7 @@ func ExtractTables(query string) ([]string, error) { delete(tableNames, v) } + tables := make([]string, 0, len(tableNames)) for k := range tableNames { tables = append(tables, k) } diff --git a/agent/agents/postgres/parser/parser_test.go b/agent/agents/postgres/parser/parser_test.go index 53ebf14fb7..cd09516748 100644 --- a/agent/agents/postgres/parser/parser_test.go +++ b/agent/agents/postgres/parser/parser_test.go @@ -54,7 +54,7 @@ func TestExtractTables(t *testing.T) { t.Parallel() actual, err := f(query) - assert.Equal(t, expected.Tables, actual) + assert.ElementsMatch(t, expected.Tables, actual) if expected.Err != "" { require.EqualError(t, err, expected.Err, "err = %+v", err) } else { diff --git a/api-tests/management/helpers.go b/api-tests/management/helpers.go index 77cbf28e00..4f12be3658 100644 --- a/api-tests/management/helpers.go +++ b/api-tests/management/helpers.go @@ -141,7 +141,21 @@ func removeAllAgentsInList(t *testing.T, listAgentsOK *agents.ListAgentsOK) { require.NotNil(t, listAgentsOK) require.NotNil(t, listAgentsOK.Payload) - var agentIDs []string //nolint:prealloc + agentIDs := make([]string, 0, + len(listAgentsOK.Payload.NodeExporter)+ + len(listAgentsOK.Payload.PMMAgent)+ + len(listAgentsOK.Payload.PostgresExporter)+ + len(listAgentsOK.Payload.MysqldExporter)+ + len(listAgentsOK.Payload.ProxysqlExporter)+ + len(listAgentsOK.Payload.QANMysqlPerfschemaAgent)+ + len(listAgentsOK.Payload.MongodbExporter)+ + len(listAgentsOK.Payload.QANMongodbProfilerAgent)+ + len(listAgentsOK.Payload.QANMongodbMongologAgent)+ + len(listAgentsOK.Payload.QANMysqlSlowlogAgent)+ + len(listAgentsOK.Payload.QANPostgresqlPgstatementsAgent)+ + len(listAgentsOK.Payload.ExternalExporter)+ + len(listAgentsOK.Payload.VMAgent)+ + len(listAgentsOK.Payload.RtaMongodbAgent)) for _, agent := range listAgentsOK.Payload.NodeExporter { agentIDs = append(agentIDs, agent.AgentID) } @@ -181,6 +195,9 @@ func removeAllAgentsInList(t *testing.T, listAgentsOK *agents.ListAgentsOK) { for _, agent := range listAgentsOK.Payload.VMAgent { agentIDs = append(agentIDs, agent.AgentID) } + for _, agent := range listAgentsOK.Payload.RtaMongodbAgent { + agentIDs = append(agentIDs, agent.AgentID) + } pmmapitests.RemoveAgents(t, agentIDs...) } diff --git a/managed/services/agents/vmagent.go b/managed/services/agents/vmagent.go index 5adb61afae..0ee5406af5 100644 --- a/managed/services/agents/vmagent.go +++ b/managed/services/agents/vmagent.go @@ -73,14 +73,13 @@ func vmAgentConfig(scrapeCfg string, params victoriaMetricsParams) *agentv1.SetS interfaceToBind := envvars.GetInterfaceToBind() // Only keep the specified exceptions as command line arguments - args := []string{ + args := append([]string{ "-envflag.enable=true", "-envflag.prefix=VMAGENT_", "-remoteWrite.tmpDataPath={{.tmp_dir}}/vmagent-temp-dir", "-promscrape.config={{.TextFiles.vmagentscrapecfg}}", "-httpListenAddr=" + interfaceToBind + ":{{.listen_port}}", - } - args = append(args, params.VMAgentArgs()...) + }, params.VMAgentArgs()...) sort.Strings(args) diff --git a/managed/services/management/common/common.go b/managed/services/management/common/common.go index 5669779351..eda30456f5 100644 --- a/managed/services/management/common/common.go +++ b/managed/services/management/common/common.go @@ -69,10 +69,12 @@ func (s *MgmtServices) RemoveScheduledTasks(ctx context.Context, db *reform.DB, return err } - allServices := append(servicesInCurrentCluster, servicesInNewCluster...) //nolint:gocritic + allServices := make([]*models.Service, 0, len(servicesInCurrentCluster)+len(servicesInNewCluster)+1) + allServices = append(allServices, servicesInCurrentCluster...) + allServices = append(allServices, servicesInNewCluster...) allServices = append(allServices, service) - sMap := make(map[string]struct{}) + sMap := make(map[string]struct{}, len(allServices)) for _, service := range allServices { sMap[service.ServiceID] = struct{}{} } diff --git a/managed/services/management/rds_test.go b/managed/services/management/rds_test.go index fed69a8b71..adf5890803 100644 --- a/managed/services/management/rds_test.go +++ b/managed/services/management/rds_test.go @@ -230,8 +230,8 @@ func TestRDSService(t *testing.T) { opts := []func(*config.LoadOptions) error{ config.WithCredentialsProvider(creds), config.WithHTTPClient(&http.Client{}), + config.WithClientLogMode(aws.LogRetries | aws.LogRequestWithBody | aws.LogResponseWithBody), } - opts = append(opts, config.WithClientLogMode(aws.LogRetries|aws.LogRequestWithBody|aws.LogResponseWithBody)) cfg, err := config.LoadDefaultConfig(ctx, opts...) require.NoError(t, err) diff --git a/managed/services/telemetry/config.go b/managed/services/telemetry/config.go index df67cbc3a8..2c2be4c22e 100644 --- a/managed/services/telemetry/config.go +++ b/managed/services/telemetry/config.go @@ -234,7 +234,7 @@ func (c *ServiceConfig) Init(l *logrus.Entry) error { } func (c *ServiceConfig) loadMetricsConfig(configFile string) ([]Config, error) { - var fileConfigs []FileConfig + fileConfigs := make([]FileConfig, 0, 1) var fileCfg FileConfig var config []byte diff --git a/managed/services/victoriametrics/prometheus.go b/managed/services/victoriametrics/prometheus.go index 8026645881..baad556f95 100644 --- a/managed/services/victoriametrics/prometheus.go +++ b/managed/services/victoriametrics/prometheus.go @@ -266,11 +266,13 @@ func AddScrapeConfigs(l *logrus.Entry, cfg *config.Config, q *reform.Querier, // // AddInternalServicesToScrape adds internal services metrics to scrape targets. func addInternalServicesToScrape(s models.MetricsResolutions, svc *Service, pmmServerNodeName string) []*config.ScrapeConfig { - cfg := []*config.ScrapeConfig{ + cfg := make([]*config.ScrapeConfig, 0, 4) //nolint:mnd + cfg = append( + cfg, scrapeConfigForGrafana(s.MR, pmmServerNodeName), scrapeConfigForPMMManaged(s.MR, pmmServerNodeName), scrapeConfigForQANAPI2(s.MR, pmmServerNodeName), - } + ) if svc.params.ExternalVM() { return cfg diff --git a/managed/services/victoriametrics/victoriametrics.go b/managed/services/victoriametrics/victoriametrics.go index 5af81891f8..9e22d76c48 100644 --- a/managed/services/victoriametrics/victoriametrics.go +++ b/managed/services/victoriametrics/victoriametrics.go @@ -261,15 +261,22 @@ func (svc *Service) validateConfig(ctx context.Context, cfg []byte) error { if err != nil { return err } + defer func() { + err = f.Close() + if err != nil { + svc.l.Debug(err) + } + err = os.Remove(f.Name()) + if err != nil { + svc.l.Debug(err) + } + }() if _, err = f.Write(cfg); err != nil { return err } - defer func() { - _ = f.Close() - _ = os.Remove(f.Name()) - }() - args := []string{"-promscrape.config.dryRun=true", "-promscrape.config", f.Name()} + args := make([]string, 0, 4) //nolint:mnd + args = append(args, "-promscrape.config.dryRun=true", "-promscrape.config", f.Name()) cmd := exec.CommandContext(ctx, "victoriametrics", args...) //nolint:gosec pdeathsig.Set(cmd, unix.SIGKILL) diff --git a/managed/utils/encryption/helpers.go b/managed/utils/encryption/helpers.go index 01a31f2762..8a5866f623 100644 --- a/managed/utils/encryption/helpers.go +++ b/managed/utils/encryption/helpers.go @@ -86,7 +86,7 @@ func decryptColumnStringHandler(e *Encryption, val any) (any, error) { } func (table Table) columnsList() []string { - res := []string{} + res := make([]string, 0, len(table.Columns)) for _, c := range table.Columns { res = append(res, c.Name) } diff --git a/qan-api2/models/metrics.go b/qan-api2/models/metrics.go index b0809214df..a19ec1259d 100644 --- a/qan-api2/models/metrics.go +++ b/qan-api2/models/metrics.go @@ -1295,7 +1295,7 @@ func (m *Metrics) GetSelectedQueryMetadata(ctx context.Context, periodStartFromS } func prepareMetadataProperty(metadata map[string]struct{}) string { - res := []string{} + res := make([]string, 0, len(metadata)) for k := range metadata { res = append(res, k) } diff --git a/qan-api2/services/analytics/profile.go b/qan-api2/services/analytics/profile.go index c517d8de5b..976c5b14e7 100644 --- a/qan-api2/services/analytics/profile.go +++ b/qan-api2/services/analytics/profile.go @@ -59,7 +59,7 @@ func (s *Service) GetReport(ctx context.Context, in *qanpb.GetReportRequest) (*q labels[label.Key] = label.Value } - var columns []string //nolint:prealloc + columns := make([]string, 0, len(in.Columns)) for _, col := range in.Columns { // TODO: remove when UI starts using num_queries instead. if col == "count" { diff --git a/qan-api2/services/analytics/profile_test.go b/qan-api2/services/analytics/profile_test.go index 31be418036..621148108d 100644 --- a/qan-api2/services/analytics/profile_test.go +++ b/qan-api2/services/analytics/profile_test.go @@ -549,7 +549,7 @@ func TestService_GetReport_AllLabels(t *testing.T) { } genDimensionvalues := func(dimKey string, amount int) []string { - arr := []string{} + arr := make([]string, 0, amount) for i := range amount { arr = append(arr, fmt.Sprintf("%s%d", dimKey, i)) }