У меня есть приложение java, работающее в контейнере докеров на докере-хосте. Приложение использует log4j для ведения журналов и журналов в syslog. Я хочу, чтобы иметь возможность отправлять журналы журнала syslog в logstash.Вход в системный журнал Logstash из контейнера докеров
Я изменил конфигурацию в Rsyslog файле конфигурации для:
*.* @@<logstash host ip>:514
и у меня в конфигурационном файле logstash для Syslog:
input {
syslog {
type => syslog
port => 514
}
}
и в журналах logstash я получил ошибки, связанные с прослушиванием syslog tcp, и
exception=>#<Errno::EACCES: Permission denied - bind(2)
Я думал, что должен указать, где находится хост в конфигурациях logstash, и добавил ip-адрес моего порта dockerhost + в конфигурационный файл, но я все равно получаю те же ошибки.
Как я могу сообщить logstash, чтобы посмотреть на контейнер докеров на dockerhost для журналов? я не хватает компонента здесь?
Спасибо.
Я не могу помочь вам подключить Docker к Logstash хост-компьютера, но причиной вашей ошибки EACCES является то, что по умолчанию только root может привязать к портам ниже 1024. Измените порт, запустите Logstash с правами root или посмотрите другие параметры по адресу http://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to -bind к привилегированным портам-1024-на-л. –
Я пробовал это, и он говорит, что операция не разрешена. Служба logstash, расположенная в файле /etc/init.d, является скриптом ... поэтому .. Я не думаю, что смогу использовать это решение. Я не могу запустить logstash как root, поэтому я думаю, что мне нужно менять порты. –
Просто отметить, что при регистрации java-приложений через syslog могут возникнуть проблемы из-за ограничения на 1024 байта на сообщения syslog, исключения часто превышают это. –