先修改nginx 的日志为json 格式 修改nginx 的配置文件: 将下面内容添加到nginx.conf log_format json '{ "time_local": "$time_local", ' '"remote_addr": "$remote_addr", ' '"referer": "$http_referer", ' '"request": "$request", ' '"status": $status, ' '"bytes": $body_bytes_sent, ' '"agent": "$http_user_agent", ' '"x_forwarded": "$http_x_forwarded_for", ' '"up_addr": "$upstream_addr",' '"up_host": "$upstream_http_host",' '"upstream_time": "$upstream_response_time",' '"request_time": "$request_time"' ' }'; vim /etc/nginx/nginx.conf保存,退出, 先清空原来的nginx日志
重启nginx。 systemctl restart nginx 再用ab命令,压测一下nginx,产生日志。 ab -n 100 -c 100 http://192.168.189.118/abcx200s404.html 查看日志: tail -f /var/log/nginx/access.log
觉得这个日志,看上去,不友好,可以这样,复制到json格式化网站,可以在线json格式化。 浏览器打开这个网站:www.bejson.com
![]()
清除ES里面原来的索引数据都删除:
重新清空一下 nginx 的日志,再重新写一些日志进来。 ab -n 100 -c 100 http://192.168.189.118/abcx200s404.html
Kibana 里面,清除原来的创建的索引模式
![]()
![]()
![]()
再重新创建一次索引模式。
![]()
![]()
你会发现,还是message里面的日志,还是原来的格式,并不是json格式。
同样,我们在ES里面看到的数据,也还是一样,message里面的内容并没有被拆分成json格式 这是因为filebeat的配置文件里面 还是按照原来的格式读取,并没有按照json格式解析。 修改filebeat配置文件,添加json格式参数
清除ES里面的索引数据,以及删除kibana里面的数据。重启filebeat 再清空nginx 的日志,并重新生成一些nginx 日志数据, >/var/log/nginx/access.log ab -n 120 -c 120 http://192.168.189.118/abcx200s404.html 也可以在其他虚拟机上,进行压力测试,或者访问189.118的nginx ,产生多一些的日志。 这时,我们再查看,ES里面的数据,会发现,日志格式分生了改变。
打开kibana ,再创建索引模式
![]()
![]()
我们可以在,左边,添加任意字段,并展示出来。
![]()
![]()
![]()
![]()
![]()
自定义filebeat 模板 当我们在kibana中,添加过滤条件时,会发现,Filter里面有好多字段是我们用不到的。
这些字段是在那里来的啦?
我们可以通过修改Filebeat的配置文件,来设定我们自己的模板。 vim /etc/filebeat/filebeat.yml
重启 filebeat 删除ES里面原来的索引,和 kibana里面的索引数据,清空nginx日志。 重新生成一些nginx 日志。 再查看ES里面的索引:
Kibana 创建索引
![]()
![]()
保存,退出,
觉得这个日志,看上去,不友好,可以这样,复制到json格式化网站,可以在线json格式化。
浏览器打开这个网站:www.bejson.com
清除ES里面原来的索引数据都删除:
Kibana 里面,清除原来的创建的索引模式
再重新创建一次索引模式。
同样,我们在ES里面看到的数据,也还是一样,message里面的内容并没有被拆分成json格式
清除ES里面的索引数据,以及删除kibana里面的数据。重启filebeat
再清空nginx 的日志,并重新生成一些nginx 日志数据,
打开kibana ,再创建索引模式
我们可以在,左边,添加任意字段,并展示出来。
这些字段是在那里来的啦?
我们可以通过修改Filebeat的配置文件,来设定我们自己的模板。
vim /etc/filebeat/filebeat.yml
Kibana 创建索引
