Docker 中的 Graylog 持久化

Posted

技术标签:

【中文标题】Docker 中的 Graylog 持久化【英文标题】:Graylog in Docker persistent 【发布时间】:2019-11-22 10:26:53 【问题描述】:

我正在尝试使 Graylog Docker 容器持久化。 这意味着在重新启动 (docker-compose down; docker-compose up) 后,日志仍将与配置一起存在。 我使用了https://docs.graylog.org/en/3.1/pages/installation/docker.html 的文档,我创建了一个 yml 文件,其中包含主题“持久化数据”下的内容。 我只编辑了“GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/”这一行,不使用本地主机,而是机器使用的外部IP。

Docker 可以工作,我可以创建输入并收集日志文件。不起作用的是数据是持久的。此外,每次我重新启动节点 ID 更改时,我都必须重新配置输入。运行docker volume ls 会列出五​​个卷,其中 3 卷是在 yml 文件中创建的。 我不明白为什么数据不是持久的。有人可以帮忙吗?

【问题讨论】:

那很有趣。花了一整天的时间为我的 homelab 设置 graylog,结果发现一旦我尝试重新启动,一切都消失了。那是我找到这个帖子的时候:-) 【参考方案1】:

我遇到了同样的问题,在找到解决方案之前我已经苦苦挣扎了一段时间。我在 3.2 上,也有节点持久性问题。文档似乎没有直接说明您还需要保留一个配置文件夹,即:

/usr/share/graylog/data/config

他们实际上在 自定义配置文件 部分中提到了它,当我通过 CLI 在该目录中查看时,结果发现它是 graylog.confnode-id(文件 Graylog用于存储有关其节点的信息)也被存储!

这是我的docker-compose.override.yml 部分,其中包含必要的更改(标有“# ADDED”cmets)

services:
  graylog:
    environment:
      # CHANGE ME (must be at least 16 characters)!
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      # Password: admin
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
      - GRAYLOG_IS_MASTER=true
      #- GRAYLOG_NODE_ID_FILE=/usr/share/graylog/data/config/node-id
    ports:
      # Graylog web interface and REST API
      - 9000:9000
      # Syslog TCP
      - 1514:1514
      # Syslog UDP
      - 1514:1514/udp
      # GELF TCP
      - 12201:12201
      # GELF UDP
      - 12201:12201/udp
    volumes:
      - "graylogjournal:/usr/share/graylog/data/journal"
      - "graylogconfig:/usr/share/graylog/data/config" # ADDED

volumes:
    graylogjournal:
      driver: local
    graylogconfig: # ADDED
      driver: local # ADDED

希望对你有帮助

【讨论】:

Graylog 4 (+docker) docs 只是将整个“/usr/share/graylog/data”放入一个 docker 卷中;往下看“持久化数据”部分。【参考方案2】:

您可以将这些行添加到daemon.json 文件中;


  "log-driver": "gelf",
  "log-opts": 
    "gelf-address": "udp://1.2.3.4:12201"
  

https://docs.docker.com/config/containers/logging/gelf/

【讨论】:

以上是关于Docker 中的 Graylog 持久化的主要内容,如果未能解决你的问题,请参考以下文章

Docker实现数据持久化

Docker数据持久化简述

Docker数据持久化

Docker下载安装Nacos并完成持久化配置

Docker 容器数据持久化

Docker下载安装Nacos并完成持久化配置