生产环境部署
Kibana5 是是一个完整的 web 应用。使用时,你需要做的只是打开浏览器,然后输入你运行 Kibana 的机器地址然后加上端口号。比如说:localhost:5601
或者 http://YOURDOMAIN.com:5601
。
但是当你准备在生产环境使用 Kibana5 的时候,比起在本机运行,就需要多考虑一些问题:
在哪运行 kibana
是否需要加密 Kibana 出入的流量
是否需要控制访问数据的权限
Nginx 代理配置
因为 Kibana5 不再是 Kibana3 那种纯静态文件的单页应用,所以其服务器端是需要消耗计算资源的。因此,如果用户较多,Kibana5 确实有可能需要进行多点部署,这时候,就需要用 Nginx 做一层代理了。
和 Kibana3 相比,Kibana5 的 Nginx 代理配置倒是简单许多,因为所有流量都是统一配置的。下面是一段包含入口流量加密、简单权限控制的 Kibana5 代理配置:
如果用户够多,当然你可以单独跑一个 kibana5 集群,然后在 upstream
配置段中添加多个代理地址做负载均衡。
配置 Kibana 和 shield 一起工作
Nginx 只能加密和管理浏览器到服务器端的请求,而 Kibana5 到 ELasticsearch 集群的请求,就需要由 Elasticsearch 方面来完成了。如果你在用 Shield 做 Elasticsearch 用户认证,你需要给 Kibana 提供用户凭证,这样它才能访问 .kibana
索引。Kibana 用户需要由权限访问 .kibana
索引里以下操作:
更多配置 Shield 的内容,请阅读官网的 Shield with Kibana 4。
要配置 Kibana 的凭证,设置 kibana.yml
里的 kibana_elasticsearch_username
和 kibana_elasticsearch_password
选项即可:
开启 ssl
Kibana 同时支持对客户端请求以及 Kibana 服务器发往 Elasticsearch 的请求做 SSL 加密。
要加密浏览器(或者在 Nginx 代理情况下,Nginx 服务器)到 Kibana 服务器之间的通信,配置 kibana.yml
里的 ssl_key_file
和 ssl_cert_file
参数:
如果你在用 Shield 或者其他提供 HTTPS 的代理服务器保护 Elasticsearch,你可以配置 Kibana 通过 HTTPS 方式访问 Elasticsearch,这样 Kibana 服务器和 Elasticsearch 之间的通信也是加密的。
要做到这点,你需要在 kibana.yml
里配置 Elasticsearch 的 URL 时指明是 HTTPS 协议:
如果你给 Elasticsearch 用的是自己签名的证书,请在 kibana.yml
里设定 ca
参数指明 PEM 文件位置,这也意味着开启了 verify_ssl
参数:
控制访问权限
你可以用 Elasticsearch Shield 来控制用户通过 Kibana 可以访问到的 Elasticsearch 数据。Shield 提供了索引级别的访问控制。如果一个用户没被许可运行这个请求,那么它在 Kibana 可视化界面上只能看到一个空白。
要配置 Kibana 使用 Shield,你要为 Kibana 创建一个或者多个 Shield 角色(role),以 kibana5
作为开头的默认角色。更详细的做法,请阅读 Using Shield with Kibana 4。
Last updated
Was this helpful?