Logstash 持久化队列(Persistent Queue)怎么配置?

Logstash 持久化队列把事件先落盘再处理,宕机不丢数据。配置:queue.type: persisted,配合 queue.max_bytes 控制磁盘上限。本文给出完整配置、容量规划与注意事项。

最佳实践
Logstash 持久化队列(Persistent Queue)怎么配置?封面

在 logstash.yml 中设置 queue.type: persisted 即可开启持久化队列——事件先写磁盘再进过滤器,进程崩溃或机器重启后未处理的事件不丢失,重启自动续传。

核心配置

# logstash.yml
queue.type: persisted
path.queue: /var/lib/logstash/queue     # 队列落盘目录
queue.max_bytes: 8gb                    # 队列磁盘上限,写满后反压输入端
queue.checkpoint.writes: 1024           # 每写多少事件做一次检查点

工作原理

输入 → 磁盘队列(持久化) → 过滤器 → 输出 → 确认后从队列删除

只有被输出端确认处理完的事件才从队列清除——这是"至少一次"语义的来源(可能重复,不丢失)。

容量规划

  • queue.max_bytes 按"下游故障要能扛多久"估算:1 万 EPS × 500B/条 ≈ 430GB/天——扛 1 小时故障需约 18GB;
  • 队列写满后输入端反压停止读取( beats 客户端会重发)——这是特性不是故障,比丢数据强。

注意事项

  • 磁盘 IOPS 要求上升,SSD 优先;
  • 内存队列(默认)与持久化队列切换时,旧队列数据需先消费完再切换;
  • 死信队列(dead_letter_queue)是另一件事,别混淆。

观测云对照

观测云 DataKit 的采集缓冲内置磁盘缓存与断网续传:网络中断时数据本地暂存,恢复后自动续传,无需单独配置队列参数。

常见问题(FAQ)

Q:开了持久化队列性能会降多少? 写盘开销约带来 10-20% 吞吐下降,批量大小调大可摊薄。

Q:队列目录能放 NFS 吗? 不要——网络文件系统的锁语义不可靠,用本地盘。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台