【问题标题】:The data is getting lost whenever I restart the docker/elk image每当我重新启动 docker/elk 映像时,数据都会丢失
【发布时间】:2019-10-10 05:34:53
【问题描述】:

我正在使用 docker/elk 图像在 kibana 仪表板(版本 6.6.0)中显示我的数据,并且效果很好。我使用以下命令启动了服务。

Docker Image git repo

 https://github.com/caas/docker-elk

命令:

    sudo docker-compose up --detach

期望它会在后台运行,并按预期进行。两天后服务器启动并运行,第三天单独停止了 kibana。并使用以下命令使其启动并运行。

    sudo docker run -d <Docer_image_name>

当我使用 docker ps 命令时,它已启动并运行。但是当我尝试在 chrome 浏览器中访问 kibana 服务器时,它显示无法访问。

所以我只是习惯了下面的命令来重启服务。

    sudo docker-compose down

之后,我可以在 Chrome 浏览器中看到 kibana 服务器已启动并正在运行,但我确实看到我的所有数据都丢失了。

我在 jenkins 中使用下面的 URL 来收集数据。

`http://hostname:9200/ecdpipe_builds/extern`al 

知道如何解决这个问题吗?

【问题讨论】:

  • 我猜你正在使用没有数据持久化机制的 dockerized 数据库。在这种情况下,数据库在每次启动时都会被初始化,并在由于非持久数据而停止时丢失数据。您可以使用卷来持久化数据库文件。

标签: linux docker logstash kibana elastic-stack


【解决方案1】:

我没有看到你在他们的 GitHub docker-compose 文件中提到的图像的持久存储配置。

如果您没有提供持久存储配置,则在 docker 容器中丢失数据很常见。所以docker-compose down如果没有持久的配置docker-compose文件可能会导致数据丢失。

持久化日志数据

为了在容器重启时保留日志数据,这个镜像会挂载 /var/lib/elasticsearch — 这是 Elasticsearch 的目录 将其数据存储在一个卷中。

但是,您可能希望使用专用数据卷来持久保存它 记录数据,例如便于备份和恢复操作。

一种方法是使用 docker 的 -v 挂载一个 Docker 命名卷 选项,如:

$ sudo docker run -p 5601:5601 -p 9200:9200  -p 5044:5044 \
    -v elk-data:/var/lib/elasticsearch --name elk sebp/elk

此命令将命名卷 elk-data 挂载到 /var/lib/elasticsearch(如果它自动创建卷 不存在;您也可以使用 docker 手动预先创建它 卷创建麋鹿数据)。

因此,您可以在 docker-compose 文件中相应地设置这些路径。这是您可以查看的链接elk-docker-persisting-log-data

【讨论】:

  • 非常感谢您的回复。让我检查一下并回复你。
  • 我只是使用下图。你能告诉我应该在哪里添加音量吗? github.com/caas/docker-elk。更新了问题
  • 这个好像老了,建议用官方的elk-docker.readthedocs.io/#persisting-log-data
  • 看起来它已添加卷:- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
  • 我已经使用过它,但我在您提到的最新版本中确实存在一些问题。我嵌套了无法处理的 json 文件,所以我没有使用它的选项,所以我降级到这个。您能帮我解决一下使用此版本的音量问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-24
  • 2017-08-02
  • 2023-03-06
  • 2018-06-28
  • 1970-01-01
相关资源
最近更新 更多