Skip to content

Commit

Permalink
Merge branch 'main' into PMM-12290-remote-pg-comments
Browse files Browse the repository at this point in the history
  • Loading branch information
JiriCtvrtka authored Jan 15, 2024
2 parents d0d812c + 40b3365 commit 0ca1acd
Show file tree
Hide file tree
Showing 6 changed files with 197 additions and 32 deletions.
18 changes: 9 additions & 9 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ require (
github.com/charmbracelet/lipgloss v0.9.1
github.com/davecgh/go-spew v1.1.1
github.com/docker/docker v24.0.7+incompatible
github.com/docker/go-connections v0.4.0
github.com/docker/go-connections v0.5.0
github.com/envoyproxy/protoc-gen-validate v1.0.2
github.com/go-co-op/gocron v1.36.0
github.com/go-co-op/gocron v1.37.0
github.com/go-openapi/errors v0.21.0
github.com/go-openapi/runtime v0.26.0
github.com/go-openapi/strfmt v0.22.0
github.com/go-openapi/strfmt v0.21.8
github.com/go-openapi/swag v0.22.3
github.com/go-openapi/validate v0.22.1
github.com/go-sql-driver/mysql v1.7.1
Expand Down Expand Up @@ -74,13 +74,13 @@ require (
github.com/sirupsen/logrus v1.9.3
github.com/stretchr/objx v0.5.0
github.com/stretchr/testify v1.8.4
go.mongodb.org/mongo-driver v1.13.1
go.mongodb.org/mongo-driver v1.12.0
go.starlark.net v0.0.0-20230717150657-8a3343210976
golang.org/x/crypto v0.17.0
golang.org/x/sync v0.5.0
golang.org/x/crypto v0.18.0
golang.org/x/sync v0.6.0
golang.org/x/sys v0.16.0
golang.org/x/text v0.14.0
golang.org/x/tools v0.16.0
golang.org/x/tools v0.17.0
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917
google.golang.org/grpc v1.60.1
Expand Down Expand Up @@ -249,9 +249,9 @@ require (
go.opentelemetry.io/otel v1.19.0 // indirect
go.opentelemetry.io/otel/trace v1.19.0 // indirect
golang.org/x/mod v0.14.0 // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/net v0.20.0 // indirect
golang.org/x/oauth2 v0.15.0 // indirect
golang.org/x/term v0.15.0 // indirect
golang.org/x/term v0.16.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gotest.tools/v3 v3.3.0 // indirect
Expand Down
31 changes: 16 additions & 15 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,9 @@ github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4Kfc
github.com/docker/docker v1.13.1/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM=
github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
Expand All @@ -216,8 +217,8 @@ github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoD
github.com/frankban/quicktest v1.5.0/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/go-co-op/gocron v1.36.0 h1:sEmAwg57l4JWQgzaVWYfKZ+w13uHOqeOtwjo72Ll5Wc=
github.com/go-co-op/gocron v1.36.0/go.mod h1:3L/n6BkO7ABj+TrfSVXLRzsP26zmikL4ISkLQ0O8iNY=
github.com/go-co-op/gocron v1.37.0 h1:ZYDJGtQ4OMhTLKOKMIch+/CY70Brbb1dGdooLEhh7b0=
github.com/go-co-op/gocron v1.37.0/go.mod h1:3L/n6BkO7ABj+TrfSVXLRzsP26zmikL4ISkLQ0O8iNY=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-faster/city v1.0.1 h1:4WAxSZ3V2Ws4QRDrscLEDcibJY8uf41H6AhXDrNDcGw=
Expand Down Expand Up @@ -270,8 +271,8 @@ github.com/go-openapi/runtime v0.26.0/go.mod h1:QgRGeZwrUcSHdeh4Ka9Glvo0ug1LC5Wy
github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg=
github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k=
github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg=
github.com/go-openapi/strfmt v0.22.0 h1:Ew9PnEYc246TwrEspvBdDHS4BVKXy/AOVsfqGDgAcaI=
github.com/go-openapi/strfmt v0.22.0/go.mod h1:HzJ9kokGIju3/K6ap8jL+OlGAbjpSv27135Yr9OivU4=
github.com/go-openapi/strfmt v0.21.8 h1:VYBUoKYRLAlgKDrIxR/I0lKrztDQ0tuTDrbhLVP8Erg=
github.com/go-openapi/strfmt v0.21.8/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew=
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
Expand Down Expand Up @@ -817,8 +818,8 @@ go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R7
go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng=
go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8=
go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g=
go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk=
go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo=
go.mongodb.org/mongo-driver v1.12.0 h1:aPx33jmn/rQuJXPQLZQ8NtfPQG8CaqgLThFtqRb0PiE=
go.mongodb.org/mongo-driver v1.12.0/go.mod h1:AZkxhPnFJUoH7kZlFkVKucV20K387miPfm7oimrSmK0=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
Expand Down Expand Up @@ -925,8 +926,8 @@ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
Expand All @@ -949,8 +950,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
Expand Down Expand Up @@ -1022,8 +1023,8 @@ golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuX
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE=
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand Down Expand Up @@ -1101,8 +1102,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM=
golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0=
golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=
golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
Expand Down
12 changes: 8 additions & 4 deletions managed/services/agents/mongodb.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ var (
newMongoExporterPMMVersion = version.MustParse("2.9.99")
v2_24_99 = version.MustParse("2.24.99")
v2_25_99 = version.MustParse("2.25.99")
v2_41_1 = version.MustParse("2.41.1-0")
)

// mongodbExporterConfig returns desired configuration of mongodb_exporter process.
Expand All @@ -54,7 +55,14 @@ func mongodbExporterConfig(node *models.Node, service *models.Service, exporter
// Starting with PMM 2.25.0, we change the discovering-mode making it to discover all databases.
// Until now, discovering mode was not working properly and was enabled only if mongodb.collstats-colls=
// was specified in the command line.
// Starting with PMM 2.41.1 we added shards collector.
switch {
case !pmmAgentVersion.Less(v2_41_1): // >= 2.41.1
args = v226Args(exporter, tdp, listenAddress)

if exporter.MongoDBOptions != nil && exporter.MongoDBOptions.EnableAllCollectors {
args = append(args, "--collector.shards")
}
case !pmmAgentVersion.Less(v2_25_99): // >= 2.26
args = v226Args(exporter, tdp, listenAddress)
case !pmmAgentVersion.Less(v2_24_99): // >= 2.25
Expand Down Expand Up @@ -232,22 +240,18 @@ func defaultCollectors(collectAll bool) map[string]collectorArgs {
enabled: true,
enableParam: "--collector.replicasetstatus",
},
// disabled until we have better information on the resources usage impact
"collstats": {
enabled: collectAll,
enableParam: "--collector.collstats",
},
// disabled until we have better information on the resources usage impact
"dbstats": {
enabled: collectAll,
enableParam: "--collector.dbstats",
},
// disabled until we have better information on the resources usage impact
"indexstats": {
enabled: collectAll,
enableParam: "--collector.indexstats",
},
// disabled until we have better information on the resources usage impact
"topmetrics": {
enabled: collectAll,
enableParam: "--collector.topmetrics",
Expand Down
155 changes: 155 additions & 0 deletions managed/services/agents/mongodb_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,161 @@ func TestMongodbExporterConfig226(t *testing.T) {
})
}

func TestMongodbExporterConfig2411(t *testing.T) {
pmmAgentVersion := version.MustParse("2.41.1")
node := &models.Node{
Address: "1.2.3.4",
}
mongodb := &models.Service{
Address: pointer.ToString("1.2.3.4"),
Port: pointer.ToUint16(27017),
}
exporter := &models.Agent{
AgentID: "agent-id",
AgentType: models.MongoDBExporterType,
Username: pointer.ToString("username"),
Password: pointer.ToString("s3cur3 p@$$w0r4."),
AgentPassword: pointer.ToString("agent-password"),
}
actual, err := mongodbExporterConfig(node, mongodb, exporter, redactSecrets, pmmAgentVersion)
expected := &agentpb.SetStateRequest_AgentProcess{
Type: inventorypb.AgentType_MONGODB_EXPORTER,
TemplateLeftDelim: "{{",
TemplateRightDelim: "}}",
Args: []string{
"--collector.diagnosticdata",
"--collector.replicasetstatus",
"--compatible-mode",
"--discovering-mode",
"--mongodb.global-conn-pool",
"--web.listen-address=0.0.0.0:{{ .listen_port }}",
"--web.config={{ .TextFiles.webConfigPlaceholder }}",
},
Env: []string{
"MONGODB_URI=mongodb://username:s3cur3%20p%[email protected]:27017/?connectTimeoutMS=1000&directConnection=true&serverSelectionTimeoutMS=1000",
},
RedactWords: []string{"s3cur3 p@$$w0r4.", "agent-password"},
TextFiles: map[string]string{
"webConfigPlaceholder": "basic_auth_users:\n pmm: agent-password\n",
},
}
require.NoError(t, err)
requireNoDuplicateFlags(t, actual.Args)
require.Equal(t, expected.Args, actual.Args)
require.Equal(t, expected.Env, actual.Env)
require.Equal(t, expected, actual)

t.Run("Having collstats limit", func(t *testing.T) {
exporter.MongoDBOptions = &models.MongoDBOptions{
StatsCollections: []string{"col1", "col2", "col3"},
CollectionsLimit: 79014,
}
expected.Args = []string{
"--collector.collstats-limit=79014",
"--collector.diagnosticdata",
"--collector.replicasetstatus",
"--compatible-mode",
"--discovering-mode",
"--mongodb.collstats-colls=col1,col2,col3",
"--mongodb.global-conn-pool",
"--mongodb.indexstats-colls=col1,col2,col3",
"--web.listen-address=0.0.0.0:{{ .listen_port }}",
"--web.config={{ .TextFiles.webConfigPlaceholder }}",
}
actual, err := mongodbExporterConfig(node, mongodb, exporter, exposeSecrets, pmmAgentVersion)
require.NoError(t, err)
require.Equal(t, expected.Args, actual.Args)
})

t.Run("Enabling all collectors with non zero limit", func(t *testing.T) {
exporter.MongoDBOptions = &models.MongoDBOptions{
StatsCollections: []string{"col1", "col2", "col3"},
CollectionsLimit: 79014,
EnableAllCollectors: true,
}

expected.Args = []string{
"--collector.collstats",
"--collector.collstats-limit=79014",
"--collector.dbstats",
"--collector.diagnosticdata",
"--collector.indexstats",
"--collector.replicasetstatus",
"--collector.shards",
"--collector.topmetrics",
"--compatible-mode",
"--discovering-mode",
"--mongodb.collstats-colls=col1,col2,col3",
"--mongodb.global-conn-pool",
"--mongodb.indexstats-colls=col1,col2,col3",
"--web.listen-address=0.0.0.0:{{ .listen_port }}",
"--web.config={{ .TextFiles.webConfigPlaceholder }}",
}
actual, err := mongodbExporterConfig(node, mongodb, exporter, exposeSecrets, pmmAgentVersion)
require.NoError(t, err)
require.Equal(t, expected.Args, actual.Args)
})

t.Run("Enabling all collectors", func(t *testing.T) {
exporter.MongoDBOptions = &models.MongoDBOptions{
EnableAllCollectors: true,
StatsCollections: []string{"db1.col1.one", "db2.col2", "db3"},
}

expected.Args = []string{
"--collector.collstats",
"--collector.collstats-limit=0",
"--collector.dbstats",
"--collector.diagnosticdata",
"--collector.indexstats",
"--collector.replicasetstatus",
"--collector.shards",
"--collector.topmetrics",
"--compatible-mode",
"--discovering-mode",
// this should be here even if limit=0 because it could be used to filter dbstats
// since dbstats is not depending the number of collections present in the db.
"--mongodb.collstats-colls=db1.col1.one,db2.col2,db3",
"--mongodb.global-conn-pool",
"--mongodb.indexstats-colls=db1.col1.one,db2.col2,db3",
"--web.listen-address=0.0.0.0:{{ .listen_port }}",
"--web.config={{ .TextFiles.webConfigPlaceholder }}",
}
actual, err := mongodbExporterConfig(node, mongodb, exporter, exposeSecrets, pmmAgentVersion)
require.NoError(t, err)
require.Equal(t, expected.Args, actual.Args)
})

t.Run("collstats-limit=-1 -> automatically set the limit", func(t *testing.T) {
exporter.MongoDBOptions = &models.MongoDBOptions{
EnableAllCollectors: true,
StatsCollections: []string{"db1.col1.one", "db2.col2", "db3"},
CollectionsLimit: -1,
}

expected.Args = []string{
"--collector.collstats",
"--collector.collstats-limit=200", // 200 is the default for auto-set
"--collector.dbstats",
"--collector.diagnosticdata",
"--collector.indexstats",
"--collector.replicasetstatus",
"--collector.shards",
"--collector.topmetrics",
"--compatible-mode",
"--discovering-mode",
"--mongodb.collstats-colls=db1.col1.one,db2.col2,db3",
"--mongodb.global-conn-pool",
"--mongodb.indexstats-colls=db1.col1.one,db2.col2,db3",
"--web.listen-address=0.0.0.0:{{ .listen_port }}",
"--web.config={{ .TextFiles.webConfigPlaceholder }}",
}
actual, err := mongodbExporterConfig(node, mongodb, exporter, exposeSecrets, pmmAgentVersion)
require.NoError(t, err)
require.Equal(t, expected.Args, actual.Args)
})
}

func TestMongodbExporterConfig(t *testing.T) {
pmmAgentVersion := version.MustParse("2.0.0")
node := &models.Node{
Expand Down
9 changes: 7 additions & 2 deletions managed/services/victoriametrics/scrape_configs.go
Original file line number Diff line number Diff line change
Expand Up @@ -398,11 +398,16 @@ func scrapeConfigsForMongoDBExporter(s *models.MetricsResolutions, params *scrap
r = append(r, hr)
}
if params.agent.MongoDBOptions != nil && params.agent.MongoDBOptions.EnableAllCollectors {
lr, err := scrapeConfigForStandardExporter("lr", s.LR, params, []string{
defaultCollectors := []string{
"dbstats",
"indexstats",
"collstats",
})
}
if params.pmmAgentVersion != nil && !params.pmmAgentVersion.Less(version.MustParse("2.41.1-0")) {
defaultCollectors = append(defaultCollectors, "shards")
}

lr, err := scrapeConfigForStandardExporter("lr", s.LR, params, defaultCollectors)
if err != nil {
return nil, err
}
Expand Down
4 changes: 2 additions & 2 deletions managed/services/victoriametrics/scrape_configs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -752,7 +752,7 @@ func TestScrapeConfig(t *testing.T) {
ScrapeTimeout: scrapeTimeout(s.LR),
MetricsPath: "/metrics",
Params: map[string][]string{
"collect[]": {"collstats", "dbstats", "indexstats"},
"collect[]": {"collstats", "dbstats", "indexstats", "shards"},
},
HTTPClientConfig: config.HTTPClientConfig{
BasicAuth: &config.BasicAuth{
Expand Down Expand Up @@ -784,7 +784,7 @@ func TestScrapeConfig(t *testing.T) {
node: node,
service: service,
agent: agent,
pmmAgentVersion: version.MustParse("2.26.0"),
pmmAgentVersion: version.MustParse("2.41.1"),
})
require.NoError(t, err)
require.Len(t, actual, len(expected))
Expand Down

0 comments on commit 0ca1acd

Please sign in to comment.