生产环境中使用Kibana
在 Kibana 中使用 X-Pack
使用 X-Pack 安全模块 控制用户通过 Kibana 可以访问哪些 Elasticsearch 数据。
当安装 X-Pack 时,Kibana 用户必须登陆。这些用户需要用 kibana_user
角色来访问通过 Kibana 管理的索引库。
如果一个用户要通过 Kibana 仪表板访问某个索引库中的数据,但没有权限查看,他们会收到一个错误提示:索引不存在。X-Pack 的安全机制目前还不能提供一种方法来控制不同的用户加载不同的仪表板。
关于设置 Kibana 用户和 X-Pack 信息,请参见 X-Pack 安全插件.
启用 SSL
不管是客户端的请求,还是 Kibana 服务端发给 Elasticsearch 的请求,Kibana 都支持 SSL 加密。
要加密浏览器和 Kibana 服务端之间的会话,请配置 kibana.yml
文件中的 server.ssl.enabled
、 server.ssl.certificate
和 server.ssl.key
属性:
# SSL for outgoing requests from the Kibana Server (PEM formatted)
server.ssl.enabled: true
server.ssl.key: /path/to/your/server.key
server.ssl.certificate: /path/to/your/server.crt
如果 Elasticsearch 使用 X-Pack 安全协议或者设置了 HTTPS 代理。您可以设置 Kibana 通过 HTTPS 访问 Elasticsearch,这样 Kibana 服务端和 Elasticsearch 的会话就会被加密。
需要这样的话,就得在配置文件 kibana.yml
中设置 Elasticsearch URL 指定使用 HTTPS 协议:
elasticsearch.url: "https://<your_elasticsearch_host>.com:9200"
如果 Elasticsearch 使用了自签名证书,设置 kibana.yml
文件中的 certificateAuthorities
属性指向 PEM 文件的位置,设置 certificateAuthorities
属性可以使用默认的 verificationMode
选项 full
。
# If you need to provide a CA certificate for your Elasticsearch instance, put
# the path of the pem file here.
elasticsearch.ssl.certificateAuthorities: [ "/path/to/your/ca/cacert.pem" ]
多个 Elasticsearch 节点间的负载均衡
如果 Elasticsearch 集群有多个节点,分发 Kibana 节点之间请求的最简单的方法就是在 Kibana 机器上运行一个 Elasticsearch 协调(Coordinating only node) 的节点。Elasticsearch 协调节点本质上是智能负载均衡器,也是集群的一部分,如果有需要,这些节点会处理传入 HTTP 请求,重定向操作给集群中其它节点,收集并返回结果。更多详细信息,请参考 节点 部分。
使用本地客户端节点负载均衡 Kibana 请求:
-
在安装 Kibana 的机器上安装 Elasticsearch。
-
配置节点为协调节点。在配置文件
elasticsearch.yml
中,设置node.data
、node.master
和node.ingest
为false
:# 3. You want this node to be neither master nor data node nor ingest node, but # to act as a "search load balancer" (fetching data from nodes, # aggregating results, etc.) # node.master: false node.data: false node.ingest: false
-
设置客户端节点接入 Elasticsearch 集群。在配置文件
elasticsearch.yml
中,通过cluster.name
选项设定集群名字。cluster.name: "my_cluster"
-
检查
elasticsearch.yml
中的 transport 和 HTTP 主机配置:network.host
和transport.host
。transport.host
需要为集群中其它成员网络可达,network.host
是访问 Kibana 的 HTTP 网络连接(默认为 localhost:9200 )。network.host: localhost http.port: 9200 # by default transport.host refers to network.host transport.host: <external ip> transport.tcp.port: 9300 - 9400
-
请确认 Kibana 设置为指向本地客户端节点。在配置文件
kibana.yml
中,elasticsearch.url
应设为localhost:9200
。# The Elasticsearch instance to use for all your queries. elasticsearch.url: "http://localhost:9200"