Доброго времени суток! Имеется задача поднять связку по сбору логов через 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.
Буду признателен за наводки и\или подсказки.