diff --git a/mongo/assets/configuration/spec.yaml b/mongo/assets/configuration/spec.yaml index 495e54b21f31e..920d046a0bce0 100644 --- a/mongo/assets/configuration/spec.yaml +++ b/mongo/assets/configuration/spec.yaml @@ -275,6 +275,13 @@ files: value: type: number example: 5 + - name: collect_search_indexes + description: | + Set to `true` to collect search indexes for each collection. + NOTE: This option is only applicable to MongoDB Atlas clusters. + value: + type: boolean + example: false - name: replica_check description: | Whether or not to read from available replicas. diff --git a/mongo/changelog.d/19396.added b/mongo/changelog.d/19396.added new file mode 100644 index 0000000000000..e87c72c5dd44b --- /dev/null +++ b/mongo/changelog.d/19396.added @@ -0,0 +1 @@ +Make MongoDB Atlas search indexes collection configurable and disable it by default for improved performance. diff --git a/mongo/datadog_checks/mongo/config.py b/mongo/datadog_checks/mongo/config.py index 54e39a1c69d04..4703ed1c316d6 100644 --- a/mongo/datadog_checks/mongo/config.py +++ b/mongo/datadog_checks/mongo/config.py @@ -221,6 +221,7 @@ def schemas(self): 'sample_size': int(self._schemas_config.get('sample_size', 10)), 'max_collections': int(max_collections) if max_collections else None, 'max_depth': int(self._schemas_config.get('max_depth', 5)), # Default to 5 + 'collect_search_indexes': is_affirmative(self._schemas_config.get('collect_search_indexes', False)), } def _get_database_autodiscovery_config(self, instance): diff --git a/mongo/datadog_checks/mongo/config_models/instance.py b/mongo/datadog_checks/mongo/config_models/instance.py index 8d054bafdb9d6..3957d03a126f4 100644 --- a/mongo/datadog_checks/mongo/config_models/instance.py +++ b/mongo/datadog_checks/mongo/config_models/instance.py @@ -97,6 +97,7 @@ class Schemas(BaseModel): arbitrary_types_allowed=True, frozen=True, ) + collect_search_indexes: Optional[bool] = None collection_interval: Optional[float] = None enabled: Optional[bool] = None max_collections: Optional[float] = None diff --git a/mongo/datadog_checks/mongo/data/conf.yaml.example b/mongo/datadog_checks/mongo/data/conf.yaml.example index 0ed5a3e59f305..bffdd2a5803c7 100644 --- a/mongo/datadog_checks/mongo/data/conf.yaml.example +++ b/mongo/datadog_checks/mongo/data/conf.yaml.example @@ -234,6 +234,12 @@ instances: # # max_depth: 5 + ## @param collect_search_indexes - boolean - optional - default: false + ## Set to `true` to collect search indexes for each collection. + ## NOTE: This option is only applicable to MongoDB Atlas clusters. + # + # collect_search_indexes: false + ## @param replica_check - boolean - optional - default: true ## Whether or not to read from available replicas. ## Disable this if any replicas are inaccessible to the Agent. This option is not supported for sharded clusters. diff --git a/mongo/datadog_checks/mongo/dbm/schemas.py b/mongo/datadog_checks/mongo/dbm/schemas.py index a2e0715e7f79f..0d05d6576d47f 100644 --- a/mongo/datadog_checks/mongo/dbm/schemas.py +++ b/mongo/datadog_checks/mongo/dbm/schemas.py @@ -32,6 +32,7 @@ def __init__(self, check): self._max_collections = self._schemas_config["max_collections"] self._sample_size = self._schemas_config["sample_size"] self._max_depth = self._schemas_config["max_depth"] + self._collect_search_indexes = self._schemas_config["collect_search_indexes"] self._max_collections_per_database = check._config.database_autodiscovery_config['max_collections_per_database'] super(MongoSchemas, self).__init__( @@ -210,6 +211,10 @@ def _get_index_type(self, index_name, index_details): return "regular" def _discover_collection_search_indexes(self, dbname, collname): + if not self._collect_search_indexes: + self._check.log.debug("Search indexes collection is disabled") + return [] + if not self._check.deployment_type.hosting_type == HostingType.ATLAS: self._check.log.debug("Search indexes are only supported for Atlas deployments") return [] diff --git a/mongo/tests/results/schemas-standalone-atlas-search-indexes.json b/mongo/tests/results/schemas-standalone-atlas-search-indexes.json new file mode 100644 index 0000000000000..c48cf24e0f4b0 --- /dev/null +++ b/mongo/tests/results/schemas-standalone-atlas-search-indexes.json @@ -0,0 +1,1250 @@ +[ + { + "host": "mongohost", + "agent_version": "0.0.0", + "dbms": "mongo", + "kind": "mongodb_databases", + "collection_interval": 600, + "dbms_version": "4.1.13", + "cloud_metadata": {}, + "tags": [ + "server:mongodb://testUser2:*****@localhost:27017/test", + "clustername:my_cluster", + "hosting_type:mongodb-atlas" + ], + "timestamp": 1715911398111.2722, + "metadata": [ + { + "name": "integration", + "collections": [ + { + "name": "foo", + "namespace": "integration.foo", + "sharded": false, + "docs": [ + { + "name": "_id", + "type": "ObjectId", + "prevalence": 1.0 + }, + { + "name": "date", + "type": "Date", + "prevalence": 1.0 + }, + { + "name": "data", + "type": "Null", + "prevalence": 0.5 + }, + { + "name": "data", + "type": "String", + "prevalence": 0.5 + }, + { + "name": "available", + "type": "Int32", + "prevalence": 0.5 + }, + { + "name": "max", + "type": "Double", + "prevalence": 1.0 + }, + { + "name": "min", + "type": "Double", + "prevalence": 1.0 + }, + { + "name": "count", + "type": "Int32", + "prevalence": 1.0 + }, + { + "name": "geo", + "type": "Object", + "prevalence": 1.0 + }, + { + "name": "geo.type", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "geo.coordinates", + "type": "Array", + "prevalence": 1.0 + }, + { + "name": "tags", + "type": "Array", + "prevalence": 1.0 + }, + { + "name": "nested", + "type": "Object", + "prevalence": 0.5 + }, + { + "name": "nested.a", + "type": "Object", + "prevalence": 0.5 + }, + { + "name": "nested.a.b", + "type": "Object", + "prevalence": 0.5 + }, + { + "name": "nested.a.b.c", + "type": "Object", + "prevalence": 0.5 + }, + { + "name": "nested.a.b.c.d", + "type": "Object", + "prevalence": 0.5 + }, + { + "name": "occurrences", + "type": "Array", + "prevalence": 1.0 + }, + { + "name": "occurrences.date", + "type": "Date", + "prevalence": 1.0 + }, + { + "name": "occurrences.count", + "type": "Int32", + "prevalence": 1.0 + }, + { + "name": "occurrences.exists", + "type": "Int32", + "prevalence": 0.5 + }, + { + "name": "sum", + "type": "Int32", + "prevalence": 0.5 + }, + { + "name": "geo.test", + "type": "Int32", + "prevalence": 0.5 + }, + { + "name": "occurrences.test", + "type": "String", + "prevalence": 0.25 + } + ], + "indexes": [ + { + "name": "_id_", + "keys": [ + { + "field": "_id", + "type": "1" + } + ], + "type": "regular", + "unique": true + }, + { + "name": "property_type_1_room_type_1_beds_1", + "keys": [ + { + "field": "property_type", + "type": "1" + }, + { + "field": "room_type", + "type": "1" + }, + { + "field": "beds", + "type": "1" + } + ], + "type": "regular", + "compound": true + }, + { + "name": "name_1", + "keys": [ + { + "field": "name", + "type": "1" + } + ], + "type": "regular" + }, + { + "name": "address.location_2dsphere", + "keys": [ + { + "field": "address.location", + "type": "2dsphere" + } + ], + "type": "geospatial" + }, + { + "name": "last_scraped_1", + "keys": [ + { + "field": "last_scraped", + "type": "1" + } + ], + "type": "regular", + "ttl": 3600 + }, + { + "name": "name_1_listing_url_1", + "keys": [ + { + "field": "name", + "type": "1" + }, + { + "field": "listing_url", + "type": "1" + } + ], + "type": "regular", + "compound": true, + "partial": true + }, + { + "name": "room_type_1", + "keys": [ + { + "field": "room_type", + "type": "1" + } + ], + "type": "regular", + "sparse": true + }, + { + "name": "name_text_summary_text_space_text", + "keys": [ + { + "field": "_fts", + "type": "text" + }, + { + "field": "_ftsx", + "type": "1" + } + ], + "type": "text", + "compound": true + }, + { + "name": "$**_1", + "keys": [ + { + "field": "$**", + "type": "1" + } + ], + "type": "wildcard" + }, + { + "name": "address.location_2d", + "keys": [ + { + "field": "address.location", + "type": "2d" + } + ], + "type": "geospatial" + }, + { + "name": "price_hashed", + "keys": [ + { + "field": "price", + "type": "hashed" + } + ], + "type": "hashed" + }, + { + "name": "price_hashed_clearning_fee_1", + "keys": [ + { + "field": "price", + "type": "hashed" + }, + { + "field": "clearning_fee", + "type": "1" + } + ], + "type": "hashed", + "compound": true + }, + { + "name": "amenities_1", + "keys": [ + { + "field": "amenities", + "type": "1" + } + ], + "type": "regular" + }, + { + "name": "summary_1", + "keys": [ + { + "field": "summary", + "type": "1" + } + ], + "type": "regular", + "case_insensitive": true + } + ], + "search_indexes": [ + { + "mappings": { + "dynamic": true, + "fields": [ + { + "field": "highlight", + "type": "string" + } + ] + }, + "name": "cast_fullplot_genres_title", + "queryable": true, + "status": "READY", + "type": "search", + "version": "1" + } + ] + }, + { + "name": "bar", + "namespace": "integration.bar", + "sharded": false, + "docs": [ + { + "name": "_id", + "type": "ObjectId", + "prevalence": 1.0 + }, + { + "name": "name", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "status", + "type": "String", + "prevalence": 0.5 + }, + { + "name": "amount", + "type": "Int32", + "prevalence": 1.0 + }, + { + "name": "elements", + "type": "Int32", + "prevalence": 0.5 + }, + { + "name": "rating", + "type": "Double", + "prevalence": 1.0 + }, + { + "name": "address", + "type": "Object", + "prevalence": 1.0 + }, + { + "name": "address.street", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "address.city", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "address.state", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "address.zip", + "type": "Int32", + "prevalence": 1.0 + }, + { + "name": "reviews", + "type": "Array", + "prevalence": 1.0 + }, + { + "name": "reviews.rating", + "type": "Double", + "prevalence": 1.0 + }, + { + "name": "reviews.comment", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "reviews.date", + "type": "Date", + "prevalence": 1.0 + }, + { + "name": "reviewed", + "type": "Int32", + "prevalence": 1.0 + }, + { + "name": "tests", + "type": "Array", + "prevalence": 1.0 + }, + { + "name": "dummy", + "type": "Null", + "prevalence": 0.5 + } + ], + "indexes": [ + { + "name": "_id_", + "keys": [ + { + "field": "_id", + "type": "1" + } + ], + "type": "regular", + "unique": true + }, + { + "name": "property_type_1_room_type_1_beds_1", + "keys": [ + { + "field": "property_type", + "type": "1" + }, + { + "field": "room_type", + "type": "1" + }, + { + "field": "beds", + "type": "1" + } + ], + "type": "regular", + "compound": true + }, + { + "name": "name_1", + "keys": [ + { + "field": "name", + "type": "1" + } + ], + "type": "regular" + }, + { + "name": "address.location_2dsphere", + "keys": [ + { + "field": "address.location", + "type": "2dsphere" + } + ], + "type": "geospatial" + }, + { + "name": "last_scraped_1", + "keys": [ + { + "field": "last_scraped", + "type": "1" + } + ], + "type": "regular", + "ttl": 3600 + }, + { + "name": "name_1_listing_url_1", + "keys": [ + { + "field": "name", + "type": "1" + }, + { + "field": "listing_url", + "type": "1" + } + ], + "type": "regular", + "compound": true, + "partial": true + }, + { + "name": "room_type_1", + "keys": [ + { + "field": "room_type", + "type": "1" + } + ], + "type": "regular", + "sparse": true + }, + { + "name": "name_text_summary_text_space_text", + "keys": [ + { + "field": "_fts", + "type": "text" + }, + { + "field": "_ftsx", + "type": "1" + } + ], + "type": "text", + "compound": true + }, + { + "name": "$**_1", + "keys": [ + { + "field": "$**", + "type": "1" + } + ], + "type": "wildcard" + }, + { + "name": "address.location_2d", + "keys": [ + { + "field": "address.location", + "type": "2d" + } + ], + "type": "geospatial" + }, + { + "name": "price_hashed", + "keys": [ + { + "field": "price", + "type": "hashed" + } + ], + "type": "hashed" + }, + { + "name": "price_hashed_clearning_fee_1", + "keys": [ + { + "field": "price", + "type": "hashed" + }, + { + "field": "clearning_fee", + "type": "1" + } + ], + "type": "hashed", + "compound": true + }, + { + "name": "amenities_1", + "keys": [ + { + "field": "amenities", + "type": "1" + } + ], + "type": "regular" + }, + { + "name": "summary_1", + "keys": [ + { + "field": "summary", + "type": "1" + } + ], + "type": "regular", + "case_insensitive": true + } + ], + "search_indexes": [ + { + "mappings": { + "dynamic": true, + "fields": [ + { + "field": "highlight", + "type": "string" + } + ] + }, + "name": "cast_fullplot_genres_title", + "queryable": true, + "status": "READY", + "type": "search", + "version": "1" + } + ] + } + ] + } + ] + }, + { + "host": "mongohost", + "agent_version": "0.0.0", + "dbms": "mongo", + "kind": "mongodb_databases", + "collection_interval": 600, + "dbms_version": "4.1.13", + "cloud_metadata": {}, + "tags": [ + "server:mongodb://testUser2:*****@localhost:27017/test", + "clustername:my_cluster", + "hosting_type:mongodb-atlas" + ], + "timestamp": 1715911398111.2722, + "metadata": [ + { + "name": "test", + "collections": [ + { + "name": "foo", + "namespace": "test.foo", + "sharded": false, + "docs": [ + { + "name": "_id", + "type": "ObjectId", + "prevalence": 1.0 + }, + { + "name": "date", + "type": "Date", + "prevalence": 1.0 + }, + { + "name": "data", + "type": "Null", + "prevalence": 0.5 + }, + { + "name": "data", + "type": "String", + "prevalence": 0.5 + }, + { + "name": "available", + "type": "Int32", + "prevalence": 0.5 + }, + { + "name": "max", + "type": "Double", + "prevalence": 1.0 + }, + { + "name": "min", + "type": "Double", + "prevalence": 1.0 + }, + { + "name": "count", + "type": "Int32", + "prevalence": 1.0 + }, + { + "name": "geo", + "type": "Object", + "prevalence": 1.0 + }, + { + "name": "geo.type", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "geo.coordinates", + "type": "Array", + "prevalence": 1.0 + }, + { + "name": "tags", + "type": "Array", + "prevalence": 1.0 + }, + { + "name": "nested", + "type": "Object", + "prevalence": 0.5 + }, + { + "name": "nested.a", + "type": "Object", + "prevalence": 0.5 + }, + { + "name": "nested.a.b", + "type": "Object", + "prevalence": 0.5 + }, + { + "name": "nested.a.b.c", + "type": "Object", + "prevalence": 0.5 + }, + { + "name": "nested.a.b.c.d", + "type": "Object", + "prevalence": 0.5 + }, + { + "name": "occurrences", + "type": "Array", + "prevalence": 1.0 + }, + { + "name": "occurrences.date", + "type": "Date", + "prevalence": 1.0 + }, + { + "name": "occurrences.count", + "type": "Int32", + "prevalence": 1.0 + }, + { + "name": "occurrences.exists", + "type": "Int32", + "prevalence": 0.5 + }, + { + "name": "sum", + "type": "Int32", + "prevalence": 0.5 + }, + { + "name": "geo.test", + "type": "Int32", + "prevalence": 0.5 + }, + { + "name": "occurrences.test", + "type": "String", + "prevalence": 0.25 + } + ], + "indexes": [ + { + "name": "_id_", + "keys": [ + { + "field": "_id", + "type": "1" + } + ], + "type": "regular", + "unique": true + }, + { + "name": "property_type_1_room_type_1_beds_1", + "keys": [ + { + "field": "property_type", + "type": "1" + }, + { + "field": "room_type", + "type": "1" + }, + { + "field": "beds", + "type": "1" + } + ], + "type": "regular", + "compound": true + }, + { + "name": "name_1", + "keys": [ + { + "field": "name", + "type": "1" + } + ], + "type": "regular" + }, + { + "name": "address.location_2dsphere", + "keys": [ + { + "field": "address.location", + "type": "2dsphere" + } + ], + "type": "geospatial" + }, + { + "name": "last_scraped_1", + "keys": [ + { + "field": "last_scraped", + "type": "1" + } + ], + "type": "regular", + "ttl": 3600 + }, + { + "name": "name_1_listing_url_1", + "keys": [ + { + "field": "name", + "type": "1" + }, + { + "field": "listing_url", + "type": "1" + } + ], + "type": "regular", + "compound": true, + "partial": true + }, + { + "name": "room_type_1", + "keys": [ + { + "field": "room_type", + "type": "1" + } + ], + "type": "regular", + "sparse": true + }, + { + "name": "name_text_summary_text_space_text", + "keys": [ + { + "field": "_fts", + "type": "text" + }, + { + "field": "_ftsx", + "type": "1" + } + ], + "type": "text", + "compound": true + }, + { + "name": "$**_1", + "keys": [ + { + "field": "$**", + "type": "1" + } + ], + "type": "wildcard" + }, + { + "name": "address.location_2d", + "keys": [ + { + "field": "address.location", + "type": "2d" + } + ], + "type": "geospatial" + }, + { + "name": "price_hashed", + "keys": [ + { + "field": "price", + "type": "hashed" + } + ], + "type": "hashed" + }, + { + "name": "price_hashed_clearning_fee_1", + "keys": [ + { + "field": "price", + "type": "hashed" + }, + { + "field": "clearning_fee", + "type": "1" + } + ], + "type": "hashed", + "compound": true + }, + { + "name": "amenities_1", + "keys": [ + { + "field": "amenities", + "type": "1" + } + ], + "type": "regular" + }, + { + "name": "summary_1", + "keys": [ + { + "field": "summary", + "type": "1" + } + ], + "type": "regular", + "case_insensitive": true + } + ], + "search_indexes": [ + { + "mappings": { + "dynamic": true, + "fields": [ + { + "field": "highlight", + "type": "string" + } + ] + }, + "name": "cast_fullplot_genres_title", + "queryable": true, + "status": "READY", + "type": "search", + "version": "1" + } + ] + }, + { + "name": "bar", + "namespace": "test.bar", + "sharded": false, + "docs": [ + { + "name": "_id", + "type": "ObjectId", + "prevalence": 1.0 + }, + { + "name": "name", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "status", + "type": "String", + "prevalence": 0.5 + }, + { + "name": "amount", + "type": "Int32", + "prevalence": 1.0 + }, + { + "name": "elements", + "type": "Int32", + "prevalence": 0.5 + }, + { + "name": "rating", + "type": "Double", + "prevalence": 1.0 + }, + { + "name": "address", + "type": "Object", + "prevalence": 1.0 + }, + { + "name": "address.street", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "address.city", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "address.state", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "address.zip", + "type": "Int32", + "prevalence": 1.0 + }, + { + "name": "reviews", + "type": "Array", + "prevalence": 1.0 + }, + { + "name": "reviews.rating", + "type": "Double", + "prevalence": 1.0 + }, + { + "name": "reviews.comment", + "type": "String", + "prevalence": 1.0 + }, + { + "name": "reviews.date", + "type": "Date", + "prevalence": 1.0 + }, + { + "name": "reviewed", + "type": "Int32", + "prevalence": 1.0 + }, + { + "name": "tests", + "type": "Array", + "prevalence": 1.0 + }, + { + "name": "dummy", + "type": "Null", + "prevalence": 0.5 + } + ], + "indexes": [ + { + "name": "_id_", + "keys": [ + { + "field": "_id", + "type": "1" + } + ], + "type": "regular", + "unique": true + }, + { + "name": "property_type_1_room_type_1_beds_1", + "keys": [ + { + "field": "property_type", + "type": "1" + }, + { + "field": "room_type", + "type": "1" + }, + { + "field": "beds", + "type": "1" + } + ], + "type": "regular", + "compound": true + }, + { + "name": "name_1", + "keys": [ + { + "field": "name", + "type": "1" + } + ], + "type": "regular" + }, + { + "name": "address.location_2dsphere", + "keys": [ + { + "field": "address.location", + "type": "2dsphere" + } + ], + "type": "geospatial" + }, + { + "name": "last_scraped_1", + "keys": [ + { + "field": "last_scraped", + "type": "1" + } + ], + "type": "regular", + "ttl": 3600 + }, + { + "name": "name_1_listing_url_1", + "keys": [ + { + "field": "name", + "type": "1" + }, + { + "field": "listing_url", + "type": "1" + } + ], + "type": "regular", + "compound": true, + "partial": true + }, + { + "name": "room_type_1", + "keys": [ + { + "field": "room_type", + "type": "1" + } + ], + "type": "regular", + "sparse": true + }, + { + "name": "name_text_summary_text_space_text", + "keys": [ + { + "field": "_fts", + "type": "text" + }, + { + "field": "_ftsx", + "type": "1" + } + ], + "type": "text", + "compound": true + }, + { + "name": "$**_1", + "keys": [ + { + "field": "$**", + "type": "1" + } + ], + "type": "wildcard" + }, + { + "name": "address.location_2d", + "keys": [ + { + "field": "address.location", + "type": "2d" + } + ], + "type": "geospatial" + }, + { + "name": "price_hashed", + "keys": [ + { + "field": "price", + "type": "hashed" + } + ], + "type": "hashed" + }, + { + "name": "price_hashed_clearning_fee_1", + "keys": [ + { + "field": "price", + "type": "hashed" + }, + { + "field": "clearning_fee", + "type": "1" + } + ], + "type": "hashed", + "compound": true + }, + { + "name": "amenities_1", + "keys": [ + { + "field": "amenities", + "type": "1" + } + ], + "type": "regular" + }, + { + "name": "summary_1", + "keys": [ + { + "field": "summary", + "type": "1" + } + ], + "type": "regular", + "case_insensitive": true + } + ], + "search_indexes": [ + { + "mappings": { + "dynamic": true, + "fields": [ + { + "field": "highlight", + "type": "string" + } + ] + }, + "name": "cast_fullplot_genres_title", + "queryable": true, + "status": "READY", + "type": "search", + "version": "1" + } + ] + } + ] + } + ] + } +] \ No newline at end of file diff --git a/mongo/tests/results/schemas-standalone-atlas.json b/mongo/tests/results/schemas-standalone-atlas.json index c48cf24e0f4b0..5717f1b57916d 100644 --- a/mongo/tests/results/schemas-standalone-atlas.json +++ b/mongo/tests/results/schemas-standalone-atlas.json @@ -314,24 +314,7 @@ "case_insensitive": true } ], - "search_indexes": [ - { - "mappings": { - "dynamic": true, - "fields": [ - { - "field": "highlight", - "type": "string" - } - ] - }, - "name": "cast_fullplot_genres_title", - "queryable": true, - "status": "READY", - "type": "search", - "version": "1" - } - ] + "search_indexes": [] }, { "name": "bar", @@ -600,24 +583,7 @@ "case_insensitive": true } ], - "search_indexes": [ - { - "mappings": { - "dynamic": true, - "fields": [ - { - "field": "highlight", - "type": "string" - } - ] - }, - "name": "cast_fullplot_genres_title", - "queryable": true, - "status": "READY", - "type": "search", - "version": "1" - } - ] + "search_indexes": [] } ] } @@ -938,24 +904,7 @@ "case_insensitive": true } ], - "search_indexes": [ - { - "mappings": { - "dynamic": true, - "fields": [ - { - "field": "highlight", - "type": "string" - } - ] - }, - "name": "cast_fullplot_genres_title", - "queryable": true, - "status": "READY", - "type": "search", - "version": "1" - } - ] + "search_indexes": [] }, { "name": "bar", @@ -1224,24 +1173,7 @@ "case_insensitive": true } ], - "search_indexes": [ - { - "mappings": { - "dynamic": true, - "fields": [ - { - "field": "highlight", - "type": "string" - } - ] - }, - "name": "cast_fullplot_genres_title", - "queryable": true, - "status": "READY", - "type": "search", - "version": "1" - } - ] + "search_indexes": [] } ] } diff --git a/mongo/tests/test_dbm_schemas.py b/mongo/tests/test_dbm_schemas.py index 3b90dbd42267c..b3c9ee0ba3a47 100644 --- a/mongo/tests/test_dbm_schemas.py +++ b/mongo/tests/test_dbm_schemas.py @@ -87,10 +87,17 @@ def test_mongo_schemas_arbiter(aggregator, instance_arbiter, check, dd_run_check @mock_now(1715911398.1112723) @common.standalone -def test_mongo_schemas_standalone_atlas(aggregator, instance_integration_cluster_autodiscovery, check, dd_run_check): +@pytest.mark.parametrize("collect_search_indexes", [True, False]) +def test_mongo_schemas_standalone_atlas( + aggregator, instance_integration_cluster_autodiscovery, check, dd_run_check, collect_search_indexes +): instance_integration_cluster_autodiscovery['reported_database_hostname'] = "mongohost" instance_integration_cluster_autodiscovery['dbm'] = True - instance_integration_cluster_autodiscovery['schemas'] = {'enabled': True, 'run_sync': True} + instance_integration_cluster_autodiscovery['schemas'] = { + 'enabled': True, + 'run_sync': True, + 'collect_search_indexes': collect_search_indexes, + } instance_integration_cluster_autodiscovery['database_autodiscovery']['include'] = ['integration$', 'test$'] instance_integration_cluster_autodiscovery['operation_samples'] = {'enabled': False} instance_integration_cluster_autodiscovery['slow_operations'] = {'enabled': False} @@ -105,7 +112,10 @@ def test_mongo_schemas_standalone_atlas(aggregator, instance_integration_cluster dbm_metadata = aggregator.get_event_platform_events("dbm-metadata") mongodb_databases = [e for e in dbm_metadata if e['kind'] == 'mongodb_databases'] - with open(os.path.join(HERE, "results", "schemas-standalone-atlas.json"), 'r') as f: + expected_result = ( + "schemas-standalone-atlas-search-indexes.json" if collect_search_indexes else "schemas-standalone-atlas.json" + ) + with open(os.path.join(HERE, "results", expected_result), 'r') as f: expected_mongodb_databases = json.load(f) assert len(mongodb_databases) == len(expected_mongodb_databases) for i, db in enumerate(mongodb_databases):