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