#26023·vector

docker_logs: 一种临时流错误,从 Vector 进程启动以来重放每一条记录

作者: WilliamAGH创建于 2026年8月5日更新于 2026年9月16日

问题

当“ docker logs” 日志串流以 * 短暂 * 错误结束时, 源不恢复 从上次交付的记录开始——它从维克特进程开始时间恢复并重载 自从矢量发射以来 集装箱的每行都记录下来了

结果是,一个可回收的溪流再发送一个容器的整个历史, 重新交付的数量随着收集器的起动时间而增加。 在我们的环境下,一个代理在前面 Docker 套接字在固定的10分钟宽度上切入了闲置的日志后流;每个切出一个完整的 重弹. 测量的再交付因子,按准确的“时间UnixNano”对收到的记录进行分组:

容器 窗口 记录 不同因素 |-|-|-|-. 低容量缓存服务 95分 128分 13分 **9.8x ** |

  • 闲置的建材基箱 * * * ~ 3天 *

没有丢失记录,接收器从未施放回压——每份副本都被接受. 这起9.8x案是每10分钟切出一次所有13个记录的回放.

代码路径

在“src/sources/docker logs/mod.rs”(v0.56.0)中,一个容器的恢复位置位于 `ContanerLogInfo',属于运行中的溪流任务。

一个干净 流端返回它, 所以州生存:

让结果=匹配(结果,错误){
(Ok( ()), 无) QQ Ok( info), // 信息保存
(ERR( (())), -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --(Info.id,错误存在:永久), -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
( , some( 意外) ) * @ Err( (info.id, 发生)), /// info DROPPED
* ;

主循环恢复“重起”的干净外壳,该外壳重新使用现有的“信息”:

有些( Ok( info)) {{
让状态 =自. containers.get mut(和info.id).expect(.);
如果状态。 返回  info( info) { self.esb.restart(状态);}
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

但 " 集装箱 " 的 " 瞬变器 " 案件只是 " 起动 " :

错误持续时间: 如果状态. is running () {
让后退=一些(自.后退 期限);
自动. containers. 插入( id. clone (), self. esb. start (id, backoff) ) );
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

和“开始” 建立一个** brand新** “集装箱LogInfo” 以源头的'now timestamp'为种子:

让信息=集装箱LogInfo: new(id, m元数据, this.core.now timestamp);

现在 时间戳'在源创建时被捕获一次,所以是矢量过程开始 时间。 last log'现在是none',因此log since ()'返回进程开始,而不是 上次发送的记录 :

fn 日志自( &self) - > i64 {
last log.as ref ().map (|(d, )| d.timestamp ()).
. unwrap  or else (      自创建. timestamp ()) - 1
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

该值直接传递到 Docker API :

. suse(info.log suse () as i32) (中文(简体) ).

新 事件'中的重复警卫无济于事,因为用最后 log:无'就不用了。 第一分支,它承认“创建”后的一切:

无 {{{
如果自己. 创建 < timetamp. with timezone( & Utc) {
//Noop - 第一个处理日志 。
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

所以每个 . . . . . . .

内容来源: vectordotdev/vector