Elapsed Filter Plugin странное поведение - PullRequest
0 голосов
/ 02 июля 2018

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

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". Однако для того же документа у меня уже есть стартовый тег в файле, из которого я его загружаю.

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

1 Ответ

0 голосов
/ 03 июля 2018

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

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

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

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

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

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

...