Persisted Queue
默认情况下logstash会将在处在pipeline各个stage的event buffer在内存中, 这种buffer方式,在logstash意外down掉的情况下会丢失数据.
因此logstash引入了Persisted Queue这种方式, 能将event buffer在磁盘上. 比如直接将queue的文件路径设置为/usr/lib/logstash/queue目录下, 如果在k8s上需要将这个目录外挂持久化.
queue介于input和filter之间, 如下图:
input → queue → filter + output
当event从input写到queue成功后, 会发送ack给给数据源, 当对应的filter和output都处理完event后,该event才会被标记为acknowleged/ACKed, 比如, 当grok完后,并发送个ES收到成功响应后, event才会被标记为成功处理.
如果logstash意外down机, 那些未被标记为ACKed的事件会被重新处理.
参数:
queue.type: default memory
path.queue, queu的文件路径
queue.page_capacity default 64mb
queue.drain: 指示logstash在关闭之前是否需要将queue中的数据处理. 一般queue不大且堆积的event数量不大的情况下可以开启, 不然耗时时间会太长
queue.max_events: default 0
queue.max_bytes: queue的大小