使用 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.3
  4. 可选:为您的环境安装 Cosign。然后使用 Cosign 验证 Elasticsearch 镜像的签名。

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

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

    Verification for docker.elastic.co/elasticsearch/elasticsearch:8.14.3 --
    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.3

    使用 -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.3
  8. 可选:验证 Kibana 镜像的签名。

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

    docker run --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.14.3
  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 中的描述提供 kibana.yml 文件,但也可以使用环境变量来定义设置。

绑定挂载配置编辑

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

version: '2'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:8.14.3
    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.3 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.3 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.3
    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,请确保将默认值复制到自定义文件中(如果要保留它们)。否则,它们将被新文件“屏蔽”。