发送日志到Graylog2服务器


11

我刚刚设置了Graylog2服务器,并且希望将所有日志从主服务器发送到Graylog服务器。我已启用主服务器的日志记录,并通过添加*.* @logs.example.com:1337到将日志发送到我的Graylog服务器/etc/rsyslog.conf

我想要的是让Graylog2收集我所有的Apache日志,系统日志(用于SSH登录,拒绝登录)以及我需要监视的所有其他日志。

对于Apache日志,我也想要Rails日志。我的站点位于/srv/www/,然后结构为sitename.com/public_htmlsitename.com/logs。我在服务器上有很多站点,我想以一种简单的方法查看所有错误并从中找出一些漂亮的图形,因此为什么我要使用Graylog2 ...

logs文件夹中的日志文件是access.logerror.log

Rails日志将在中sitename.com/public_html/log。这包含production.log


这里有什么问题?如果您已安装rsyslog,则可以使用它将Rails / Apache日志发送到Graylog2(rsyslog.com/doc/imfile.html
多项式

Answers:


10

这是旧的,但我想我会写这种方法用于低流量/中流量站点(不知道对于高流量站点是否适用):

在Apache中,我定义了一个CustomLog格式graylog2_access,该格式将访问日志格式化为GELF格式,然后通过将日志数据通过nc传递给Graylog2的输入,从而通过Graylog2发送我的日志。

这是它创建的自定义格式(人类可读):

{ 
 "version": "1.1",
 "host": "%V",
 "short_message": "%r",
 "timestamp": %{%s}t,
 "level": 6,
 "_user_agent": "%{User-Agent}i",
 "_source_ip": "%a",
 "_duration_usec": %D,
 "_duration_sec": %T,
 "_request_size_byte": %O,
 "_http_status": %s,
 "_http_request_path": "%U",
 "_http_request": "%U%q",
 "_http_method": "%m",
 "_http_referer": "%{Referer}i"
}

对于Apache配置,这是一个复制/粘贴版本:

LogFormat "{ \"version\": \"1.1\", \"host\": \"%V\", \"short_message\": \"%r\", \"timestamp\": %{%s}t, \"level\": 6, \"_user_agent\": \"%{User-Agent}i\", \"_source_ip\": \"%a\", \"_duration_usec\": %D, \"_duration_sec\": %T, \"_request_size_byte\": %O, \"_http_status\": %s, \"_http_request_path\": \"%U\", \"_http_request\": \"%U%q\", \"_http_method\": \"%m\", \"_http_referer\": \"%{Referer}i\" }" graylog2_access

然后在您的主机配置中:

CustomLog "|nc -u graylogserver 12201" graylog2_access

+1好人!必须在我们的系统之一上尝试此操作,但是要使用ERROR。
Henk

@Henk-如果您为错误日志设置格式,请告诉我,我想但还没有花时间。另外,请访问serverfault.com/questions/582510/…,以获取我以后遇到的问题的一些信息。
ETL 2014年

5

您还可以使用以下简单命令将日志文件发送到graylog2服务器:

tail -F -q $yourlogfile |   while read -r line ; do   echo "<7> $hostnamesendingthelog $line" | nc -w 1 -u $graylogserver 514;   done;

我主要将其用于测试目的,以确定我的日志格式是否适用于graylog2中的轻松查询。对于生产用途,您将不需要设置rsyslog或syslog-ng。

您可能可以拖尾Rails日志文件,看看会发生什么。


我喜欢此回复的简单性:直截了当,无需任何其他工具。我不知道该如何处理日志文件时间戳:也许什么也没做,而且没关系?
德克萨斯州布隆尼斯

2

Graylog2仅接受两种格式的日志:标准syslog和Graylog扩展日志格式(aka GELF)。磁盘上的任意日志将需要一些第三方过程来使用日志,并将其转换为对您有用的格式。

看一下Logstash。大多数人将其视为使用ElasticSearch索引日志文件的工具,但它也包含通用的“日志路由器”,可让您在磁盘上拖尾一堆文件并将其发送到类似Graylog的日志记录组件。


2
Rsyslog可以轻松读取日志:rsyslog.com/doc/imfile.html
多项式

1
尽管rsyslog可以将其他文件用作输入,但是使用logstash的优点是能够使用Grok的预定义正则表达式(请参阅logstash.net/docs/1.0.17/filters/grok)将某些结构纳入日志消息并不只是明文。
joschi 2011年

syslog-ng的可以做同样的比较rsyslog现在清洁配置:loggly.com/support/sending-data/logging-from/syslog/syslog-ng/...
HVNSweeting

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.