Logstash 运行过滤器插件异常行为

Logstash 运行过滤器插件异常行为,logstash,logstash-configuration,logstash-file,Logstash,Logstash Configuration,Logstash File,我正在使用运行过滤器插件计算特定id的多个开始/结束事件之间的时间差 if [StepName] == "Step1" and [StepStatus] == "start" { mutate { add_tag => "Step1_start" } } else if [StepName] == "Step1" and [StepStatus] == "end" { mutate { add_tag => "Step1_end" } } else if [StepN

我正在使用运行过滤器插件计算特定id的多个开始/结束事件之间的时间差

if [StepName] == "Step1" and [StepStatus] == "start" {
    mutate { add_tag => "Step1_start" }
} else if [StepName] == "Step1" and [StepStatus] == "end" {
    mutate { add_tag => "Step1_end" }
} else if [StepName] == "Step2" and [StepStatus] == "start" {
    mutate { add_tag => "Step2_start" }
} else if [StepName] == "Step2" and [StepStatus] == "end" {
    mutate { add_tag => "Step2_end" }
} else if [StepName] == "Step3" and [StepStatus] == "start" {
    mutate { add_tag => "Step3_start" }
} else if [StepName] == "Step3" and [StepStatus] == "end" {
    mutate { add_tag => "Step3_end" }
} 

elapsed{
    start_tag => "Step1_start"
    end_tag => "Step1_end"
    unique_id_field => "FrtId"
    new_event_on_match => false
    timeout => 1800
}
elapsed{
    start_tag => "Step2_start"
    end_tag => "Step2_end"
    unique_id_field => "FudtId"
    new_event_on_match => false
    timeout => 1800
}
elapsed{
    start_tag => "Step3_start"
    end_tag => "Step3_end"
    unique_id_field => "FudtId"
    new_event_on_match => false
    timeout => 1800
}
我面临的问题是,尽管数据绝对正确。对于许多文档,我得到了“已用的\u结束\u而没有\u开始”标签。但是对于同一个文档,我在加载它的文件中已经有了开始标记


任何帮助都将不胜感激。谢谢你的回答。

我终于得到了答案

所以在未来,如果有人面临同样的问题。 这是一个过滤器插件的问题。因为为你的仓库而奔走的工人的数量并不是单一的

他们应该在他们的文档中提到,经过过滤的插件只适用于单个logstash工作者。正如他们提到的聚合过滤器插件

一个id的开始标记可能由一个工作者处理,而结束标记可能由另一个工作者处理。因此,在本例中,它为该结束事件添加了标记“经过的\u结束\u而没有\u开始”

但是,如果有多个工人。这并不是说插件会完全失败。它可以给你70-80%的准确度(它给了我这么多,完全是随机的)

这种情况的解决办法是,我们可以将logstash工人的数量定义为1。然而,这并不是一个最佳的解决方案,因为数据接收速度会很慢,而且一个工作人员的负载会很重