如何理解docker日志引擎

71次阅读
没有评论

共计 2252 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章将为大家详细讲解有关如何理解 docker 日志引擎,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

docker 原生支持众多的日志引擎,适用于各种不同的应用场景,丸趣 TV 小编对其作一个简单的说明。

Docker 日志引擎说明

docker 支持的日志引擎如下:

none:关闭 docker 的回显日志, docker logs 看不到任何输出。使用这种方式也就意味着无法查看任何容器输出的日志。

json-file:把每个容器的回显日志打到每个容器的内部, 形式为 json 文件。在实际使用中, 有些容器在启动后有大量的回显日志, 尤其在程序内部报错时打出的日志信息尤其巨大, 很可能会因为某几个容器的 json 日志过大而撑爆整个宿主机的磁盘。

syslog:把所有容器的回显日志打到系统的 syslog 中。

目前 harbor 私有镜像仓库使用 docker-compose 方式启动的话,就默认使用的这种方式。将所有容器的日志都集中收集到一个 harbor-log 的容器中,在执行 docker logs 的时候会提示 logs command is supported only for json-file and journald loggin drivers (got: syslog)。

journald:把所有容器的回显日志打到系统的 journald 服务中,这是推荐的方式。

fluentd:把所有容器的回显日志打到 fluentd 服务中。

gelf 把所有容器的回显日志打到支持 GELF(Graylog Extended Log Format) 格式的服务中, 比如 Graylog 或 Logstash。

修改 docker 日志引擎

修改 docker 配置文件 /etc/docker/daemon.json 如下:

{  log-driver :  journald}

在容器运行时指定其日志引擎:

docker run --log-driver=journald alpint /bin/sh

journald 配置文件说明

# /etc/systemd/jornald.conf 示例:

[Journal]
#Storage=auto  存储为自动模式,  其他模式有无日志模式,  纯内存模式和纯磁盘模式
#Compress=yes  默认启动压缩功能
#Seal=yes  默认加密,  日志文件为二进制文件,  无法  vim 或 tail  查看
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=1000
#SystemMaxUse=  精确设置日志可以占用的最大磁盘空间
#SystemKeepFree=  保证系统剩余的空间大小
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=no
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg

journald 默认配置下, 默认日志最大限制为所在文件系统容量的 10%

默认配置下, journald 的日志存放在 /var/log/journal 下, 如果该目录在根分区下, 且根分区空间大小为 10G, 那么 journald 存放日志最大的大小为 1G, 超出 1G 后将删除最早的日志

也可以精确指定占用的空间大小:

SystemMaxUse=50M

journalctl 基本用法

journalctl  从头查看所有日志
journalctl -b  查看本次开机后的所有系统引导日志
journalctl -b -1  显示上次开机后的系统引导日志,  以此类推
journalctl -f  类似于  tail - f 或 tailf
journalctl /usr/bin/dockerd  后加程序的绝对路径, 可以显示该程序的所有日志信息
journalctl -xe systemd  启动程序失败时会提示你使用这个命令查看错误信息,  其中 x   表示在日志输出中增加一些解释性的短文本, e 表示立即跳转至日志的尾部 

journald 注意事项

journald 配置中,有两个非常重要的优化项目:

ForwardToSyslog=yes
ForwardToWall=yes

以上两个参数默认都是 yes 意味着 journald 收集日志后还会转发到 syslog 中

由此造成的影响是: journald 虽然可以乖乖的按照上面的配置进行日志的清理, 但是 syslog 却不在 journald 的控制范围之内

在日志量很大的情况下,syslog 中的日志量也变得巨大, 所以我们需要把上面两个参数的值改为 no

重启 journald 服务

systemctl restart systemd-journald.service

关于如何理解 docker 日志引擎就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计2252字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)