Filebeat收集nginx的json格式日志

1.上一篇文章:Filebeat收集简单nginx日志

不完善的地方:所有日志都存储在message的value里,不能拆分单独显示

 

2.理想中的情况

可以把日志所有字段拆分出来

{
$remote_addr : 192.168.12.254
- : -
$remote_user : -
[$time_local]: [10/Sep/2019:10:52:08 +0800]
$request: GET /jhdgsjfgjhshj HTTP/1.0
$status : 404
$body_bytes_sent : 153
$http_referer : -
$http_user_agent :ApacheBench/2.3
$http_x_forwarded_for:-
}

 

 

3.目标如何使nginx日志格式转换成我们想要的json格式

修改nginx.conf配置文件使日志转换成json


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"'
' }';

access_log /var/log/nginx/access.log json;

 

修改如下图

Filebeat收集nginx的json格式日志

 

清除旧日志
> /var/log/nginx/access.log

检查并重启nginx
nginx -t
systemctl restart nginx

 

4.nginx转换成json之后仍然不完善的地方

通过查看发现,虽然nginx日志变成了json,但是es里还是存储在message里仍然不能拆分
目标: 如何在ES里展示的是json格式

 

5.修改filebeat配置文件支持json解析

cat >/etc/filebeat/filebeat.yml<<EOF
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true

output.Elasticsearch:
hosts: ["10.0.0.51:9200"]
EOF

 

6.删除ES里以前的索引

es-head >> filebeat-6.6.0-2019.11.15 >> 动作 >>删除

 

7.重启filebeat

systemctl restart filebeat

Filebeat收集nginx的json格式日志

 

 

 

赞赏

微信赞赏支付宝赞赏

ELK

Elasticsearch中文分词之热更新词典

2019-12-5 12:08:35

ELK

Filebeat收集简单Nginx日志

2019-12-5 13:34:53

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索