0

скажем, у меня есть стек вроде этого: logstash-экспедитора -> logstash -> elasticsearch -> kibanalogstash - фильтр журналы и отправить к различным elasticsearch кластера

Интересно, если это возможно, чтобы контролировать весь каталог с logstash-forwarder и отправить журналы на разные кластер elasticsearch, основанный на фильтрах. Случай использования:

У меня есть несколько программ, которые распечатывают журналы в том же каталоге. Эти журналы могут содержать два типа сообщений - «частный» или отлаживаемый. Опять же, это сообщение может быть использовано в таких же логфайлах. Я знаю, что можно предоставить определенные файлы другого типа и фильтровать их с помощью if на разные выходы. То, что я не знаю, - это то, что вы можете сделать, когда определенный журнал может содержать более одного типа logmessage.

Есть ли способ разделить их? Я хочу ограничить доступ к лог-сообщениям конфиденциальной информацией для определенных пользователей, и я подумал о двух разных кластерах elasticsearch, каждый из которых имеет свои собственные Kibana и LDAP.

BR

ответ

3

Попросите фильтр добавить новое поле на основе содержимого сообщений и использовать это поле, чтобы решить, какой выход это сообщение должно пойти.

Поток событий:

logstash-forwarder --> broker ---> logstash-indexer | --> elasticsearch public 
                | --> elasticsearch private 

Псевдо конфигурации:

input { 
    # broker input 
} 

filter { 

    # structure message 
    grok {} 

    filter { 
     if [action] == "login" { 
      add_field => { "privacy" => 'private' } 
     } else { 
      add_field => { "privacy" => 'public' } 
     } 
    } 
} 

output { 
    if [privacy] == "private" { 
     elasticsearch { 
      # private elasticsearch instance 
     } 
    } 

    if [privacy] == "public" { 
     elasticsearch { 
      # public elasticsearch instance 
     } 
    } 

} 
+0

Спасибо, Фрэнк. Работает как шарм! – Schnebdreleg

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