云计算核心技术Docker教程:将 docker 日志与远程日志驱动程序一起使用

2022-11-06

从 Docker Engine 20.10 开始,该docker logs命令 可能只能通过登录使用的驱动程序,使用支持的容器 local,json-file或journald登录。但是,许多第三方日志驱动程序不支持使用本地读取日志docker logs

这在尝试以自动化和标准方式收集日志数据时产生了多个问题。只能通过第三方解决方案以第三方工具指定的格式访问和查看日志信息。

从 Docker Engine 20.10 开始,docker logs无论配置的日志驱动程序或插件如何,您都可以使用读取容器日志。这种称为“双日志记录”的功能允许您以docker logs一致的格式在本地读取容器日志,而不管使用的日志驱动程序如何,因为引擎配置为将信息记录到“本地”日志记录驱动程序。有关其他信息,请参阅配置默认日志记录驱动程序。

双日志记录使用local日志驱动程序作为缓存来读取容器的最新日志。默认情况下,缓存已启用日志文件轮换,并且每个容器最多限制为 5 个文件,每个文件为 20MB(压缩前)。

使用双日志记录不需要更改配置。如果配置的日志驱动程序不支持读取日志,Docker Engine 20.10 及更高版本会自动启用双日志记录。

以下示例显示了在docker logs具有和不具有双重日志记录可用性的情况下运行命令的结果:

没有双重记录功能

当容器配置了远程日志驱动,例如splunk,并且禁用了双日志记录时,尝试在本地读取容器日志时会显示错误:

第 1 步:配置 Docker 守护进程

$ cat /etc/docker/daemon.json

{

“log-driver”:”splunk”,

“log-opts” :{

“cache-disabled”:”true”,

…(options for “splunk” logging driver)

}

}

第二步:启动容器

$ docker run -d busybox –name testlog top

第 3 步:读取容器日志

$ docker logs 7d6ac83a89a0

Error response from daemon: configured logging driver does not support reading

具有双重记录功能

启用双日志缓存后docker logs,即使日志驱动程序不支持读取日志,也可以使用该命令读取日志。以下示例显示了一个守护程序配置,该配置使用splunk远程日志记录驱动程序作为默认值,并启用了双日志记录缓存:

第 1 步:配置 Docker 守护进程

$ cat /etc/docker/daemon.json

{

“log-driver”:”splunk”,

“log-opts” :{

…(options for “splunk” logging driver)

}

}

第二步:启动容器

$ docker run -d busybox –name testlog top

第 3 步:读取容器日志

$ docker logs 7d6ac83a89a0

2019-02-04T19:48:15.423Z [INFO] core: marked as sealed

2019-02-04T19:48:15.423Z [INFO] core: pre-seal teardown starting

2019-02-04T19:48:15.423Z [INFO] core: stopping cluster listeners

对于日志记录的驱动程序,支持阅读日志,比如local,json-file 和journald司机,还有之前或之后的双重记录功能,成为可在功能上没有区别。对于这些驱动程序,可以docker logs在两种情况下使用日志读取。

您好!请登录

点击取消回复