graylog6.3修改时区为Asia/Shanghai
摘要:本文介绍了如何解决Graylog-6.3在Docker部署中时区设置为UTC的问题。通过修改docker-compose.yml文件,为Mongo、DataNode和Graylog服务添加时区配置(Asia/Shanghai),包括环境变量、Java参数和宿主机时区挂载。最关键的是创建并挂载自定义的graylog.conf配置文件,设置root_timezone参数。最后重启服务后,时间显示
·
上一篇文章写到如何通过docker-compose部署graylog-6.3,部署完后发现时区为UTC,下面的图中,显示的是6:20,实际时间应该为14:20
本以为是个简单的问题,改改docker-compose.yml就行了,没想到改完compose配置重新部署后,后页面上还是没变,折腾了几个小时才最终弄好,下面具体讲解一下怎么改的。
docker-compose.yml中增加时区相关的配置
mongo service修改
environment块增加TZ: Asia/Shanghai
services:
environment:
TZ: Asia/Shanghai
datanode service修改
在environment增加下面几个配置
environment:
TZ: Asia/Shanghai
GRAYLOG_DATANODE_JAVA_OPTS: "-Duser.timezone=Asia/Shanghai" # Data Node核心Java时区
时区使用宿主机的时区/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
graylog-server修改
environment块增加这几个配置
environment:
TZ: Asia/Shanghai
GRAYLOG_TIMEZONE: Asia/Shanghai
GRAYLOG_SERVER_JAVA_OPTS: -Duser.timezone=Asia/Shanghai
volumes增加对宿主机时区的挂载
volumes:
- /etc/localtime:/etc/localtime:ro # 宿主机时间文件
- /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone:ro
最关键的,增加一个graylog.conf ,也进行挂载
内容如下,核心就是root_timezone=Asia/Shanghai其他的可以不用管
is_leader=true
node_id_file=/usr/share/graylog/data/config/node-id
password_secret=
root_password_sha2=
root_timezone=Asia/Shanghai
bin_dir=/usr/share/graylog/bin
data_dir=/usr/share/graylog/data
plugin_dir=/usr/share/graylog/plugin
http_bind_address=0.0.0.0:9000
stream_aware_field_types=false
disabled_retention_strategies=none,close
allow_leading_wildcard_searches=false
allow_highlighting=false
field_value_suggestion_mode=on
output_batch_size=500
output_flush_interval=1
output_fault_count_threshold=5
output_fault_penalty_seconds=30
processor_wait_strategy=blocking
ring_size=65536
inputbuffer_ring_size=65536
inputbuffer_wait_strategy=blocking
message_journal_enabled=true
message_journal_dir=data/journal
lb_recognition_period_seconds=3
mongodb_uri=mongodb://mongo/graylog
mongodb_max_connections=1000
挂载到/data/graylog6/config/graylog.conf
volumes:
- /etc/localtime:/etc/localtime:ro # 宿主机时间文件
- /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone:ro
- /data/graylog6/config/graylog.conf:/usr/share/graylog/data/config/graylog.conf
以下是修改后完整的docker-compose.yml文件
version: '3.8'
services:
mongodb:
image: mongo:6.0
container_name: graylog-mongodb
restart: unless-stopped
networks:
- graylog
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 5
environment:
TZ: Asia/Shanghai
volumes:
- /data/graylog6/mongodb/db:/data/db
- /data/graylog6/mongodb/config:/data/configdb
datanode:
image: graylog/graylog-datanode:6.3
container_name: graylog-datanode
environment:
TZ: Asia/Shanghai
GRAYLOG_DATANODE_JAVA_OPTS: "-Duser.timezone=Asia/Shanghai" # Data Node核心Java时区
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
graylog:
image: graylog/graylog:6.3
container_name: graylog-server
depends_on:
mongodb:
condition: service_healthy
datanode:
condition: service_started
restart: unless-stopped
networks:
- graylog
environment:
GRAYLOG_PASSWORD_SECRET: "${GRAYLOG_PASSWORD_SECRET}"
GRAYLOG_ROOT_PASSWORD_SHA2: "${GRAYLOG_ROOT_PASSWORD_SHA2}"
GRAYLOG_HTTP_BIND_ADDRESS: 0.0.0.0:9000
GRAYLOG_HTTP_EXTERNAL_URI: http://xxxxxxxx:9000/ #外网访问地址根据自己的ip进行修改
GRAYLOG_MONGODB_URI: mongodb://mongodb:27017/graylog
TZ: Asia/Shanghai
GRAYLOG_TIMEZONE: Asia/Shanghai
GRAYLOG_SERVER_JAVA_OPTS: -Duser.timezone=Asia/Shanghai
ports:
- "9000:9000"
- "12201:12201/udp"
volumes:
- /data/graylog6/graylog:/usr/share/graylog/data/data
- /data/graylog6/journal:/usr/share/graylog/data/journal
- /etc/localtime:/etc/localtime:ro # 宿主机时间文件
- /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone:ro
- /data/graylog6/config/graylog.conf:/usr/share/graylog/data/config/graylog.conf
networks:
graylog:
driver: bridge
重启
执行下列命令进行重启
docker compose down && docker compose up -d --force-recreate
终于显示为正常的时间了
更多推荐
所有评论(0)