这是旧的,但我想我会写这种方法用于低流量/中流量站点(不知道对于高流量站点是否适用):
在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