将 docker 日志与远程日志记录驱动程序一起使用
概述
您可以使用该命令读取容器日志,而不管
配置的日志记录驱动程序或插件。Docker Engine 使用本地
日志记录驱动程序作为缓存来读取容器的最新日志。
这称为双重日志记录。默认情况下,缓存具有日志文件轮换
启用,并且限制为最多 5 个文件,每个文件 20 MB(在
compression) 的 Compression) 中。docker logs
请参阅配置选项部分进行自定义 这些默认值,或者转到 Disable dual logging 部分以禁用此功能。
先决条件
如果配置的日志记录 driver 不支持读取日志。
以下示例显示了使用
并且没有双重日志记录可用性:docker logs
无双记录功能
当容器配置了远程日志记录驱动程序(如 、 和
双重日志记录已禁用,尝试读取容器时显示错误
本地日志:splunk
步骤 1:配置 Docker 守护程序
$ cat /etc/docker/daemon.json { "log-driver": "splunk", "log-opts": { "cache-disabled": "true", ... (options for "splunk" logging driver) } }
步骤 2:启动容器
$ 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) } }
步骤 2:启动容器
$ 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 2019-02-04T19:48:15.423Z [INFO] core: shutting down forwarding rpc listeners 2019-02-04T19:48:15.423Z [INFO] core: forwarding rpc listeners stopped 2019-02-04T19:48:15.599Z [INFO] core: rpc listeners successfully shut down 2019-02-04T19:48:15.599Z [INFO] core: cluster listeners successfully shut down
注意
对于支持读取日志的日志记录驱动程序(例如 和 drivers),之前或之后的功能没有区别 Dual Logging 功能可用。对于这些驱动程序,日志可以是 在这两种情况下都读取 using。
local
json-file
journald
docker logs
配置选项
双日志记录缓存接受与本地
日志记录驱动程序相同的配置选项,但带有前缀。这些选项
可以为每个容器指定,并且可以使用
守护进程配置文件。cache-
默认情况下,缓存已启用日志文件轮换,并且限制为最大值 每个容器 5 个文件,每个文件 20MB(压缩前)。使用配置 选项来自定义这些默认值。
选择 | 违约 | 描述 |
---|---|---|
cache-disabled | "false" | 禁用本地缓存。作为字符串 (、 、 或 ) 传递的布尔值。true 1 0 false |
cache-max-size | "20m" | 高速缓存在轮换之前的最大大小。一个正整数加上一个表示度量单位 (, , 或 ) 的修饰符。k m g |
cache-max-file | "5" | 可以存在的缓存文件的最大数量。如果轮换日志会创建过多的文件,则会删除最旧的文件。正整数。 |
cache-compress | "true" | 启用或禁用旋转日志文件的压缩。作为字符串 (、 、 或 ) 传递的布尔值。true 1 0 false |
禁用双日志记录缓存
使用选项可禁用双日志记录缓存。禁用
缓存可用于在仅读取日志的情况下节省存储空间
通过远程日志记录系统,并且如果不需要出于调试目的而读取日志。cache-disabled
docker logs
可以为单个容器禁用缓存,也可以默认为新容器禁用缓存。 使用 daemon 配置文件时。
以下示例使用 daemon 配置文件将 splunk
日志记录驱动程序用作默认驱动程序,并禁用缓存:
$ cat /etc/docker/daemon.json
{
"log-driver": "splunk",
"log-opts": {
"cache-disabled": "true",
... (options for "splunk" logging driver)
}
}
注意
对于支持读取日志的日志记录驱动程序(例如 和 drivers),不使用双重日志记录,并且禁用该选项会 没有效果。
local
json-file
journald
局限性
- 如果容器使用远程发送日志的日志驱动程序或插件
出现网络问题,则 no 到本地缓存发生。
write
- 如果写入 由于任何原因(文件系统已满,写入
permissions removed),缓存写入失败并记录在守护程序日志中。
不会重试缓存的日志条目。
logdriver
- 在默认配置中,某些日志可能会从缓存中丢失,因为 使用环形缓冲区来防止在出现 文件写入速度慢。管理员必须在守护程序关闭时修复这些漏洞。