linux - 通过syslog-ng转发日志

标签 linux syslog splunk syslog-ng graylog2

我正在尝试使用 syslog-ng 将日志转发到我的中央系统日志服务器。但它不起作用。

这是我在 syslog-ng.conf 中添加的行

source s_access { file("/var/log/httpd/access_log" follow_freq(10) flags(no-parse)); };
destination logserver { udp("xxxxxx.amazonaws.com" port(514)); };
log { source(s_access); destination(logserver); };

但是当我重新启动时,出现以下错误。

[root@ip-10-244-143-226 ~]# /etc/init.d/syslog-ng restart
Stopping syslog-ng:                                        [  OK  ]
Starting syslog-ng: syntax error at 79
Parse error reading configuration file, exiting. (line 79)
                                                           [FAILED]

第79行是定义source s_access的行。

可能是什么问题?

请有人帮我解决这个问题:( 下面这行就是问题所在。 源 s_access { file("/var/log/httpd/access_log"follow_freq(10) flags(no-parse, validate-utf8)); };

但我不明白哪里出了问题。

我有 apache、tomcat 和一些自定义应用程序,我需要将这些日志发送到远程中央系统日志服务器。

最佳答案

如果您尝试将 Apache 事件记录到 syslog-ng,那么您会遗漏一些东西。有一篇来自 LogZilla here 的博文这解释了执行此操作的步骤。您应该能够根据您的需要进行调整。但为了完整起见,我将在此处重新发布,以防博客页面被删除:

此方法不仅限于 Apache,而且适用于任何通用日志格式日志。以通用日志格式存储的文件中的每一行都具有以下语法:

host ident authuser date request status bytes

第一步是将新源添加到 syslog-ng 配置中。在/etc/syslog-ng/conf.d 目录中,我们将创建一个文件并将其命名为 apache.conf。

cd /etc/syslog-ng/conf.d 
 vi apache.conf

在编辑器中打开文件后,我们将首先添加源代码。

source s_apache {
 file("/var/log/apache2/access.log");
 file("/var/log/apache2/error.log");
 };

如果您已在 Web 服务器上启用了 ssl-access.log,则还可以添加它。在同一个文件中,我们需要添加一个目的地。

log { source(s_apache);
 destination(d_tls);
 };

在此示例中,目标是在上一教程中创建的 TLS 隧道。保存文件并退出,然后重新启动 syslog-ng。

service syslog-ng restart

您现在应该在 Logzilla 服务器上接收 apache 事件,但它们看起来有点不对劲。那是因为它们还没有被格式化。为此,我们需要编辑 apache 配置。此步骤仅适用于 Apache。对于其他通用日志格式源,每个源都有自己的格式化解决方案。

cd /etc/apache2
 vi apache2.conf

在该文件中,您将找到如下行:

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %v" combined

需要添加一些内容(它将忽略预设日期)。

LogFormat "Jan 12 12:12:12 %v apache[666]: %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %v" combined

保存文件并重新启动 Apache,您的日志应如下所示:

0 www user notice apache None 97.76.75.78 - - [07/Nov/2013:15:14:41 -0500] "GET /highslide/highslide.css HTTP/1.1" 304 209 
"http://www.yourserver.com/" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; EIE10;ENUSMSN)" 
www.yourserver.com

关于linux - 通过syslog-ng转发日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22187893/

相关文章:

logging - Kibana 以 JSON 格式记录到 Syslog

android - 无法从 ubuntu 12.04 中的 adt 包启动 eclipse

MySql 文件大小限制选项

c++ - 大多数守护程序应用程序如何在 Linux 中进行日志记录?

node.js - 需要对带有 Node.js 的 SysLog 的建议

splunk - Filebeat 到 splunk

linux - 如何检查 GIT 是否已完全克隆存储库?

以ARM架构为引用的Linux内核内部结构

regex - 用于基于正则表达式的计数的 splunk 查询

MySQL 和 Splunk - 选择并加入