Graylog收集Nginx访问日志
文章目录
Nginx
端配置
因为NGINX
的access_log
语法是支持发送至远端的syslog
的,我们就是利用这一特性来实现。既然可以收集至Graylog
,我们的目标是可以对访问日志的列进行检索。
修改nginx.conf
文件,增加一个log_format
,将日志格式转化成JSON
。
|
|
Graylog
端设置
-
进入管理端,创建一个类型为
Raw/Plaintext UDP
的Input
,输入名字,同时勾选Global
,其他保持默认。 当Input
起来之后,访问Nginx
,就会将访问日志发送过来了。但是,发送过来的日志内容是非序列化的,是原始字符串,而且NGINX
还会加上它的标识,原始消息如下: -
虽然日志发送过来,但是是非序列化的,我们定义的
json
格式并不是真正的json
内容。接下来就要针对原始内容做一点处理。Graylog
引入了extractor
功能,就是用来对输入的消息做些简单处理。在input
列表页里面,再增加extractor
。 我们分析原始字符串,发现我们需要的JSON
字符串是在nginx:
后面的。而前面是NGINX
添加的NGINX
所在的主机名以及它自己的进程名称。所以第一步,我们使用extractor
的split&Index
功能,将JSON
字符串提取出来。根据
nginx:
分割 保存的字符段名仍为message
,并且设置为cut
,不需要保留原消息,以于节省磁盘空间。 再回到搜索页面,发现日志现在是JSON
格式的,不过仍然是原始的JSON
字符串。 -
重复刚才的步骤,再增加一个
extractor
,这次类型选择json
选择始终转换,类型也为cut
,并命名 二个都创建好的截图 -
完成,回到
search
页,你会发现NGINX
的访问日志字段现在都可以作为检索列出现了。
文章作者 UnknowName
上次更新 2021-02-28