Docker 日志丢失 - 解决方案

发布于:2024-07-11 ⋅ 阅读:(56) ⋅ 点赞:(0)

Docker 日志默认使用的是 journald 的方式.

RateLimitBurstjournald 的一个参数,用于限制日志的速率。如果日志的生成速度超过这个限制,journald 可能会丢弃日志。你可以通过调整这个参数来避免日志被丢弃。

调整 RateLimitBurstRateLimitInterval

  1. 编辑 journald 的配置文件:

通常位于 /etc/systemd/journald.conf。如果文件不存在,可以创建它。

sudo nano /etc/systemd/journald.conf
  1. 配置 RateLimitBurstRateLimitInterval 参数:

在文件中添加或修改以下行:

[Journal]
RateLimitBurst=100000    # 设置允许的最大日志条数
RateLimitInterval=30s    # 设置在指定的时间间隔内应用 RateLimitBurst

这些设置表示在每 30 秒内最多允许 100,000 条日志。根据你的需要,你可以调整这些值。

  1. 保存文件并退出编辑器。

  2. 重新启动 systemd-journald

sudo systemctl restart systemd-journald

其他可能需要调整的 journald 配置

除了 RateLimitBurstRateLimitInterval,你可能还需要配置其他相关参数,以确保日志不会被丢弃。

  • SystemMaxUse:设置日志占用的最大空间。
  • SystemKeepFree:设置系统中保留的最小可用空间。
  • SystemMaxFileSize:设置单个日志文件的最大大小。
  • SystemMaxFiles:设置最大日志文件数量。

/etc/systemd/journald.conf 文件中,可以进行如下配置:

[Journal]
Storage=persistent
SystemMaxUse=500M
SystemKeepFree=100M
SystemMaxFileSize=10M
SystemMaxFiles=3
RateLimitBurst=100000
RateLimitInterval=30s

查看和验证日志设置

  1. 查看当前的 journald 配置:
journalctl --verify
  1. 检查日志是否被丢弃:

可以使用 journalctl 来查看日志,确保没有丢失。

journalctl -u <your_service_name> -n 100

通过这些调整,你可以避免日志由于速率限制而被丢弃。