将日志发送到 Graylog2 服务器

11 ubuntu logging rsyslog apache-2.2 graylog

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

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

对于 Apache 日志,我还想要 Rails 日志。我的网站位于/srv/www/,然后结构是sitename.com/public_htmlsitename.com/logs。我在服务器上有很多站点,我想要一种简单的方法来查看所有错误并从中制作一些漂亮的图表,因此我想使用 Graylog2 ...

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

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

ETL*_*ETL 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"
}
Run Code Online (Sandbox Code Playgroud)

对于 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
Run Code Online (Sandbox Code Playgroud)

然后在您的主机配置中:

CustomLog "|nc -u graylogserver 12201" graylog2_access
Run Code Online (Sandbox Code Playgroud)


小智 5

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

tail -F -q $yourlogfile |   while read -r line ; do   echo "<7> $hostnamesendingthelog $line" | nc -w 1 -u $graylogserver 514;   done;
Run Code Online (Sandbox Code Playgroud)

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

您可能可以跟踪您的 rails 日志文件,看看会发生什么。


nat*_*ado 2

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

看看Logstash。大多数人将其视为使用 ElasticSearch 索引日志文件的工具,但它还包含一个通用“日志路由器”,可让您跟踪磁盘上的一堆文件并将它们发送到 Graylog 等日志组件。

  • Rsyslog可以轻松读取日志:http://www.rsyslog.com/doc/imfile.html (2认同)