在生产环境中使用 Kibana

贡献者 : 那伊抹微笑ApacheCNApache中文网

如何部署 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_filessl_cert_file属性 :

  1. # SSL for outgoing requests from the Kibana Server (PEM formatted)
  2. server.ssl.key: /path/to/your/server.key
  3. server.ssl.cert: /path/to/your/server.crt

如果您使用的是 X-Pack Security 或是为 Elasticsearch 提供的 HTTPS 端点的代理,则可以将 Kibana 配置为通过 HTTPS 访问 Elasticsearch,以便对 Kibana 服务器和 Elasticsearch 之间的通信进行加密。

为此,当您在 kibana.yml 文件中配置 Elasticsearch URL 时需要指定 HTTPS 协议 :

  1. elasticsearch: "https://<your_elasticsearch_host>.com:9200"

如果您针对 Elasticsearch 使用了一个自签名的证书,在 kibana.yml 文件中指定 ca 属性来指定 PEM 文件的位置。设置此 ca属性可让您保留此 verify_ssl选项。

  1. # If you need to provide a CA certificate for your Elasticsearch instance, put
  2. # the path of the pem file here.
  3. ca: /path/to/your/ca/cacert.pem

跨多个 Elasticsearch 节点的负载均衡

如果您的 Elasticsearch 集群有多个节点,则跨节点分发 Kibana 请求的最简单方法是在与 Kibana 相同的服务器上只运行 Elasticsearch Coordinating 节点。只有Elasticsearch Coordinating 节点本质上是作为集群一部分的智能负载均衡器。它们处理传入的 HTTP 请求,根据需要将操作重定向到集群中的其他节点,并收集并返回结果。有关更多信息,请参阅 Elasticsearch 指南中的 Node

为了使用本地客户机节点来负载平衡 Kibana 请求 :

  1. 在与 Kibana 相同的计算机上安装 Elasticsearch
  2. 将节点配置为仅 Coordinating 节点。在 elasticsearch.yml 文件中,设置 **node.data**,node.masternode.ingest**false** :

    1. # 3\. You want this node to be neither master nor data node nor ingest node, but
    2. # to act as a "search load balancer" (fetching data from nodes,
    3. # aggregating results, etc.)
    4. #
    5. node.master: false
    6. node.data: false
    7. node.ingest: false
  3. 配置客户端节点加入集群。在 **elasticsearch.yml** 文件中,设置 **cluster.name** 为集群名称 :

    1. cluster.name: "my_cluster"
  4. 在 **elasticsearch.yml** 文件的 **network.host** 和 **transport.host** 下方检查 **transport** 和 **HTTP** 主机配置。

    1. network.host: localhost
    2. http.port: 9200
    3. # by default transport.host refers to network.host
    4. transport.host: &lt;external ip&gt;
    5. transport.tcp.port: 9300 - 9400
  5. 确保 **Kibana** 配置为指向本地客户机节点。在 `**kibana.yml** 文件中,将 `**`elasticsearch.url `**设置为 **`localhost:9200`**。

    1. # The Elasticsearch instance to use for all your queries.
    2. elasticsearch.url: "http://localhost:9200"