Конструкции if else в секции input


(Pavel Kozlov) #1

Коллеги доброго дня,
есть поток файлов идущих по rsyslog на сервер logstash.
Есть желание разделить multiline правила в зависимости от того какой файл сейчас обрабатывается.
Возможно ли использовать конструкцию if [source] == "file_name" { } в разделе input?
или есть другие способы?

Вариант с разделением портов не подходит, так как файлы идут из нескольких агрегированных источников.


(Igor Motov) #2

Conditionals могут быть только в фильтре, но я думаю можно добавить два file input с разными codec-ами и разными path на которые они будут реагировать.


(Pavel Kozlov) #3

Игорь, доброго вечера.
а можно абстрактный пример?
я не сумел собрать подобную конструкцию (


(Igor Motov) #4

Вы так не пробовали? Что не работает?

input {
  file {
    path => '/path/app1/*.log'
    codec => ...........
    tags => [ 'app1' ]
  }
}

input {
  file {
    path => '/path/app1/*.log'
    codec => ...........
    tags => [ 'app2' ]
  }
}


(Pavel Kozlov) #5

Игорь, доброго вечера
эта конструкция у меня работает,
я неправильно описал свою текущую конфигурацию, прошу прощения,
у меня настроен слушатель udp

input {
 udp {
   port => 514
   type => "rsyslog"
 }

и вот как его разделить не разделяя по портам, я не понимаю и возможно ли это в принципе.


(Igor Motov) #6

Я в logstash не специалист, так что может я что-то недопонимаю, но так на абстрактном уровне, каким образом мы можем определить, откуда пришел запрос до того, как мы его обработали, если мы все шлем на один и тот же порт?


(system) #7

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.