将日志发送到Graylog2服务器

我刚刚设置了一个Graylog2服务器,我正在寻找从主服务器发送所有日志到graylog服务器。 我启用了对主服务器的日志loggingfunction,并通过将*.* @logs.example.com:1337添加到/etc/rsyslog.conf来将日志发送到我的graylog服务器。

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

对于Apache日志,我也喜欢Rails日志。 我的网站位于/srv/www/ ,然后结构是sitename.com/public_htmlsitename.com/logs 。 我有很多网站在服务器上,我想要一个简单的方法来查看所有的错误,并做出一些漂亮的图表,因此,我为什么要使用Graylog2 …

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

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

这是旧的,但我想我会写这个方法,我用于低/中等交通网站(不知道它是否会适合繁忙的交通网站):

在Apache中,我定义了一个称为graylog2_access的CustomLog格式, graylog2_access访问日志格式化为GELF格式,然后通过将log数据通过nc发送给Graylog2的input来发送GELF消息,通过Graylog2发送我的日志。

这是它创build的自定义格式(可读的):

 { "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" } 

对于Apacheconfiguration,这是一个复制/粘贴版本:

 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 

然后在你的主机configuration中:

 CustomLog "|nc -u graylogserver 12201" graylog2_access 

Graylog2只接受两种格式的日志:标准系统日志和Graylog扩展日志格式(又名GELF)。 磁盘上的任意日志将需要一些第三方进程来使用日志并将其转换为对您有用的表单。

看看Logstash 。 大多数人认为它是一个使用ElasticSearch索引日志文件的工具,但是它也包含了一个通用的“日志路由器”,可以让你将一堆文件放在磁盘上,并将它们发送到一个日志组件,比如Graylog。

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

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

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

您可能可能会尾随您的rails日志文件,看看会发生什么。

您可以从这里使用apache2gelf脚本。