[8.7] [maps] include vector tile layers in geoShapeAggLayersCount telemetry (#151072) (#151089)

# Backport

This will backport the following commits from `main` to `8.7`:
- [[maps] include vector tile layers in geoShapeAggLayersCount telemetry
(#151072)](https://github.com/elastic/kibana/pull/151072)

<!--- Backport version: 8.9.7 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)

<!--BACKPORT [{"author":{"name":"Nathan
Reese","email":"reese.nathan@elastic.co"},"sourceCommit":{"committedDate":"2023-02-13T22:49:52Z","message":"[maps]
include vector tile layers in geoShapeAggLayersCount telemetry
(#151072)\n\nWhile investigating
https://github.com/elastic/kibana/issues/151064, I\r\nfound a problem
with IndexPatternStatsCollector where geo_shape\r\naggregation usage
with vector tile layers are not counted.\r\n\r\nSteps to view
problem:\r\n* Download [world
countries\r\ngeojson](https://vector.maps.elastic.co/files/world_countries_v7.geo.json?elastic_tile_service_tos=agree&my_app_name=ems-landing-page&my_app_version=8.6.0&license=643c1faf-80fc-4ab0-9323-4d9bd11f4bbc)\r\n*
use file upload to upload world countries into your Elastic stack\r\n*
add a new cluster layer to your map. \r\n * Select world countries
index\r\n * Select **Hexagons**\r\n * Click **Add layer**\r\n * Save
map\r\n* Open borwser dev tools and switch to network tab\r\n* Open
Kibana dev tools and run \r\n ```\r\n POST
kbn:api/telemetry/v2/clusters/_stats\r\n { \"unencrypted\": true }\r\n
```\r\n* Copy response for `_stats` request. Search
for\r\n`geoShapeAggLayersCount`. Notice how the value is zero but it
should be\r\none since you have one map using geo shape
aggregation\r\n<img width=\"600\" alt=\"Screen Shot 2023-02-13 at 1 14
34
PM\"\r\nsrc=\"https://user-images.githubusercontent.com/373691/218565153-0060dd4b-e422-477f-8b07-9f4dabd73064.png\">\r\n\r\n\r\nPR
resolves the problem by removing layer type guard. The guard is
error\r\nprone and easy to not update with new layer types. The guard
does not\r\nprovide any value, since the logic is really concerned with
source types\r\nand the source type guards provide the correct
protections.\r\n\r\nSteps to test:\r\nFollow steps above and verify
`geoShapeAggLayersCount` is
one","sha":"9d7e1095365483ad9bc083829f3f291c478e7cf6","branchLabelMapping":{"^v8.8.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Team:Presentation","release_note:skip","auto-backport","Feature:Maps","v8.7.0","v8.8.0"],"number":151072,"url":"https://github.com/elastic/kibana/pull/151072","mergeCommit":{"message":"[maps]
include vector tile layers in geoShapeAggLayersCount telemetry
(#151072)\n\nWhile investigating
https://github.com/elastic/kibana/issues/151064, I\r\nfound a problem
with IndexPatternStatsCollector where geo_shape\r\naggregation usage
with vector tile layers are not counted.\r\n\r\nSteps to view
problem:\r\n* Download [world
countries\r\ngeojson](https://vector.maps.elastic.co/files/world_countries_v7.geo.json?elastic_tile_service_tos=agree&my_app_name=ems-landing-page&my_app_version=8.6.0&license=643c1faf-80fc-4ab0-9323-4d9bd11f4bbc)\r\n*
use file upload to upload world countries into your Elastic stack\r\n*
add a new cluster layer to your map. \r\n * Select world countries
index\r\n * Select **Hexagons**\r\n * Click **Add layer**\r\n * Save
map\r\n* Open borwser dev tools and switch to network tab\r\n* Open
Kibana dev tools and run \r\n ```\r\n POST
kbn:api/telemetry/v2/clusters/_stats\r\n { \"unencrypted\": true }\r\n
```\r\n* Copy response for `_stats` request. Search
for\r\n`geoShapeAggLayersCount`. Notice how the value is zero but it
should be\r\none since you have one map using geo shape
aggregation\r\n<img width=\"600\" alt=\"Screen Shot 2023-02-13 at 1 14
34
PM\"\r\nsrc=\"https://user-images.githubusercontent.com/373691/218565153-0060dd4b-e422-477f-8b07-9f4dabd73064.png\">\r\n\r\n\r\nPR
resolves the problem by removing layer type guard. The guard is
error\r\nprone and easy to not update with new layer types. The guard
does not\r\nprovide any value, since the logic is really concerned with
source types\r\nand the source type guards provide the correct
protections.\r\n\r\nSteps to test:\r\nFollow steps above and verify
`geoShapeAggLayersCount` is
one","sha":"9d7e1095365483ad9bc083829f3f291c478e7cf6"}},"sourceBranch":"main","suggestedTargetBranches":["8.7"],"targetPullRequestStates":[{"branch":"8.7","label":"v8.7.0","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.8.0","labelRegex":"^v8.8.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/151072","number":151072,"mergeCommit":{"message":"[maps]
include vector tile layers in geoShapeAggLayersCount telemetry
(#151072)\n\nWhile investigating
https://github.com/elastic/kibana/issues/151064, I\r\nfound a problem
with IndexPatternStatsCollector where geo_shape\r\naggregation usage
with vector tile layers are not counted.\r\n\r\nSteps to view
problem:\r\n* Download [world
countries\r\ngeojson](https://vector.maps.elastic.co/files/world_countries_v7.geo.json?elastic_tile_service_tos=agree&my_app_name=ems-landing-page&my_app_version=8.6.0&license=643c1faf-80fc-4ab0-9323-4d9bd11f4bbc)\r\n*
use file upload to upload world countries into your Elastic stack\r\n*
add a new cluster layer to your map. \r\n * Select world countries
index\r\n * Select **Hexagons**\r\n * Click **Add layer**\r\n * Save
map\r\n* Open borwser dev tools and switch to network tab\r\n* Open
Kibana dev tools and run \r\n ```\r\n POST
kbn:api/telemetry/v2/clusters/_stats\r\n { \"unencrypted\": true }\r\n
```\r\n* Copy response for `_stats` request. Search
for\r\n`geoShapeAggLayersCount`. Notice how the value is zero but it
should be\r\none since you have one map using geo shape
aggregation\r\n<img width=\"600\" alt=\"Screen Shot 2023-02-13 at 1 14
34
PM\"\r\nsrc=\"https://user-images.githubusercontent.com/373691/218565153-0060dd4b-e422-477f-8b07-9f4dabd73064.png\">\r\n\r\n\r\nPR
resolves the problem by removing layer type guard. The guard is
error\r\nprone and easy to not update with new layer types. The guard
does not\r\nprovide any value, since the logic is really concerned with
source types\r\nand the source type guards provide the correct
protections.\r\n\r\nSteps to test:\r\nFollow steps above and verify
`geoShapeAggLayersCount` is
one","sha":"9d7e1095365483ad9bc083829f3f291c478e7cf6"}}]}] BACKPORT-->

Co-authored-by: Nathan Reese <reese.nathan@elastic.co>
This commit is contained in:
Kibana Machine 2023-02-13 19:05:43 -05:00 committed by GitHub
parent f2ea20f6e0
commit 2c7612f0ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -9,7 +9,7 @@ import type { SavedObject } from '@kbn/core/server';
import { asyncForEach } from '@kbn/std';
import { KBN_FIELD_TYPES } from '@kbn/field-types';
import { DataViewsService } from '@kbn/data-views-plugin/common';
import { LAYER_TYPE, SCALING_TYPES, SOURCE_TYPES } from '../../../common/constants';
import { SCALING_TYPES, SOURCE_TYPES } from '../../../common/constants';
import { injectReferences } from '../../../common/migrations/references';
import {
ESGeoGridSourceDescriptor,
@ -107,14 +107,6 @@ export class IndexPatternStatsCollector {
return false;
}
if (
layer.type !== LAYER_TYPE.GEOJSON_VECTOR &&
layer.type !== LAYER_TYPE.BLENDED_VECTOR &&
layer.type !== LAYER_TYPE.HEATMAP
) {
return false;
}
const sourceDescriptor = layer.sourceDescriptor;
if (sourceDescriptor.type === SOURCE_TYPES.ES_GEO_GRID) {
return await this._isFieldGeoShape(