连接到 Elastic Maps Service
编辑连接到 Elastic Maps Service编辑
Elastic Maps Service (EMS) 是一项托管图层和行政边界矢量形状的服务。如果您使用的是 Kibana 的开箱即用设置,则地图已配置为使用 EMS。
如果您处于受限或完全隔离的环境中,则可能需要配置防火墙以启用对 EMS 资源的访问。请在下方查找有关 Elastic Maps Service 使用的域和 HTTP 标头的详细信息。或者,可以禁用或在本地安装 Elastic Maps Service。
域编辑
EMS 请求发送到以下域
- 切片服务:
tiles.maps.elastic.co
- 文件服务:
vector.maps.elastic.co
标头编辑
请在下方查找来自 Kibana 的请求和响应标头示例,以及一个最小的 curl
请求示例,其中显示了每个服务发送的响应标头。
这些标头可能会随时更改,恕不另行通知,并且仅供参考。
EMS 切片服务编辑
EMS 切片服务以三种不同的样式提供底图,作为地图可视化的默认背景。底图使用OpenStreetMap 数据,遵循OpenMapTiles 模式,可以在maps.elastic.co 上进行浏览。
描述可用底图的切片服务 JSON 清单的标头。
详细信息
curl -I 'https://tiles.maps.elastic.co/v8.14/manifest?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=8.14.2' \ -H 'User-Agent: curl/7.81.0' \ -H 'Accept: */*' \ -H 'Accept-Encoding: gzip, deflate, br'
服务器响应
HTTP/2 200 server: BaseHTTP/0.6 Python/3.11.4 date: Mon, 20 Nov 2023 15:08:46 GMT content-type: application/json; charset=utf-8 elastic-api-version: 2023-10-31 access-control-allow-origin: * access-control-allow-methods: GET, OPTIONS, HEAD access-control-allow-headers: Origin, Accept, Content-Type, kbn-version, elastic-api-version access-control-expose-headers: etag content-encoding: gzip vary: Accept-Encoding x-varnish: 844076 5416505 accept-ranges: bytes varnish-age: 85285 cache-control: private, max-age=86400 via: 1.1 varnish (Varnish/7.0), 1.1 google alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Host: tiles.maps.elastic.co User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://deployment-host/app/maps/map Origin: https://deployment-host Connection: keep-alive Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: cross-site Pragma: no-cache Cache-Control: no-cache TE: trailers
server: BaseHTTP/0.6 Python/3.11.4 date: Mon, 20 Nov 2023 17:53:10 GMT content-type: application/json; charset=utf-8 elastic-api-version: 2023-10-31 access-control-allow-origin: * access-control-allow-methods: GET, OPTIONS, HEAD access-control-allow-headers: Origin, Accept, Content-Type, kbn-version, elastic-api-version access-control-expose-headers: etag content-encoding: gzip vary: Accept-Encoding x-varnish: 8848609 1142291 accept-ranges: bytes varnish-age: 65725 cache-control: private, max-age=86400 content-length: 341 via: 1.1 varnish (Varnish/7.0), 1.1 google alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
来自切片服务的 *protobuffer* 格式的矢量切片资产的标头。
详细信息
$ curl -I 'https://tiles.maps.elastic.co/data/v3/1/1/0.pbf?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=8.14.2' \ -H 'User-Agent: curl/7.81.0' \ -H 'Accept: */*' \ -H 'Accept-Encoding: gzip, deflate, br'
服务器响应
HTTP/2 200 content-encoding: gzip content-length: 144075 access-control-allow-origin: * access-control-allow-methods: GET, OPTIONS, HEAD access-control-allow-headers: Origin, Accept, Content-Type, kbn-version, elastic-api-version access-control-expose-headers: etag x-varnish: 3269455 5976667 accept-ranges: bytes varnish-age: 9045 via: 1.1 varnish (Varnish/7.0), 1.1 google date: Mon, 20 Nov 2023 15:08:19 GMT age: 78827 last-modified: Thu, 16 Sep 2021 17:14:41 GMT etag: W/"232cb-zYEfNgd8rzHusLotRFzgRDSDDGA" content-type: application/x-protobuf vary: Accept-Encoding cache-control: public,max-age=3600 alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Host: tiles.maps.elastic.co User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://deployment-host/app/maps/map Origin: https://deployment-host Connection: keep-alive Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: cross-site TE: trailers
content-encoding: gzip content-length: 101691 access-control-allow-origin: * access-control-allow-methods: GET, OPTIONS, HEAD access-control-allow-headers: Origin, Accept, Content-Type, kbn-version, elastic-api-version access-control-expose-headers: etag x-varnish: 4698676 3660338 accept-ranges: bytes varnish-age: 9206 via: 1.1 varnish (Varnish/7.0), 1.1 google date: Mon, 20 Nov 2023 15:05:29 GMT age: 75788 last-modified: Thu, 16 Sep 2021 17:14:41 GMT etag: W/"18d3b-ot9ckSsdpH7n+yJz4BXXQp6Zs08" content-type: application/x-protobuf vary: Accept-Encoding cache-control: public,max-age=3600 alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
来自切片服务的精灵图像资产的标头
详细信息
curl -I 'https://tiles.maps.elastic.co/styles/osm-bright-desaturated/sprite.png' \ -H 'User-Agent: curl/7.81.0' \ -H 'Accept: image/avif,image/webp,*/*' \ -H 'Accept-Encoding: gzip, deflate, br'
服务器响应
HTTP/2 200 content-length: 17181 access-control-allow-origin: * access-control-allow-methods: GET, OPTIONS, HEAD access-control-allow-headers: Origin, Accept, Content-Type, kbn-version, elastic-api-version access-control-expose-headers: etag x-varnish: 8769943 4865354 accept-ranges: bytes varnish-age: 250 via: 1.1 varnish (Varnish/7.0), 1.1 google date: Tue, 21 Nov 2023 14:44:36 GMT age: 592 etag: W/"431d-/dqE/W5Q3FqkHikyDQtCuQqAdlY" content-type: image/png cache-control: public,max-age=3600 alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Host: tiles.maps.elastic.co User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0 Accept: image/avif,image/webp,*/* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://deployment-host/app/maps/map Origin: https://deployment-host Connection: keep-alive Sec-Fetch-Dest: image Sec-Fetch-Mode: cors Sec-Fetch-Site: cross-site Pragma: no-cache Cache-Control: no-cache TE: trailers
content-length: 17181 access-control-allow-origin: * access-control-allow-methods: GET, OPTIONS, HEAD access-control-allow-headers: Origin, Accept, Content-Type, kbn-version, elastic-api-version access-control-expose-headers: etag x-varnish: 3530683 3764574 accept-ranges: bytes varnish-age: 833 via: 1.1 varnish (Varnish/7.0), 1.1 google date: Mon, 20 Nov 2023 14:44:29 GMT age: 77048 etag: W/"431d-/dqE/W5Q3FqkHikyDQtCuQqAdlY" content-type: image/png cache-control: public,max-age=3600 alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
EMS 文件服务编辑
EMS 文件服务以 GeoJSON 或 TopoJSON 格式提供用于等值区域图的行政边界作为静态资产,可以在maps.elastic.co 上进行浏览。
声明所有可用数据集的文件服务 JSON 清单的标头。
详细信息
curl -I 'https://vector.maps.elastic.co/v8.14/manifest?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=8.14.2' \ -H 'User-Agent: curl/7.81.0' \ -H 'Accept: */*' \ -H 'Accept-Encoding: gzip, deflate, br'
服务器响应
HTTP/2 200 x-guploader-uploadid: ABPtcPp_BvMdBDO5jVlutETVHmvpOachwjilw4AkIKwMrOQJ4exR9Eln4g0LkW3V_LLSEpvjYLtUtFmO0Uwr61XXUhoP_A x-goog-generation: 1689593295246576 x-goog-metageneration: 1 x-goog-stored-content-encoding: gzip x-goog-stored-content-length: 108029 content-encoding: gzip x-goog-hash: crc32c=T5gVpw== x-goog-hash: md5=6F8KWV8VTdx8FsN2iFehow== x-goog-storage-class: MULTI_REGIONAL accept-ranges: bytes content-length: 108029 access-control-allow-origin: * access-control-expose-headers: Authorization, Content-Length, Content-Type, Date, Server, Transfer-Encoding, X-GUploader-UploadID, X-Google-Trace, accept, elastic-api-version, kbn-name, kbn-version, origin server: UploadServer date: Tue, 21 Nov 2023 14:25:07 GMT expires: Tue, 21 Nov 2023 15:25:07 GMT cache-control: public, max-age=3600,no-transform age: 2170 last-modified: Mon, 17 Jul 2023 11:28:15 GMT etag: "e85f0a595f154ddc7c16c3768857a1a3" content-type: application/json alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Host: vector.maps.elastic.co User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://deployment-host/app/maps/map Origin: https://deployment-host Connection: keep-alive Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: cross-site Pragma: no-cache Cache-Control: no-cache
x-guploader-uploadid: ABPtcPoUFrCmjBeebnfRxSZp44ZHsZ-_iQg7794RU1Z7Lb2cNNxXsMRkIDa5s7VBEfyehvo-_9rcm1A3HfYW8geguUxKrw x-goog-generation: 1689593295246576 x-goog-metageneration: 1 x-goog-stored-content-encoding: gzip x-goog-stored-content-length: 108029 content-encoding: gzip x-goog-hash: crc32c=T5gVpw== x-goog-hash: md5=6F8KWV8VTdx8FsN2iFehow== x-goog-storage-class: MULTI_REGIONAL accept-ranges: bytes content-length: 108029 access-control-allow-origin: * access-control-expose-headers: Authorization, Content-Length, Content-Type, Date, Server, Transfer-Encoding, X-GUploader-UploadID, X-Google-Trace, accept, elastic-api-version, kbn-name, kbn-version, origin server: UploadServer date: Tue, 21 Nov 2023 11:24:45 GMT expires: Tue, 21 Nov 2023 12:24:45 GMT cache-control: public, max-age=3600,no-transform age: 3101 last-modified: Mon, 17 Jul 2023 11:28:15 GMT etag: "e85f0a595f154ddc7c16c3768857a1a3" content-type: application/json alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 X-Firefox-Spdy: h2
来自文件服务的 TopoJSON 格式的示例数据集的标头。
详细信息
curl -I 'https://vector.maps.elastic.co/files/world_countries_v7.topo.json?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=8.14.2' \ -H 'User-Agent: curl/7.81.0' \ -H 'Accept: */*' \ -H 'Accept-Encoding: gzip, deflate, br'
服务器响应
HTTP/2 200 x-guploader-uploadid: ABPtcPpmMffchVgfHIr-SSC00WORo145oV-1q0asjqRvjLV_7cIgyfLRfofXV-BG7huMYABFypblcgdgXRBARhpo2c88ow x-goog-generation: 1689593325442971 x-goog-metageneration: 1 x-goog-stored-content-encoding: gzip x-goog-stored-content-length: 587241 content-encoding: gzip x-goog-hash: crc32c=OcROeg== x-goog-hash: md5=8KKIwD6wbKa3YYXTnnFcZw== x-goog-storage-class: MULTI_REGIONAL accept-ranges: bytes content-length: 587241 access-control-allow-origin: * access-control-expose-headers: Authorization, Content-Length, Content-Type, Date, Server, Transfer-Encoding, X-GUploader-UploadID, X-Google-Trace, accept, elastic-api-version, kbn-name, kbn-version, origin server: UploadServer date: Tue, 21 Nov 2023 14:22:16 GMT expires: Tue, 21 Nov 2023 15:22:16 GMT cache-control: public, max-age=3600,no-transform age: 2202 last-modified: Mon, 17 Jul 2023 11:28:45 GMT etag: "f0a288c03eb06ca6b76185d39e715c67" content-type: application/json alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Host: vector.maps.elastic.co User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://deployment-host/app/maps/map Origin: https://deployment-host Connection: keep-alive Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: cross-site Pragma: no-cache Cache-Control: no-cache
x-guploader-uploadid: ABPtcPqIDSg5tyavvwwtJQa8a8iycoXOCkHBp_2YJbJJnQgb5XMD7nFwRUogg00Ou27VFIs95v7L99OMnvXR1bcb9RW-xQ x-goog-generation: 1689593325442971 x-goog-metageneration: 1 x-goog-stored-content-encoding: gzip x-goog-stored-content-length: 587241 content-encoding: gzip x-goog-hash: crc32c=OcROeg== x-goog-hash: md5=8KKIwD6wbKa3YYXTnnFcZw== x-goog-storage-class: MULTI_REGIONAL accept-ranges: bytes content-length: 587241 access-control-allow-origin: * access-control-expose-headers: Authorization, Content-Length, Content-Type, Date, Server, Transfer-Encoding, X-GUploader-UploadID, X-Google-Trace, accept, elastic-api-version, kbn-name, kbn-version, origin server: UploadServer date: Tue, 21 Nov 2023 12:16:01 GMT expires: Tue, 21 Nov 2023 13:16:01 GMT cache-control: public, max-age=3600,no-transform age: 29 last-modified: Mon, 17 Jul 2023 11:28:45 GMT etag: "f0a288c03eb06ca6b76185d39e715c67" content-type: application/json alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 X-Firefox-Spdy: h2
禁用 Elastic Maps Service编辑
如果您的 Kibana 服务器或浏览器位于专用网络上或防火墙后面,则可能会遇到 EMS 连接问题。如果发生这种情况,您可以禁用 EMS 连接以避免不必要的 EMS 请求。
要禁用 EMS,请更改您的kibana.yml 文件。
- 将
map.includeElasticMapsService
设置为false
以关闭 EMS 连接。 - 将
map.tilemap.url
设置为您的切片服务器的 URL。这将配置地图的默认切片层。
在本地托管 Elastic Maps Service编辑
有关在隔离环境中安装 Elastic 组件的更多详细信息,请参阅Elastic Stack 文档。
如果无法从 Kibana 服务器或浏览器客户端连接到 Elastic Maps Service,并且您的集群具有适当的许可证级别,则可以选择在自己的基础架构上托管该服务。
Elastic Maps Server 是 Elastic Maps Service 的自管理版本,以 Docker 镜像的形式提供,提供 EMS 底图和 EMS 边界。该镜像捆绑了最高缩放级别为 8 的底图。将其连接到 Elasticsearch 集群进行许可证验证后,您可以选择下载和配置更详细的底图数据库。
您可以使用 docker pull
从 Elastic Docker 注册表下载 Elastic Maps Server 镜像。
docker pull docker.elastic.co/elastic-maps-service/elastic-maps-server-ubi8:8.14.2
启动 Elastic Maps Server 并公开默认端口 8080
docker run --rm --init --publish 8080:8080 \ docker.elastic.co/elastic-maps-service/elastic-maps-server-ubi8:8.14.2
Elastic Maps Server 运行后,请按照 localhost:8080
网页上的说明定义配置文件,并选择下载更详细的底图数据库。
配置编辑
Elastic Maps Server 从 YAML 格式的配置文件中读取属性,并在启动时进行验证。此文件的位置由 EMS_PATH_CONF
容器环境变量提供,默认为 /usr/src/app/server/config/elastic-maps-server.yml
。可以通过使用 start 命令的 -e
docker 标志来更改此环境变量。
常规设置
指定后端服务器的主机。要允许远程用户连接,请将值设置为 Elastic Maps Server 容器的 IP 地址或 DNS 名称。 默认值:*您的主机名*。 等效的 Kibana 设置。 |
|
|
指定后端服务器使用的端口。默认值: |
|
如果您在代理后面运行,请指定要安装服务器的路径。此设置不能以斜杠 ( |
|
控制状态页面和图层预览的显示。 默认值: |
|
Elastic Maps Server 日志的详细程度。有效值为 |
|
底图数据库的路径。 默认值: |
Elasticsearch 连接和安全设置
|
用于许可证验证的 Elasticsearch 实例的 URL。 |
|
至少具有 |
|
构成 Elastic Maps Server 可信证书链的一个或多个 PEM 编码的 X.509 证书颁发机构 (CA) 证书的路径。Elastic Maps Server 使用此链在连接到您的 Elasticsearch 集群时建立信任。 等效的 Kibana 设置。 |
|
可选设置,提供 PEM 格式的 SSL 证书和密钥文件的路径以及密钥密码。这些文件用于验证 Elastic Maps Server 到 Elasticsearch 的身份,并且在 Elasticsearch 中的 |
|
控制 Elastic Maps Server 在建立到 Elasticsearch 的出站 SSL/TLS 连接时接收的服务器证书的验证。有效值为“ |
服务器安全设置
|
为到 Elastic Maps Server 的入站连接启用 SSL/TLS。设置为 |
|
构成 Elastic Maps Server 可信证书链的一个或多个 PEM 编码的 X.509 证书颁发机构 (CA) 证书的路径。Elastic Maps Server 使用此链在从最终用户接收入站 SSL/TLS 连接时建立信任。 等效的 Kibana 设置。 |
|
您的 SSL 密钥和证书文件的位置,以及解密通过 |
|
支持的协议及其版本的数组。有效协议: |
|
有关格式和有效选项的详细信息,请参阅OpenSSL 密码列表格式文档。 默认值: |
绑定挂载配置编辑
配置 Elastic Maps Server 的一种方法是通过绑定挂载提供 elastic-maps-server.yml
。使用 docker-compose
,可以像这样指定绑定挂载
version: '2' services: Elastic Maps Server: image: docker.elastic.co/elastic-maps-service/elastic-maps-server-ubi8:8.14.2 volumes: - ./elastic-maps-server.yml:/usr/src/app/server/config/elastic-maps-server.yml
环境变量配置编辑
所有配置设置都可以通过环境变量覆盖,这些环境变量的命名方式为:所有字母大写,并将 YAML 句点替换为下划线。例如,elasticsearch.ssl.certificate
可以被环境变量 ELASTICSEARCH_SSL_CERTIFICATE
覆盖。布尔变量必须使用 true
或 false
字符串。
您在环境变量中包含的所有信息,包括敏感信息,都可通过 ps
命令查看。
可以使用 docker-compose
设置这些变量,如下所示
version: '2' services: Elastic Maps Server: image: docker.elastic.co/elastic-maps-service/elastic-maps-server-ubi8:8.14.2 environment: ELASTICSEARCH_HOST: http://elasticsearch.example.org ELASTICSEARCH_USERNAME: 'ems' ELASTICSEARCH_PASSWORD: 'changeme'
数据编辑
Elastic Maps Server 为全球提供矢量图层边界和矢量切片底图。边界包括世界各国、全球行政区域和特定国家/地区。缩放级别高达 8 的底图捆绑在 Docker 映像中。这些底图足以用于国家/地区级别的地图和仪表板。要呈现更详细的地图,请按照首页上的说明下载和配置相应的底图数据库。缩放级别为 14 的最详细底图适用于街道级别的地图,但需要约 90GB 的磁盘空间。
可从 /maps
端点(网页中相当于您自管的 https://maps.elastic.co)浏览可用的底图和边界。
Kibana 配置编辑
在 Elastic Maps Server 运行的情况下,将 map.emsUrl
配置键添加到您的 kibana.yml 文件中,并指向服务的根目录。此设置将指示 Kibana 从 Elastic Maps Server 请求 EMS 底图和边界。通常,这将是 Elastic Maps Server 的 主机和端口 的 URL。例如,map.emsUrl: https://my-ems-server:8080
。
状态检查编辑
Elastic Maps Server 定期运行状态检查,该检查以三种不同的形式公开
- 在 Elastic Maps Server 的根目录下,网页将呈现不同服务的状态。
- Elastic Maps Server 状态的 JSON 表示形式可在
/status
端点获得。 - 默认情况下会运行 Docker
HEALTHCHECK
指令,该指令将告知服务运行状况,运行等效于/status
端点的进程。
如果未完成许可证验证,Elastic Maps Server 将不会响应任何数据请求。
日志记录编辑
日志以 ECS JSON 格式 生成,并发送到标准输出和 /var/log/elastic-maps-server/elastic-maps-server.log
。服务器不会自动轮换日志,但映像中安装了 logrotate
工具。如果要禁用对该文件的输出,请将 /dev/null
挂载到默认日志路径。