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

Kibana

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

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

控制对 Kibana 的访问

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

域配置 访问控制选项
公有访问权限
VPC 访问

使用代理从 Kibana 访问 Amazon 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 地址连接到实例。要了解更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的弹性 IP 地址

如果使用代理服务器 用于 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 默认安装包括地图服务,但印度和中国区域的域除外。无论您的区域如何,您都可以将 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. 选择保存

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

注意

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

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

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

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

  • config/kibana.yml 进行以下更改:

    kibana.index: ".kibana_1" # Use elasticsearch.url for versions older than 6.6 # elasticsearch.url: "https://domain-endpoint:443" # Use elasticsearch.hosts for versions 6.6 and later elasticsearch.hosts: "https://domain-endpoint:443"

较旧版本的 Elasticsearch 只能通过 HTTP 工作。在所有情况下,添加 httphttps 前缀。对于较旧版本,您必须显式指定端口 80 或 443。对于较新版本,可以省略端口。