Docker Compose 适用于 Elasticsearch & Kibana : 设置和配置

在本文中,我们将探讨如何部署  Elasticsearch  和  Kibana 使用 Docker Compose 。这是 ELK Stack( Elasticsearch 、Logstash、 Kibana )的两个关键组件,可帮助您有效地搜索、分析和可视化数据。以下是详细配置以及每个组件的工作原理。

1. Elasticsearch

a. 基本配置

Elasticsearch 配置为在 Docker 容器中运行,其参数如下:

  • 镜像: 使用  官方 Elasticsearch 镜像,版本 。 8.17.2

  • 单节点模式:  通过环境变量启用  discovery.type=single-node

  • 安全性:  X-Pack 安全性已启用( xpack.security.enabled=true ),并且用户密码  elastic  设置为  YVG6PKplG6ugGOw

  • 网络:  Elasticsearch 监听所有网络接口( network.host=0.0.0.0 )。

  • JVM内存:  配置  -Xms1g  (初始内存)和  -Xmx1g  (最大内存)。

乐队 Ports ​ Volumes

  • Ports:  端口  9200  (HTTP)和  9300  (内部通信)从容器映射到主机。

  • Volumes:  Elasticsearch 数据存储在该  elasticsearch-data  卷中。

c. 健康检查

设置健康检查,通过用户调用  API 来 监控 Elasticsearch 的状态  。如果 API 无法响应,容器将重新启动。 /_cluster/health elastic

2. Kibana

a. 基本配置

Kibana Elasticsearch 配置为使用以下参数 连接并在 Docker 容器中运行:

  • 镜像: 使用  官方 Kibana 镜像,版本 。 8.17.2

  • Elasticsearch 连接:  地址 Elasticsearch 设置为  http://elasticsearch:9200

  • 身份验证:  Kibana 使用  kibana_user  和密码  YVG6PKplG6ugGOw  连接到 Elasticsearch。

b. Ports 和网络

  • Ports:  端口  5601  是从容器映射到主机来访问的 Kibana 接口。

  • 网络:  Kibana 已连接到  elk-network

c. 依赖 Elasticsearch

Kibana 仅在准备就绪后启动 Elasticsearch,确保两个服务之间的连接成功。

3. 数量和网络

a. 音量

  • elasticsearch-data:  该卷用于存储 Elasticsearch 数据,即使容器被删除,也能保证数据的持久性。

b. 网络

  • elk-network: bridge  创建  一个 网络,用于连接 Elasticsearch 和 Kibana 服务。


4. 如何使用

a. 启动服务

要启动 Elasticsearch 和 Kibana,请运行以下命令:

docker-compose up -d

b. 创建 Kibana 用户(如果需要)

如果您想要使用专用用户 Kibana,则可以使用以下命令创建一个:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. 创建 Token (如果使用代币)

要使用 token 而不是密码,您可以使用以下命令创建一个:

docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-service-tokens create elastic/kibana kibana-token

5. 故障排除

  • 如果遇到错误,可以使用以下命令检查容器日志:

    docker logs elasticsearch 
    docker logs kibana
  • 重新启动 Kibana:

    docker-compose down kibana && docker-compose up -d kibana

Docker Compose 文件 的完整内容

以下是该文件的完整内容  docker-compose-els.yml  :

version: '3.7'  
  
services:  
  elasticsearch:  
    image: docker.elastic.co/elasticsearch/elasticsearch:8.17.2  
    container_name: elasticsearch  
    environment:  
   - discovery.type=single-node  
   - xpack.security.enabled=true  
   - ELASTIC_PASSWORD=you_password  
   - network.host=0.0.0.0  
   - ES_JAVA_OPTS=-Xms1g -Xmx1g  
    ports:  
   - '9200:9200'  
   - '9300:9300'  
    volumes:  
   - elasticsearch-data:/usr/share/elasticsearch/data  
    ulimits:  
      memlock:  
        soft: -1  
        hard: -1  
    networks:  
   - elk-network  
  
    healthcheck:  
      test: ["CMD-SHELL", "curl -u elastic:YVG6PKplG6ugGOw --silent --fail localhost:9200/_cluster/health || exit 1"]  
      interval: 10s  
      retries: 5  
      start_period: 30s  
      timeout: 5s  
  
  kibana:  
    image: docker.elastic.co/kibana/kibana:8.17.2  
    container_name: kibana
    ports:  
   - '5601:5601'  
    environment:  
   - ELASTICSEARCH_HOSTS=http://elasticsearch:9200  
   - ELASTICSEARCH_USERNAME=kibana_user  
   - ELASTICSEARCH_PASSWORD=you_password  
    networks:  
   - elk-network  
    depends_on:  
      elasticsearch:  
        condition: service_healthy  
  
volumes:
  elasticsearch-data:  
    driver: local  
  
networks:  
  elk-network:  
    driver: bridge

结论

使用此 Docker Compose 配置,您可以轻松部署 Elasticsearch 并 Kibana 满足您的数据搜索、分析和可视化需求。自定义和扩展此配置以满足您项目的特定要求!