首页 > 解决方案 > Kibana 数据在 docker-compose 关闭时丢失

问题描述

我正在使用 elk docker 映像并使用下面的 docker-compose 文件来启动 ELK 容器并将数据存储在卷中。

  version: '3.5'

   services:

   elasticsearch:
    build:
      context: elasticsearch/
    volumes:
      - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
    ports:
      - "9200:9200"
      - "9300:9300"
     environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
     networks:
      - elk

   logstash:
    build:
      context: logstash/
    volumes:
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
      - ./logstash/pipeline:/usr/share/logstash/pipeline:ro
    ports:
      - "5000:5000"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch

   kibana:
    build:
      context: kibana/
    volumes:
      - ./kibana/config/:/usr/share/kibana/config:ro
    ports:
      - "5601:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch

 networks:

  elk:
    driver: bridge

Kibana 版本 6.6.0

我使用以下命令启动:

docker-compose up -d

观察到所有三个容器都已启动并运行,我可以将我的数据发布到 kibana 并且可以可视化。

我刚刚遇到了关闭这个撰写文件并启动的情况。但是当我做那个活动时,所有早期的 kibana 数据都已经丢失了。

docker-compose down

有什么方法可以将这些记录永久存储在机器中(在 linux 框中的某个位置)作为备份其他任何数据库?

请帮助我。

标签: dockerelasticsearchlogstashkibanaelastic-stack

解决方案


您必须将 elasticsearch 数据目录 ( /usr/share/elasticsearch/data) 移动到永久 docker 卷中,如下所示:

  elasticsearch:
    build:
      context: elasticsearch/
    volumes:
      - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
      - ./es_data:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
     environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
     networks:
      - elk

推荐阅读