У меня есть следующая топология:
клиенты rsyslog-> logstash сервер-> elasticsearch и другой logstash и alienvault и локальный файл
Проблема состоит в том, что alienvault хочет просто необработанное сообщение без любых json полей. Как я мог отправить только в alienvault просто значение поля "сообщения"?
До сих пор я сделал что-то вроде этого: - в logstash в фильтре я настроил клон {клоны => ["посторонний объект"]}. - вся остающаяся фильтрация выше этой строки - после всех других фильтрация, как которая у меня есть что-то..., если [тип] == "посторонний объект"-> видоизменяется-> remove_field (все поля за исключением [тип]; - в выводе logstash я имею если [тип] == "посторонний объект" udp {хост, порт, и т.д.}
Но AlienVault все еще получает что-то вроде этого:
31 августа 17:01:41 {"сообщение": "31 августа 9:01:35 bkp1 sshd [10538]: Соединение от порта", "тип": "посторонний объект"}
и я хочу, чтобы AlienVault получил просто "31 августа 9:01:35 bkp1 sshd [10538]: Соединение от порта"
Действительно ли это возможно с logstash?
Спасибо
Хорошо, через два дня я наконец понял (на случай, если это кому-то еще понадобится). Итак, это вывод для AlienVault:
tcp { host => "" порт => "" message_format => "% {сообщение}" кодек => строка {формат => "% {сообщение}"} }
P.S. Я думаю, вам нужно, чтобы это был tcp, потому что вам нужен этот "message_format", который недоступен на выходе udp.