java – 来自docker容器的Logstash syslog输入

我有一个在docker主机上的docker容器中运行的
java应用程序.该应用程序使用log4j进行日志记录并记录到syslog.我希望能够将我的syslog日志发送到logstash.

我将rsyslog配置文件中的配置更改为:

*.* @@<logstash host ip>:514 

我在我的logstash配置文件中有syslog:

input {
  syslog {
  type => syslog
  port => 514
}

}

在logstash日志中,我收到错误,说syslog tcp listener死了

exception=>#<Errno::EACCES: Permission denied - bind(2)

我想我应该指定主机在logstash配置中的位置,并将我的dockerhost端口的ip地址添加到配置文件中,但我仍然得到相同的错误.

如何告诉logstash查看dockerhost上的docker容器中的日志?我在这里错过了一个组件吗?

谢谢.

最佳答案 您需要以root身份运行该过程.普通用户(即非root用户)无法绑定到小于1024的端口而没有一些setuid技巧

点赞