使用 Docker 安装 Kibana

编辑

使用 Docker 安装 Kibana编辑

Kibana 的 Docker 镜像可从 Elastic Docker 仓库获取。基础镜像为 ubuntu:20.04.

所有已发布的 Docker 镜像和标签列表可在 www.docker.elastic.co 上找到。源代码位于 GitHub 上。

这些镜像包含免费和订阅功能。开始 30 天试用 以试用所有功能。

在 Docker 中运行 Kibana 用于开发编辑

使用 Docker 命令在单节点 Elasticsearch 集群上运行 Kibana 用于开发或测试。

此设置默认情况下不运行多个 Elasticsearch 节点。要使用 Kibana 创建多节点集群,请改用 Docker Compose。请参阅 Elasticsearch 文档中的 使用 Docker Compose 启动多节点集群

  1. 安装 Docker。访问 获取 Docker 以安装适合您环境的 Docker。

    如果使用 Docker Desktop,请确保至少分配 4GB 内存。您可以在 Docker Desktop 中转到 设置 > 资源 来调整内存使用情况。

  2. 为 Elasticsearch 和 Kibana 创建一个新的 Docker 网络。

    docker network create elastic
  3. 拉取 Elasticsearch Docker 镜像。

    docker pull docker.elastic.co/elasticsearch/elasticsearch:8.14.2
  4. 可选:为您的环境安装 Cosign。然后使用 Cosign 验证 Elasticsearch 镜像的签名。

    wget https://artifacts.elastic.co/cosign.pub
    cosign verify --key cosign.pub docker.elastic.co/elasticsearch/elasticsearch:8.14.2

    cosign 命令以 JSON 格式打印检查结果和签名有效负载。

    Verification for docker.elastic.co/elasticsearch/elasticsearch:8.14.2 --
    The following checks were performed on each of these signatures:
      - The cosign claims were validated
      - Existence of the claims in the transparency log was verified offline
      - The signatures were verified against the specified public key
  5. 启动 Elasticsearch 容器。

    docker run --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.14.2

    使用 -m 标志为容器设置内存限制。这消除了 手动设置 JVM 大小 的需要。

    该命令将打印 elastic 用户密码和 Kibana 的注册令牌。

  6. 复制生成的 elastic 密码和注册令牌。这些凭据仅在您首次启动 Elasticsearch 时显示。您可以使用以下命令重新生成凭据。

    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
  7. 拉取 Kibana Docker 镜像。

    docker pull docker.elastic.co/kibana/kibana:8.14.2
  8. 可选:验证 Kibana 镜像的签名。

    wget https://artifacts.elastic.co/cosign.pub
    cosign verify --key cosign.pub docker.elastic.co/kibana/kibana:8.14.2
  9. 启动 Kibana 容器。

    docker run --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.14.2
  10. Kibana 启动后,它会将一个唯一的生成链接输出到终端。要访问 Kibana,请在 Web 浏览器中打开此链接。
  11. 在浏览器中,输入启动 Elasticsearch 时生成的注册令牌。

    要重新生成令牌,请运行

    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
  12. 使用启动 Elasticsearch 时生成的密码以 elastic 用户身份登录 Kibana。

    要重新生成密码,请运行

    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

删除 Docker 容器编辑

要删除容器及其网络,请运行

# Remove the Elastic network
docker network rm elastic

# Remove the Elasticsearch container
docker rm es01

# Remove the Kibana container
docker rm kib01

在 Docker 上配置 Kibana编辑

Docker 镜像提供了多种配置 Kibana 的方法。传统方法是提供一个 kibana.yml 文件,如 配置 Kibana 中所述,但也可以使用环境变量来定义设置。

绑定挂载配置编辑

在 Docker 上配置 Kibana 的一种方法是通过绑定挂载提供 kibana.yml。使用 docker-compose,绑定挂载可以这样指定

version: '2'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:8.14.2
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml

持久化 Kibana 密钥库编辑

默认情况下,Kibana 在启动时会自动生成一个用于安全设置的密钥库文件。要持久化您的 安全设置,请使用 kibana-keystore 实用程序将密钥库的父目录绑定挂载到容器。例如

docker run -it --rm -v full_path_to/config:/usr/share/kibana/config -v full_path_to/data:/usr/share/kibana/data docker.elastic.co/kibana/kibana:8.14.2 bin/kibana-keystore create
docker run -it --rm -v full_path_to/config:/usr/share/kibana/config -v full_path_to/data:/usr/share/kibana/data docker.elastic.co/kibana/kibana:8.14.2 bin/kibana-keystore add test_keystore_setting

环境变量配置编辑

在 Docker 中,Kibana 可以通过环境变量进行配置。容器启动时,一个辅助进程会检查环境中是否存在可以映射到 Kibana 命令行参数的变量。

为了与容器编排系统兼容,这些环境变量以全大写字母编写,并使用下划线作为单词分隔符。辅助进程会将这些名称转换为有效的 Kibana 设置名称。

您在环境变量中包含的所有信息都可通过 ps 命令查看,包括敏感信息。

这里显示了一些示例转换

表 1. 示例 Docker 环境变量

环境变量

Kibana 设置

SERVER_NAME

server.name

SERVER_BASEPATH

server.basePath

ELASTICSEARCH_HOSTS

elasticsearch.hosts

一般来说,配置 Kibana 中列出的任何设置都可以使用此技术进行配置。

提供数组选项可能很棘手。以下示例显示了为 ELASTICSEARCH_HOSTS 提供数组的语法。

这些变量可以使用 docker-compose 这样设置

version: '2'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:8.14.2
    environment:
      SERVER_NAME: kibana.example.org
      ELASTICSEARCH_HOSTS: '["http://es01:9200","http://es02:9200","http://es03:9200"]'

由于环境变量被转换为 CLI 参数,因此它们优先于在 kibana.yml 中配置的设置。

Docker 默认值编辑

以下设置在使用 Docker 镜像时具有不同的默认值

server.host

"0.0.0.0"

server.shutdownTimeout

"5s"

elasticsearch.hosts

http://elasticsearch:9200

monitoring.ui.container.elasticsearch.enabled

true

这些设置在默认的 kibana.yml 中定义。它们可以通过 自定义 kibana.yml 或通过 环境变量 覆盖。

如果用自定义版本替换 kibana.yml,请确保将默认值复制到自定义文件中,如果您想保留它们。否则,它们将被新文件“屏蔽”。