持久化/聚合多个docker容器的日志的最简单方法



我正在寻找在homeab环境中聚合日志的最简单方法。

最近我遇到了容器问题,做了一些事情,重新启动了容器。我的日志也丢了。现在我知道我可以做docker [service] logs XX > container_log.log,但我希望它能以任何方式自动完成。

我已经在考虑ELK堆栈了,但老实说,我不想设置那么多东西。一些可以一直将日志保存在主机上指定文件夹中的东西对我来说就足够了

我还知道docker已经将日志保存在一个专用文件夹中,但这只是用于特定容器的运行时。这不是我想要的。

OP在这里,对于未来的任何人,我都这样做了:

您必须启动syslog-ng服务器。我使用以下docker-compose.yml:

version: "3"
services:
syslog-ng:
image: linuxserver/syslog-ng:3.36.1 
container_name: syslog-ng
environment:
- PUID=0
- PGID=0
- TZ= #Your Timezone here
volumes:
- /srv/syslog/config:/config
- /srv/syslog/logs:/var/log
ports:
- 514:5514/udp
- 601:6601/tcp
- 6514:6514/tcp
restart: unless-stopped
networks:
- syslog
logging:
driver: "json-file"
networks:
syslog:
external: true

之后,您必须更改数据中心/docker群中运行的每个docker守护进程的日志记录设置。

编辑/etc/docker/daemon.json并添加以下具有适当IP地址的内容:

{
"log-driver": "syslog",
"log-opts": {
"syslog-address": "udp://127.0.0.1:514",
"tag": "{{.Name}}"
}
}

如果您想让所有日志按年/月/日在文件夹中排序,您需要编辑syslog-ng.conf并添加以下部分:

file("/var/log/${YEAR}/${MONTH}/${DAY}.log" create-dirs(yes));

最新更新