Задать вопрос

Настройка связки ELK для центрального логирования, как принять логи с rsyslog-клиентов?

Доброго времени суток! Имеется задача поднять связку по сбору логов через UDP с клиентов. Делаю пробную тестовую версию, но подводные камни повсюду.

Имеется:
поток логов с нескольких клиентов (*.*@logstash-server);
logstash, настроенный на прием и отправку в elasticsearch + kibana.

Конфиг logstash (по сути скопировано с оф. документации для приема и обработки логов rsyslog-клиентов)
input {
    udp {
      type => rsyslog
      port => 50514
          }
}

filter {
 if [type] == "rsyslog" {
     grok {
     match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %
     add_field => [ "received_at", "%{@timestamp}" ]
     add_field => [ "received_from", "%{host}" ]
     }
     date {
     match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
     }
                                           }
}

output {
     elasticsearch { hosts => ["<hostname><port>]
     index => "logs-%{+YYYY.MM.dd}"
     }
}


Проблема: логи сыпятся, если посмотреть вывод tcpdump. Порты открыты. Logstash слушает нужный порт.
Но логов нигде не видно. Они сыпятся на интерфейс, но куда они сохраняются? И сохраняются ли вообще?
В elasticsearch никаких настроек не делал, кроме как получения доступа через браузер.
Как корректно принять логи от rsyslog-клиентов?
Не нашел ни одного мануала, где бы logstash использовался как приемник от rsyslog с последующей отправкой в elasticsearch.
Буду признателен за наводки и\или подсказки.
  • Вопрос задан
  • 2242 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@luxter Автор вопроса
Нашёл проблему, всё оказалось просто. Упрощенный базовый конфиг:

input { udp {
    port => 50514
        type => syslog} }

filter {
  if [type] == "syslog" {
      grok {
           match => { "message" => "%{SYSLOGBASE} : %{GREEDYDATA:syslog_message}" }
           }
      syslog_pri { }
                         }
        }

output {
  elasticsearch { hosts => ["ИМЯ ХОСТА:9200"] }
    stdout { codec => rubydebug }
    }


PS Логстэш слушает на 50514, а iptables перенаправляет входящий трафик на порт 514:
iptables -t nat -I PREROUTING -p udp --dport 50514 -j REDIRECT --to-port 514
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы