本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Kibana
Kibana 是一种流行的开源可视化工具,专为与 Elasticsearch 结合使用而设计。Amazon ES 为每个 Amazon ES 域默认安装 Kibana。在
Amazon ES 控制台域控制面板上可以找到 Kibana 链接。URL 为
。 使用此默认 Kibana 安装的查询具有 300 秒超时。
domain-endpoint
/_plugin/kibana/
下面几节介绍一些常见 Kibana 使用案例:
控制对 Kibana 的访问
Kibana 本身不支持 IAM 用户和角色,但 Amazon ES 提供了多种解决方案来控制对 Kibana 的访问:
-
将精细访问控制与 HTTP 基本身份验证结合使用。
-
Configure 用于 Kibana 的 Amazon Cognito 身份验证.
-
对于公有访问域,请配置一个基于 IP 的访问策略 (使用或不使用代理服务器)。
-
对于 VPC 访问域,请使用开放访问策略 (带或不带代理服务器) 和安全组来控制访问。要了解更多信息,请参阅关于 VPC 域的访问策略。
使用代理从 Kibana 访问 Amazon ES
仅当域使用公有访问权限并且不想使用用于 Kibana 的 Amazon Cognito 身份验证时,此过程适用。请参阅控制对 Kibana 的访问。
由于 Kibana 是一个 JavaScript 应用程序,因此请求源自用户的 IP 地址。基于 IP 的访问控制可能是不切实际的,因为为了让每个用户能够访问 Kibana,您需要允许的 IP 地址绝对数量太巨大。一种解决方案是在 Kibana 和 Amazon ES 之间配置一个代理服务器。然后,您可以添加基于 IP 的访问策略,仅允许来自一个 IP 地址(即代理服务器)的请求。下图演示了此配置。

-
这是您的 Amazon ES 域。IAM 提供对此域的授权访问权限。此外,基于 IP 的访问策略提供对代理服务器的访问权限。
-
这是在 Amazon EC2 实例上运行的代理服务器。
-
其他应用程序可以使用签名版本 4 签名流程将通过身份验证的请求发送到 Amazon ES。
-
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 地址连接到实例。要了解更多信息,请参阅 https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html 中的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 地图服务器:
-
打开 Kibana。
-
选择 Management (管理)。
-
选择 Advanced Settings (高级设置)。
-
找到 visualization:tileMap:WMSdefaults。
-
将
enabled
更改为true
并将url
更改为有效 WMS 地图服务器的 URL:{ "enabled": true, "url": "
wms-server-url
", "options": { "format": "image/png", "transparent": true } } -
选择 Save。
要将新的默认值应用于可视化,您可能需要重新加载 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: ".kibanalocal" # 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 工作。在所有情况下,添加 http
或 https
前缀。对于较旧版本,您必须显式指定端口 80 或 443。对于较新版本,可以省略端口。
其他功能
与 Kibana 的开源版本相比,每个 Amazon ES 域上的默认 Kibana 安装有一些额外的功能: