连接到 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.14/manifest?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=8.14.3' \
-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

来自图块服务的 _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.3' \
-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

来自图块服务的精灵图像资产的标头

详情
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

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.3' \
-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

文件服务中 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.3' \
-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

禁用 Elastic Maps Service编辑

如果您的 Kibana 服务器或浏览器位于专用网络上或防火墙后面,则可能会遇到 EMS 连接问题。如果发生这种情况,您可以禁用 EMS 连接以避免不必要的 EMS 请求。

要禁用 EMS,请更改您的 kibana.yml 文件。

  1. map.includeElasticMapsService 设置为 false 以关闭 EMS 连接。
  2. map.tilemap.url 设置为您的图块服务器的 URL。这将配置地图的默认图块层。

在本地托管 Elastic Maps Service编辑

Elastic Stack 文档 中查找有关在隔离环境中安装 Elastic 组件的更多详细信息。

如果无法从 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.3

启动 Elastic Maps Server 并公开默认端口 8080

docker run --rm --init --publish 8080:8080 \
  docker.elastic.co/elastic-maps-service/elastic-maps-server-ubi8:8.14.3

Elastic Maps Server 运行后,请按照 localhost:8080 网页上的说明定义配置文件并选择下载更详细的底图数据库。

Set-up instructions

配置编辑

Elastic Maps Server 从 YAML 格式的配置文件中读取属性,该文件在启动时进行验证。此文件的位置由 EMS_PATH_CONF 容器环境变量提供,默认为 /usr/src/app/server/config/elastic-maps-server.yml。可以使用 start 命令的 -e docker 标志更改此环境变量。

常规设置

host

指定后端服务器的主机。要允许远程用户连接,请将值设置为 Elastic Maps Server 容器的 IP 地址或 DNS 名称。 默认值:_您的主机名_等效的 Kibana 设置

端口

指定后端服务器使用的端口。默认值: 8080等效的 Kibana 设置

basePath

如果您在代理后面运行,请指定要挂载服务器的路径。此设置不能以斜杠 (/) 结尾。 等效的 Kibana 设置

ui

控制状态页面和图层预览的显示。 默认值:true

logging.level

Elastic Maps Server 日志的详细程度。有效值为 tracedebuginfowarnerrorfatalsilent默认值:info

path.planet

底图数据库的路径。 默认值:/usr/src/app/data/planet.mbtiles

Elasticsearch 连接和安全设置

elasticsearch.host

用于许可证验证的 Elasticsearch 实例的 URL。

elasticsearch.usernameelasticsearch.password

至少具有 monitor 角色的用户的凭据。

elasticsearch.ssl.certificateAuthorities

构成 Elastic Maps Server 受信任证书链的一个或多个 PEM 编码的 X.509 证书颁发机构 (CA) 证书的路径。Elastic Maps Server 使用此链在连接到您的 Elasticsearch 集群时建立信任。 等效的 Kibana 设置

elasticsearch.ssl.certificateelasticsearch.ssl.keyelasticsearch.ssl.keyPassphrase

可选设置,提供 PEM 格式 SSL 证书和密钥文件的路径以及密钥密码。这些文件用于验证 Elastic Maps Server 到 Elasticsearch 的身份,并且在 Elasticsearch 中的 xpack.security.http.ssl.client_authentication 设置为 required 时是必需的。 等效的 Kibana 设置

elasticsearch.ssl.verificationMode

控制 Elastic Maps Server 在建立到 Elasticsearch 的出站 SSL/TLS 连接时收到的服务器证书的验证。有效值为“full”、“certificate”和“none”。使用“full”执行主机名验证,使用“certificate”跳过主机名验证,使用“none”完全跳过验证。 默认值:full等效的 Kibana 设置

服务器安全设置

ssl.enabled

为到 Elastic Maps Server 的入站连接启用 SSL/TLS。设置为 true 时,必须提供证书及其相应的私钥。 默认值:false等效的 Kibana 设置

ssl.certificateAuthorities

构成 Elastic Maps Server 受信任证书链的一个或多个 PEM 编码的 X.509 证书颁发机构 (CA) 证书的路径。Elastic Maps Server 使用此链在从最终用户接收入站 SSL/TLS 连接时建立信任。 等效的 Kibana 设置

ssl.keyssl.certificatessl.keyPassphrase

您的 SSL 密钥和证书文件的位置,以及解密通过 ssl.key 指定的私钥的密码。此密码是可选的,因为密钥可能未加密。 等效的 Kibana 设置

ssl.supportedProtocols

支持的协议和版本的数组。有效协议:TLSv1TLSv1.1TLSv1.2默认值:TLSv1.1TLSv1.2等效的 Kibana 设置

ssl.cipherSuites

有关格式和有效选项的详细信息,请参阅 OpenSSL 密码列表格式文档默认值:TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, DHE-RSA-AES128-GCM-SHA256, ECDHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, DHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA256, HIGH,!aNULL, !eNULL, !EXPORT, !DES, !RC4, !MD5, !PSK, !SRP, !CAMELLIA等效的 Kibana 设置

绑定挂载配置编辑

配置 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.3
    volumes:
      - ./elastic-maps-server.yml:/usr/src/app/server/config/elastic-maps-server.yml
环境变量配置编辑

所有配置设置都可以通过环境变量覆盖,这些变量的命名方式为:所有字母都大写,并将 YAML 句点替换为下划线。例如,elasticsearch.ssl.certificate 可以被环境变量 ELASTICSEARCH_SSL_CERTIFICATE 覆盖。布尔变量必须使用 truefalse 字符串。

您在环境变量中包含的所有信息都可以通过 ps 命令查看,包括敏感信息。

可以使用以下方式使用 docker-compose 设置这些变量

version: '2'
services:
  Elastic Maps Server:
    image: docker.elastic.co/elastic-maps-service/elastic-maps-server-ubi8:8.14.3
    environment:
      ELASTICSEARCH_HOST: http://elasticsearch.example.org
      ELASTICSEARCH_USERNAME: 'ems'
      ELASTICSEARCH_PASSWORD: 'changeme'

数据编辑

Elastic Maps Server 为整个星球托管矢量图层边界和矢量切片底图。边界包括世界各国、全球行政区域和特定国家/地区。缩放级别高达 8 的底图捆绑在 Docker 映像中。这些底图足以用于国家/地区级别的地图和仪表板。要呈现更详细的地图,请按照首页上的说明下载并配置适当的底图数据库。缩放级别为 14 的最详细底图适用于街道级别的地图,但需要约 90GB 的磁盘空间。

Basemaps download options

可以从 /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 挂载到默认日志路径。