在生产环境中使用 Kibana
贡献者 : 那伊抹微笑,ApacheCN,Apache中文网
如何部署 Kibana 主要取决于您的使用情况。如果您是唯一的用户,则可以在本地计算机上运行 Kibana,并将其配置为指向要与之交互的任何 Elasticsearch 实例。相反,如果您有大量的重度 Kibana 用户,您可能需要在多个连接到同一 Elasticsearch 实例的 Kibana 实例上进行负载均衡。
虽然 Kibana 不是资源密集型程序,但是我们仍然建议从您的 Elasticsearch data(数据)或 master(主)节点独立运行 Kibana。要在 Elasticsearch 集群中的节点上分发 Kibana 流量,您可以在同一台计算机上运行 Kibana 和 Elasticsearch 客户机节点。有关更多信息,请参阅 跨多个Elasticsearch 节点进行负载平衡。
使用 Kibana 与 X-Pack
您可以使用 X-Pack Security 来控制用户可以通过 Kibana 访问的 Elasticsearch data(数据)。
当您安装 X-Pack 时后,Kibana 用户必须登录。他们需要具有 kibana_user
角色来访问他们将在 Kibana 中使用的索引。
如果用户加载了一个 Kibana 仪表板,并且它访问的索引中有未被授权查看的数据,那么他们会收到一条错误,指示该索引不存在。X-Pack Security 目前不提供控制哪些用户可以加载哪些仪表板的方法。
有关设置 Kibana 用户以及如何配置 Kibana 以使用 X-Pack 的信息,请参阅 https://www.elastic.co/guide/en/x-pack/5.2/kibana.html。
启用 SSL
Kibana 支持客户端请求和 Kibana 服务器发送到 Elasticsearch 的请求的 SSL 加密。
要加密浏览器和 Kibana 服务器之间的通信,请在 **kibana.yml** 中
配置 ssl_key_file
,ssl_cert_file
属性 :
# SSL for outgoing requests from the Kibana Server (PEM formatted)
server.ssl.key: /path/to/your/server.key
server.ssl.cert: /path/to/your/server.crt
如果您使用的是 X-Pack Security 或是为 Elasticsearch 提供的 HTTPS 端点的代理,则可以将 Kibana 配置为通过 HTTPS 访问 Elasticsearch,以便对 Kibana 服务器和 Elasticsearch 之间的通信进行加密。
为此,当您在 kibana.yml 文件中配置 Elasticsearch URL 时需要指定 HTTPS 协议 :
elasticsearch: "https://<your_elasticsearch_host>.com:9200"
如果您针对 Elasticsearch 使用了一个自签名的证书,在 kibana.yml 文件中指定 ca 属性来指定 PEM 文件的位置。设置此 ca
属性可让您保留此 verify_ssl
选项。
# If you need to provide a CA certificate for your Elasticsearch instance, put
# the path of the pem file here.
ca: /path/to/your/ca/cacert.pem
跨多个 Elasticsearch 节点的负载均衡
如果您的 Elasticsearch 集群有多个节点,则跨节点分发 Kibana 请求的最简单方法是在与 Kibana 相同的服务器上只运行 Elasticsearch Coordinating 节点。只有Elasticsearch Coordinating 节点本质上是作为集群一部分的智能负载均衡器。它们处理传入的 HTTP 请求,根据需要将操作重定向到集群中的其他节点,并收集并返回结果。有关更多信息,请参阅 Elasticsearch 指南中的 Node。
为了使用本地客户机节点来负载平衡 Kibana 请求 :
- 在与 Kibana 相同的计算机上安装 Elasticsearch。
将节点配置为仅 Coordinating 节点。在 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.yml** 文件中,设置 **cluster.name** 为集群名称 :
cluster.name: "my_cluster"
在 **elasticsearch.yml** 文件的 **network.host** 和 **transport.host** 下方检查 **transport** 和 **HTTP** 主机配置。
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"