2016-11-10 2 views
0

У меня есть один вход jdbc, который мне нужно отправить на два разных выхода (http и influxdb). Мне нужно добавить поля в зависимости от выхода. Я надеялся, что смогу использовать add_field во время выходного каскада, но он доступен только на этапах ввода и фильтрации. Может кто-нибудь предложить решение? Logstash 2.4Logstash, как я могу добавить поле в зависимости от вывода?

Например.

input { 
    jdbc { 
    statement => "select col1, col2..." 
    ... 
    } 
} 
filter { 

} 
output { 

    http { 
    #need to add/remove field here for http output 
    } 

    influxdb { 
    #need to add/remove field here for influxdb output 
    } 
} 

ответ

0

Несколько выходов отправят одно и то же событие на эти выходы. Вы можете добавить поле в секции ввода {} или filter {}, но оно будет отправлено обоим.

Если выходы являются условными, вы можете иметь то же условие в разделе фильтра, чтобы добавить уникальные поля.

0

Рядом с концом цепи фильтра добавьте фильтр clone с типом clones значений. Фильтр clone дублирует событие и устанавливает type на клоне. После этого добавьте блок if/else, который добавит нужные поля. Наконец, окружайте ваши выходы блоками if.

Что-то вроде этого:

filter { 
    clone { clones => [ "http", "influx"] } 
    if ([type] == "http") { 
    mutate {} 
    } else if ([type] = "influx") { 
    mutate {} 
    } else { 
    drop {} 
    } 
} 
output { 
    if ([type] == "http") { 
    http {} 
    } 
    if ([type] == "influx") { 
    influxdb {} 
    } 
} 
+0

Да, клон фильтр, что поможет. Я также использовал поле @metadata и поле сброшенного типа, чтобы избежать появления на выходе. благодаря – CharekC

Смежные вопросы