轮转确认
采用 create 方式但不发送 SIGHUP 会怎样?
- 旧文件删除,日志全丢
- 写入失败,进程退出
- 新文件保持 0 字节,日志继续写入 .1 文件
- 下次轮转自动切换
copytruncate 的代价是什么?
- 复制与截断之间写入的日志会丢失
- 副本让磁盘占用翻倍
- 进程为重开文件而重启
- 截断文件无法压缩
为什么需要 delaycompress?
- 把压缩 CPU 开销推迟一轮
- 积累一轮可提高压缩率
- 进程可能仍在写旧文件
- 防止压缩文件使编号移动
为什么容器内不需要运行 logrotate?
- 容器日志重启就删除
- 输出到 stdout 后由容器运行时轮转
- 容器内不能运行 cron
- 只读文件系统无法写
为什么轮转会破坏日志采集器?
- 采集器按 inode 和偏移记位置,而底层文件发生变化
- 采集器不能读压缩文件
- 新文件权限变化
- 时间戳倒退