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

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

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

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

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

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

    docker run --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.17.0
  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.17.0
    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.17.0 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.17.0 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.17.0
    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,请确保将默认值复制到自定义文件中(如果您想保留它们)。否则,它们将被新文件“屏蔽”。