I want my local instance of Logstash to forward syslog and all /var/log/*
files to a remote, central instance of Logstash.
The pipeline in /etc/logstash/conf/logstash-local.conf
looks as follows:
input {
file {
type => "syslog"
path => [ "/var/log/*.log", "/var/log/syslog" ]
}
}
output {
stdout { codec => rubydebug }
tcp {
host => "logging.example.com"
port => 5000
}
}
When I try and execute logger "foo"
, the event is logged to the local syslog, but it is not found in my remote Logstash. Neither are other events from syslog.
Things I tried:
Everything looks perfect... but it does not work! :)
Если у вас нет Убедившись в этом, вывод tcp {}
использует для передачи кодек json
. Если ваша принимающая сторона этого не ожидает, вы не получите ничего особенного. В остальном конфигурация у вас выглядит солидной. Никаких фильтров на выходах, поэтому все должно идти к обоим.
С точки зрения отладки, при запуске проверьте свою сетевую статистику, чтобы увидеть, пытается ли TCP-соединение открыться для вашего пульта дистанционного управления. Что-то застряло в SYN_SENT
- это признак проблемы, отличной от Logstash. Если вы все еще не открываете это соединение,вероятно, стоит запустить logstash с трассировщиком системных вызовов, например strace (системы Linux) или procmon (системы Windows), чтобы посмотреть, что происходит с вызовом создания соединения.