将 Kibana 与 Amazon Elasticsearch Service 结合使用 - Amazon Elasticsearch Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Kibana 与 Amazon Elasticsearch Service 结合使用

Kibana 是一种流行的开源虚拟化工具,专为与 Elasticsearch 结合使用而设计。Amazon Elasticsearch Service (Amazon ES) 为每个 Amazon ES 域安装 Kibana。在 Amazon ES 控制台域控制面板上可以找到 Kibana 链接。URL 为 domain-endpoint/_plugin/kibana/。使用此默认 Kibana 安装的查询具有 300 秒超时。

下面几节介绍一些常见 Kibana 使用案例:

控制对 Kibana 的访问

Kibana 本身不支持 IAM 用户和角色,但 Amazon ES 提供了多种解决方案来控制对 Kibana 的访问:

使用代理从基巴纳访问亚马逊 ES

注意

仅当域使用公有访问权限并且不想使用配置用于 Kibana 的 Amazon Cognito 身份验证时,此过程适用。请参阅 控制对 Kibana 的访问

Kibana 是 JavaScript 应用程序,因此请求源自用户的 IP 地址。基于 IP 的访问控制可能是不切实际的,这是因为,为了让每个用户能够访问 Kibana,需要允许的 IP 地址绝对数量太巨大。一种解决方案是在 Kibana 和 Amazon ES 之间配置一个代理服务器。然后,您可以添加基于 IP 的访问策略,仅允许来自一个 IP 地址(即代理服务器)的请求。下图演示了此配置。

  1. 这是您的 Amazon ES 域。IAM 提供对此域的授权访问权限。此外,基于 IP 的访问策略提供对代理服务器的访问权限。

  2. 这是在 Amazon EC2 实例上运行的代理服务器。

  3. 其他应用程序可以使用签名版本 4 签名流程将通过身份验证的请求发送到 Amazon ES。

  4. Kibana 客户端通过代理连接到 Amazon ES 域。

要启用这种配置,需要在基于资源的策略中指定角色和 IP 地址。下面是示例策略:

{ "Version": "2012-10-17", "Statement": [{ "Resource": "arn:aws:es:us-west-2:111111111111:domain/my-domain/*", "Principal": { "AWS": "arn:aws:iam::111111111111:role/allowedrole1" }, "Action": [ "es:ESHttpGet" ], "Effect": "Allow" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Condition": { "IpAddress": { "aws:SourceIp": [ "123.456.789.123" ] } }, "Resource": "arn:aws:es:us-west-2:111111111111:domain/my-domain/*" } ] }

建议使用弹性 IP 地址配置在代理服务器上运行的 EC2 实例。这样,如果有必要替换实例,仍然可以用相同的公有 IP 地址连接到实例。要了解更多信息,请参阅弹性 IP 地址中的适用于 Linux 实例的 Amazon EC2 用户指南

如果使用代理服务器 配置用于 Kibana 的 Amazon Cognito 身份验证,可能需要添加 Kibana 和 Amazon Cognito 的设置以避免redirect_mismatch错误。请参阅以下 nginx.conf 示例:

server { listen 443; server_name $host; rewrite ^/$ https://$host/_plugin/kibana redirect; ssl_certificate /etc/nginx/cert.crt; ssl_certificate_key /etc/nginx/cert.key; ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; location /_plugin/kibana { # Forward requests to Kibana proxy_pass https://$kibana_host/_plugin/kibana; # Handle redirects to Cognito proxy_redirect https://$cognito_host https://$host; # Update cookie domain and path proxy_cookie_domain $kibana_host $host; proxy_cookie_path / /_plugin/kibana/; # Response buffer settings proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } location ~ \/(log|sign|fav|forgot|change|saml|oauth2) { # Forward requests to Cognito proxy_pass https://$cognito_host; # Handle redirects to Kibana proxy_redirect https://$kibana_host https://$host; # Update cookie domain proxy_cookie_domain $cognito_host $host; } }

将 Kibana 配置为使用 WMS 地图服务器

Amazon ES Kibana 默认安装包括地图服务,但印度和中国区域的域除外。地图服务最多支持 10 个缩放级别。

无论您的区域如何,您都可以将 Kibana 配置为使用不同的 Web 地图服务 (WMS) 服务器来提供坐标地图可视化。区域地图可视化只支持默认地图服务。

将 Kibana 配置为使用 WMS 地图服务器:

  1. 打开 Kibana。

  2. 选择 Management (管理)

  3. 选择 Advanced Settings (高级设置)

  4. 找到 visualization:tileMap:WMSdefaults

  5. enabled 更改为 true 并将 url 更改为有效 WMS 地图服务器的 URL:

    { "enabled": true, "url": "wms-server-url", "options": { "format": "image/png", "transparent": true } }
  6. 选择 Save

要将新的默认值应用于可视化,您可能需要重新加载 Kibana。如果已保存可视化,请在打开可视化后,选择 Options (选项)。验证是否已启用 WMS map server (WMS 地图服务器) 并且 WMS URL 包含首选地图服务器,然后选择 Apply changes (应用更改)

注意

地图服务通常具有许可费用或限制。您负责考虑有关指定的任何地图服务器的所有此类事项。您可能会发现来自美国地质调查局的地图服务对测试非常有用。

将本地 Kibana 服务器连接到 Amazon ES

如果您已投入大量时间来配置自己的 Kibana 实例,则可以使用该实例而不是 (或以及) Amazon ES 提供的默认 Kibana 实例。

将本地 Kibana 服务器连接到 Amazon ES:

以下步骤适用于使用Amazon Elasticsearch (Amazon Elasticsearch Service) 中的精细访问控制使用开放访问策略。

在您的 Amazon ES 域中,创建具有相应权限的用户:

  1. 在基巴纳,转到安全内部用户,然后选择创建内部用户

  2. 提供用户名和密码,然后选择Create

  3. 转到角色,然后选择一个角色。

  4. Select映射的用户并选择管理映射

  5. In用户,添加您的用户名,然后选择映射

在您的本地 Kibana 服务器上,打开config/kibana.yml文件并使用用户名和密码添加您的 Amazon ES 终端节点:

elasticsearch.hosts: ['<amazon-elasticsearch-endpoint>'] elasticsearch.username: 'username' elasticsearch.password: 'password'

您可以使用以下示例kibana.ymlfile:

server.host: '0.0.0.0' elasticsearch.hosts: ['<amazon-elasticsearch-url>'] kibana.index: ".username" elasticsearch.ssl.verificationMode: none # if not using HTTPS opendistro_security.auth.type: basicauth opendistro_security.auth.anonymous_auth_enabled: false opendistro_security.cookie.secure: false # set to true when using HTTPS opendistro_security.cookie.ttl: 3600000 opendistro_security.session.ttl: 3600000 opendistro_security.session.keepalive: false opendistro_security.multitenancy.enabled: false opendistro_security.readonly_mode.roles: ['kibana_read_only'] opendistro_security.auth.unauthenticated_routes: [] opendistro_security.basicauth.login.title: 'Please log in using your user name and password' elasticsearch.username: 'username' elasticsearch.password: 'password' elasticsearch.requestHeadersWhitelist: [ authorization, securitytenant, security_tenant, ]

要查看您的亚马逊 ES 指数,请启动您的本地 Kibana 服务器,请转到开发工具并运行以下命令:

GET _cat/indices

管理基巴纳的指数

Amazon ES 域中的 Kibana 安装提供了一个有用的用户界面,用于管理域中不同存储层中的索引。选择索引管理从 Kibana 主菜单中查看所有热门指数,UltraWarm, 和存储,以及由索引状态管理 (ISM) 策略管理的索引。使用索引管理可以在热存储和冷存储之间移动索引,并监视三个层之间的迁移。

其他功能

与 Kibana 的开源版本相比,每个 Amazon ES 域上的默认 Kibana 安装具有一些附加功能: