logstash配置--syslog

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logstash配置--syslog相关的知识,希望对你有一定的参考价值。

参考技术A syslog 可能是运维领域最流行的数据传输协议了。当你想从设备上收集系统日志的时候,syslog 应该会是你的第一选择。尤其是网络设备,比如思科 —— syslog 几乎是唯一可行的办法。

我们这里不解释如何配置你的syslog.conf,rsyslog.conf或者syslog-ng.conf来发送数据,而只讲如何把 logstash 配置成一个 syslog 服务器来接收数据。

配置示例

运行结果

作为最简单的测试,我们先暂停一下本机的syslogd(或rsyslogd)进程,然后启动 logstash 进程(这样就不会有端口冲突问题)。现在,本机的 syslog 就会默认发送到 logstash 里了。我们可以用自带的logger命令行工具发送一条 "Hello World"信息到 syslog 里(即 logstash 里)。看到的 logstash 输出像下面这样:

来自 docker 容器的 Logstash syslog 输入

【中文标题】来自 docker 容器的 Logstash syslog 输入【英文标题】:Logstash syslog input from docker container 【发布时间】:2014-12-12 21:35:22 【问题描述】:

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

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

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

我在我的系统日志的logstash配置文件中有:

input 
  syslog 
  type => syslog
  port => 514

在logstash日志中我得到错误说syslog tcp listener dead and

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

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

如何让 logstash 查看 dockerhost 上的 docker 容器中的日志?我在这里缺少一个组件吗?

谢谢。

【问题讨论】:

我无法帮助您将 Docker 连接到主机的 Logstash,但您的 EACCES 错误的原因是默认情况下只有 root 可以绑定到 1024 以下的端口。更改端口,运行 Logstash 为root,或者在***.com/questions/413807/…查看其他选项。 我试过这样做,它说不允许操作。 /etc/init.d 中的logstash 服务是一个脚本......所以.. 我认为我不能使用这个解决方案。我无法以 root 身份运行 logstash,所以我认为我必须更改端口。 请注意,通过 syslog 记录 java 应用程序可能会由于 syslog 消息的 1024 字节限制而导致问题,异常通常会超过此限制。 【参考方案1】:

您需要以 root 身份运行该进程。普通用户(即非 root 用户)无法绑定到小于 1024 的端口而无需一些 setuid 技巧

【讨论】:

以上是关于logstash配置--syslog的主要内容,如果未能解决你的问题,请参考以下文章

logstash配置文件

logstash配置文件详解

logstash 服务配置

EFLK-Logstash安装配置

如何调试Logstash配置文件

轻松测试 logstash 的配置文件