CnOps 社区
首页开源项目实践文章视频课程常见问答开发者工具
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具

CnOps 社区

愿景

CnOps 社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页问答日志采集器如何处理 create 和 copytruncate 两种日志轮转模式?

日志采集器如何处理 create 和 copytruncate 两种日志轮转模式?

#日志轮转#create模式#copytruncate#日志采集#inode

可观测中文社区 | 2025-03-19

日志轮转的两种模式对采集器有不同的挑战:

Create 模式:将当前日志文件重命名(inode 不变),创建同名新文件(新 inode)。写日志的线程感知变化后重新打开新文件继续写入。采集器需要能识别文件 inode 的变化,跟踪被重命名的旧文件读完剩余内容,同时开始采集新文件。

Copytruncate 模式:先复制当前日志文件内容到新文件,再清空原文件(inode 不变)。这种模式无需通知写日志进程,但采集器需要检测到文件被截断(大小突然变小),并从头开始读取。

测试结果显示,在 create 模式下各采集器表现基本一致。但在快速轮转场景(每秒生成一个文件并触发覆盖删除)下,iLogtail 出现轻微数据丢失,其他采集器则无此问题。各采集器通过 inode+dev 组合以及文件前几行的 hash 值作为文件指纹来唯一标识文件,确保轮转时不会混淆文件。