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_html
和sitename.com/logs
。我在服务器上有很多站点,我想要一种简单的方法来查看所有错误并从中制作一些漂亮的图表,因此我想使用 Graylog2 ...
日志文件夹中的日志文件是access.log
和error.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 日志文件,看看会发生什么。
归档时间: |
|
查看次数: |
27914 次 |
最近记录: |