连接到 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 图块服务以三种不同的样式提供基础地图,作为地图可视化的默认背景。基础地图使用遵循 OpenMapTiles 模式的 OpenStreetMap 数据,并且可以在 maps.elastic.co 上进行探索。
用于描述可用基础地图的图块服务 JSON 清单的标头。
详细信息
curl -I 'https://tiles.maps.elastic.co/v8.17/manifest?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=8.17.0' \ -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.17.0' \ -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.17/manifest?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=8.17.0' \ -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.17.0' \ -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 集群以进行许可证验证后,您可以选择下载并配置更详细的基础地图数据库。
-
拉取 Elastic Maps Server Docker 映像。
+
docker pull {ems-docker-image}
-
可选:为您的环境安装 Cosign。然后使用 Cosign 验证 Elasticsearch 映像的签名。
wget https://artifacts.elastic.co/cosign.pub cosign verify --key cosign.pub docker.elastic.co/elastic-maps-service/elastic-maps-server:8.17.0
cosign
命令以 JSON 格式打印检查结果和签名有效负载Verification for docker.elastic.co/elastic-maps-service/elastic-maps-server:8.17.0 -- The following checks were performed on each of these signatures: - The cosign claims were validated - Existence of the claims in the transparency log was verified offline - The signatures were verified against the specified public key
-
启动 Elastic Maps Server 并公开默认端口
8080
docker run --rm --init --publish 8080:8080 \ docker.elastic.co/elastic-maps-service/elastic-maps-server:8.17.0
Elastic Maps Server 运行后,按照
localhost:8080
上的网页中的说明定义配置文件,并可以选择下载更详细的基础地图数据库。
配置
编辑Elastic Maps Server 从 YAML 格式的配置文件中读取属性,该文件在启动时进行验证。此文件的位置由 EMS_PATH_CONF
容器环境变量提供,默认为 /usr/src/app/server/config/elastic-maps-server.yml
。可以通过使用启动命令的 -e
docker 标志来更改此环境变量。
常规设置
指定后端服务器的主机。要允许远程用户连接,请将该值设置为 Elastic Maps Server 容器的 IP 地址或 DNS 名称。 默认值:your-hostname。 等效 Kibana 设置。 |
|
|
指定后端服务器使用的端口。默认值: |
|
如果您在代理后面运行,请指定服务器的挂载路径。此设置不能以斜杠 ( |
|
控制状态页面和图层预览的显示。 默认值: |
|
Elastic Maps Server 日志的详细程度。有效值包括 |
|
基础地图数据库的路径。 默认值: |
Elasticsearch 连接和安全设置
|
用于许可证验证的 Elasticsearch 实例的 URL。 |
|
具有至少 |
|
构成 Elastic Maps Server 受信任证书链的一个或多个 PEM 编码的 X.509 证书颁发机构 (CA) 证书的路径。此链由 Elastic Maps Server 在连接到您的 Elasticsearch 集群时用于建立信任。 等效 Kibana 设置。 |
|
提供 PEM 格式 SSL 证书和密钥文件以及密钥密码的路径的可选设置。当 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
,可以像这样指定绑定挂载
services: ems-server: image: docker.elastic.co/elastic-maps-service/elastic-maps-server:8.17.0 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
像这样设置这些变量
services: ems-server: image: docker.elastic.co/elastic-maps-service/elastic-maps-server:8.17.0 environment: ELASTICSEARCH_HOST: http://elasticsearch.example.org ELASTICSEARCH_USERNAME: 'ems' ELASTICSEARCH_PASSWORD: 'changeme'
数据
编辑Elastic Maps Server 托管整个地球的矢量图层边界和矢量图块基础地图。边界包括世界各国、全球行政区域和特定国家/地区的区域。Docker 映像中捆绑了高达 8 级缩放级别的基础地图。这些基础地图足以满足国家/地区级别的地图和仪表板的需求。要呈现更详细的地图,请按照首页的说明下载并配置适当的基础地图数据库。14 级缩放级别的最详细的基础地图适合街道级别地图,但需要约 90GB 的磁盘空间。
可以通过 /maps
端点在一个网页中探索可用的基础地图和边界,该网页是您自管理的 https://maps.elastic.co 的等效网页。
Kibana 配置
编辑在 Elastic Maps Server 运行后,在您的 kibana.yml 文件中添加 map.emsUrl
配置项,指向服务的根目录。此设置将指示 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
挂载到默认日志路径。