0
点赞
收藏
分享

微信扫一扫

8.利用Filebeat收集Nginx的Json格式访问日志和错误日志到Elasticsearch

生产环境中经常需要获取Web访问用户的信息,比如:网站的PV,UV,状态码,用户来自哪个地区,访问时间等 

可以通过收集的Nginx的访问日志实现 

默认Nginx的每一次访问生成的访问日志是一行文本,ES没办法直接提取有效信息,不利于后续针对特定信息的分析 
可以将Nginx访问日志转换为JSON格式解决这一问题

安装 nginx 配置访问日志使用 Json格式

#安装Nginx
[root@ubuntu2004 ~]#apt update && apt -y install nginx
[root@ubuntu2004 ~]#vim /etc/nginx/nginx.conf 
.....  
    log_format access_json '{"@timestamp":"$time_iso8601",'                             '"host":"$server_addr",'       
        '"clientip":"$remote_addr",'    
        '"size":$body_bytes_sent,'
        '"responsetime":$request_time,'  
        '"upstreamtime":"$upstream_response_time",'
        '"upstreamhost":"$upstream_addr",'     
        '"http_host":"$host",'      
        '"uri":"$uri",'     
        '"domain":"$host",'     
        '"xff":"$http_x_forwarded_for",'   
        '"referer":"$http_referer",'     
        '"tcp_xff":"$proxy_protocol_addr",' 
        '"http_user_agent":"$http_user_agent",'
        '"status":"$status"}';
    access_log /var/log/nginx/access_json.log access_json ;
    
#默认开启nginx的错误日志,但如果是ubuntu,还需要修改下面行才能记录错误日志
[root@ubuntu2004 ~]#vim /etc/nginx/sites-available/default  
    location / {        
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.   
        #try_files $uri $uri/ =404;  #将此行注释
[root@ubuntu2004 ~]#systemctl restart nginx 

#用浏览器访问几次,包括404等错误访问,查看日志是否记录
10.0.0.106
10.0.0.106/xxx.html

修改 Filebeat 配置文件,收集nginx-access文件,并自定义索引名(把之前定义的注释掉)

[root@ubuntu2004 ~]# vim /etc/filebeat/filebeat.yml 
filebeat.inputs: 
  - type: log
    enabled: true 
    paths: 
    - /var/log/nginx/access.log
output.elasticsearch:
  hosts:["10.0.0.101:9200"]
  index: "nginx-access-%{[agent.version]}-%{+yyyy.MM.dd}"
setup.ilm.enabled: false        
setup.template.name: "nginx"     
setup.template.pattern: "nginx-*"

重启filebeat  
[root@ubuntu2004 ~]# systemctl restart rsyslog.service



举报

相关推荐

0 条评论