2014-12-12 5 views
4

У меня есть приложение 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 для журналов? я не хватает компонента здесь?

Спасибо.

+1

Я не могу помочь вам подключить Docker к Logstash хост-компьютера, но причиной вашей ошибки EACCES является то, что по умолчанию только root может привязать к портам ниже 1024. Измените порт, запустите Logstash с правами root или посмотрите другие параметры по адресу http://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to -bind к привилегированным портам-1024-на-л. –

+0

Я пробовал это, и он говорит, что операция не разрешена. Служба logstash, расположенная в файле /etc/init.d, является скриптом ... поэтому .. Я не думаю, что смогу использовать это решение. Я не могу запустить logstash как root, поэтому я думаю, что мне нужно менять порты. –

+0

Просто отметить, что при регистрации java-приложений через syslog могут возникнуть проблемы из-за ограничения на 1024 байта на сообщения syslog, исключения часто превышают это. –

ответ

2

Вам необходимо запустить процесс как root. обычные пользователи (т. е. не root) не могут связываться с портами менее 1024 без какого-либо трюка setuid

Смежные вопросы