graylog + es + mongoDB做日志收集,采用的docker+compose 部署,但是每次重启之后,之前的日志就没有了,怎么持久化
要配置的:
version: '2'
services:
graylog:
restart: always
image: graylog/graylog:2.4.5-2
container_name: graylog
volumes:
# 配置文件这里挂载
- ./config:/usr/share/graylog/data/config
# 持久化数据
- ../data/graylog:/usr/share/graylog/data/journal
environment:
# 密码盐值,随便改
- GRAYLOG_PASSWORD_SECRET=gr8r3hbnvfs73b8wefhweufpokdnc
# 管理员名称
- GRAYLOG_ROOT_USERNAME=admin
# 密码需要填写 SHA256 加密的密文,例如这里是 admin
# echo -n admin | shasum -a 256
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
# elasticsearch host
- GRAYLOG_ELASTICSEARCH_HOSTS=http://graylog-elasticsearch:9200
# mongo host
- GRAYLOG_MONGODB_URI=mongodb://graylog-mongo/graylog
# 时区
- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
# 将 x.x.x.x 替换成你的 IP
- GRAYLOG_WEB_ENDPOINT_URI=http://x.x.x.x:9000/api
- GRAYLOG_WEB_LISTEN_URI=http://0.0.0.0:9000/
- GRAYLOG_REST_LISTEN_URI=http://0.0.0.0:9000/api
# 其他配置请参考 graylog.conf 文件, 在需要覆盖的配置项前面加 "GRAYLOG_",换成大写
ports:
# web 和 api 端口
- 9000:9000
# Syslog TCP
- 514:514
# Syslog UDP
- 514:514/udp
# GELF TCP
- 12201:12201
# GELF UDP
- 12201:12201/udp
可以参考这里看能不能解决你的问题
https://stackoverflow.com/questions/58992256/graylog-in-docker-persistent
我的配置文件如下,
version: '3'
services:
# MongoDB: https://hub.docker.com/_/mongo/
mongo:
image: mongo:4.2
container_name: mongo
volumes:
- /home/backend/graylog/data/mongo:/data/db
#将外边时间直接挂载到容器内部,权限只读
- /etc/localtime:/etc/localtime:ro
#将外面的时间挂载到容器内部,权限只读,容器内不可修改
- /etc/timezone:/etc/timezone:ro
# environment:
# - TZ=Asia/Shanghai
networks:
- graylog
# Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.16.3
container_name: elasticsearch
volumes:
- /home/backend/graylog/data/es:/usr/share/elasticsearch/data
#将外边时间直接挂载到容器内部,权限只读
- /etc/localtime:/etc/localtime:ro
#将外面的时间挂载到容器内部,权限只读,容器内不可修改
- /etc/timezone:/etc/timezone:ro
environment:
- discovery.type=single-node
- http.host=0.0.0.0
- transport.host=0.0.0.0
- network.host=0.0.0.0
- http.cors.enabled=true
- http.cors.allow-origin="*"
- "ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true -Xms1024m -Xmx2048m"
ports:
- 9200:9200
- 9300:9300
expose:
- "9200"
- "9300"
ulimits:
memlock:
soft: -1
hard: -1
networks:
- graylog
# Graylog: https://hub.docker.com/r/graylog/graylog/
graylog:
image: graylog/graylog:4.2
container_name: graylog
volumes:
- /home/backend/graylog/data/graylog:/usr/share/graylog/data
- /home/backend/graylog/data/graylog/config:/usr/share/graylog/data/config
- /home/backend/graylog/data/graylog/journal:/usr/share/graylog/data/journal
#将外边时间直接挂载到容器内部,权限只读
- /etc/localtime:/etc/localtime:ro
#将外面的时间挂载到容器内部,权限只读,容器内不可修改
- /etc/timezone:/etc/timezone:ro
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/
entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 -- /docker-entrypoint.sh
networks:
- graylog
restart: always
links:
- mongo
- elasticsearch
depends_on:
- mongo
- elasticsearch
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
networks:
graylog:
driver: bridge
参考一下https://blog.csdn.net/allway2/article/details/97926975
https://www.cnblogs.com/Python-K8S/p/14109992.html
参考一下https://blog.csdn.net/allway2/article/details/97926975
https://www.cnblogs.com/Python-K8S/p/14109992.html
应该是系统机制吧,数据库或者云储存都可
应该是系统机制吧,数据库或者云储存都可