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.conf
和 node-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 持久化的主要内容,如果未能解决你的问题,请参考以下文章