Я хочу, чтобы мой локальный экземпляр Logstash пересылал системный журнал и все /var/log/*
файлы в удаленный центральный экземпляр Logstash.
Трубопровод в /etc/logstash/conf/logstash-local.conf
выглядит следующим образом:
input {
file {
type => "syslog"
path => [ "/var/log/*.log", "/var/log/syslog" ]
}
}
output {
stdout { codec => rubydebug }
tcp {
host => "logging.example.com"
port => 5000
}
}
Когда я пытаюсь выполнить logger "foo"
, событие записывается в локальный системный журнал, но его нет в моем удаленном журнале Logstash. Также нет других событий из системного журнала.
Что я пробовал:
Все выглядит идеально ... но не работает! :)
Если вы еще не убедились в этом, tcp {}
вывод использует json
кодек для передач. Если ваша принимающая сторона этого не ожидает, вы не получите ничего особенного. В остальном конфигурация у вас выглядит солидной. На выходах нет фильтров, поэтому все должно идти на оба.
Что касается отладки, когда он запускается, проверьте свою сетевую статистику, чтобы узнать, пытается ли TCP-соединение открыться для вашего пульта дистанционного управления. Что-то застряло в SYN_SENT
является признаком того, что проблема здесь не в Logstash. Если вы все еще не открываете это соединение, вероятно, стоит запустить logstash с трассировщиком системных вызовов, таким как strace (системы Linux) или procmon (системы Windows), чтобы увидеть, что происходит с вызовом создания соединения.