我已使用以下配置启动了logstash:
在 logstash.yml :
内queue.type: persisted
queue.max_bytes: 8gb
queue.checkpoint.writes: 1
配置文件:
input {
beats {
port => "5043"
}
}
filter {
grok {
match => {
"message" => "%{COMBINEDAPACHELOG}"
}
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "test"
document_type => "tw"
}
}
我有这样的情况。
想象一下,弹性搜索已关闭
现在想象一下,当关闭elasticsearch时,logstash会收到记录事件
现在,如果我打开logstash和elasticsearch,则logstash不会发送在步骤2中收到的消息 - 即弹性搜索关闭且logstash正在接收事件。
答案 0 :(得分:0)
现在,Logstash持久队列的行为如下:
“启用持久队列功能后,Logstash会将事件存储在磁盘上。Logstash通过一种称为检查点的机制提交到磁盘。”
https://www.elastic.co/guide/en/logstash/current/persistent-queues.html https://www.elastic.co/guide/en/logstash/current/persistent-queues.html#durability-persistent-queues
答案 1 :(得分:0)
这是您在 logstash.yml 中为您的管道准备的全部内容吗?您应该在 logstash.yml 或 pipelines.yml 中定义您的管道设置。例如,它应该如下所示:
- pipeline.id: Beats
path.config: "/LogStash/pipelines/beatspipeline.yml"
queue.type: persisted
path.queue: /Logstash/data/queue
queue.max_bytes: 10gb
文档没有明确说明您必须配置每个管道设置,但我知道这种方法一直有效。