Странное поведение Elapsed Filter Plugin

Я использую плагин просроченного фильтра для расчета разницы во времени между несколькими начальными/конечными событиями для определенного идентификатора.

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
}

Проблема, с которой я сталкиваюсь, заключается в том, что, несмотря на то, что данные абсолютно верны. Для многих документов я получаю тег «elapsed_end_without_start». Однако для того же документа у меня уже есть начальный тег в файле, из которого я его загружаю.

Любая помощь будет оценена. Спасибо за А2А.


person Rohit Agrawal    schedule 02.07.2018    source источник


Ответы (1)


Наконец-то я получил свой ответ.

Так что в будущем, если кто-то столкнется с той же проблемой. Это проблема с истекшим плагином фильтра. Поскольку количество рабочих, работающих для вашего logstash, не является единственным.

Они должны упомянуть в своей документации, что плагин просроченного фильтра корректно работает только с одним воркером logstash. Как они уже упоминали для плагина совокупного фильтра.

Может случиться так, что начальный тег для идентификатора обрабатывается одним работником, а конечный тег — другим. Таким образом, в этом случае он добавляет тег «elapsed_end_without_start» для этого конечного события.

Однако, если есть несколько рабочих. Дело не в том, что плагин с истекшим сроком действия полностью выйдет из строя. Это может дать вам точность около 70-80% (Это дало мне столько. Это совершенно случайно)

Обходной путь для этой ситуации заключается в том, что мы можем определить количество рабочих процессов logstash равным единице. Однако это не оптимальное решение, так как прием данных будет медленным и будет большая нагрузка на одного работника.

person Rohit Agrawal    schedule 03.07.2018