ELK7.4-Lostash神交格式化Nginx日志

  

小生博客:http://xsboke.blog.51cto.com

  
 <代码> - - - - - - -谢谢您的参考,如有疑问,欢迎交流 
  <人力资源/>   

目录   

      <李>需求李   <李>环境李   <李> <代码>欣赏官方介绍李   <李> <代码>网络>   <李>部分效果展示李   
  <人力资源/>   

需求

  
 <代码>使用filebeat收集nginx访问日志,输出到logstash,
  logstash使用神交过滤器插件将获取到的nginx日志结构化
  将结构化的nginx日志输出到elasticsearch  
  

环境

  
      <李>   

    这里只列出了和<代码>神交>   

     <代码> web 172.16.100.251 nignx/filebeat/logstash
      elasticsearch 172.16.100.252 elasticsearch/kibana  
      李   
  

<代码> 心领神会的官方介绍

  
      <李>   

    解析任意文本并将其结构化。

      李   <李>   

    <代码>欣赏是将非结构化日志数据解析为结构化和可查询内容的好方法。

      李   <李>   

    该工具非常适合<代码> syslog 日志,<代码> apache> 网络> 日志,以及通常用于人类而非计算机使用的任何日志格式。

      李   <李>   

    <代码>欣赏语法:<代码> %{语法:语义}

      
        <李> :<代码>语法匹配语法,也就是<代码>欣赏语法。附:点击查看:欣赏模式李   <李> <代码>语义:用于标识匹配到的字符串,也就是<代码>   
      李   <李>   

    官方推荐的一个验证神交语法的web工具,使用方法,将需要解析的字符串写入到第一个文本输入框,将写好的神交表达式写入第二个输入框,然后勾选<代码>命名了alt=" ELK7.4-Lostash神交格式化Nginx日志">   <李>提示,为了避免“|“被转义,这里使用“\“禁止其转义。      李   

  

<代码>网络>    1。<代码> Nginx日志格式/代码>   
 <代码> #这里的日志格式比较复杂,是为了更好的展示神交
  log_format访问“美元request_time |主机| remote_addr美元| $ remote_user | (time_local美元)| |请求状态| $美元upstream_status | $ upstream_response_time | $ upstream_addr | $ body_bytes_sent | $ request_body | $ http_referer | $ http_user_agent | $ http_x_forwarded_for | http_x_forwarded_path美元,美元server_addr | $ upstream_cache_status’;  
   2。<代码> filebeat   
 <代码> vim/etc/filebeat/filebeat.yml
  
  filebeat.inputs:
  类型:日志
  启用:真
  道路:
  ——/var/log/nginx/jpg_access.log
  标签(“nginx_access”):  
   3。<代码> logstash   
 <代码> vim/etc/logstash/conf.d/nginx.conf
  
  输入{
  节拍{
  端口=比;5044
  }
  }
  
  过滤器{
  如果在[标记]“nginx_access”{
  神交{
  匹配=比;{“消息”=比;“%{号码:request_time} \ | % {IPORHOST:主机}\ | % {IPORHOST: remote_addr} \ | %{用户名:remote_user} \ | \ [% {HTTPDATE: time_local} \] \ | % {NOTSPACE: request_method} % {NOTSPACE:请求}(?:HTTP/%{号码:http_version}) %{号码:地位}\ \ | | %{号码:upstream_status} \ | %{号码:upstream_response_time} \ | % {NOTSPACE: upstream_addr} \ | %{号码:body_bytes_sent} \ | % {NOTSPACE: request_body} \ | % {NOTSPACE: http_referer} \ | % {GREEDYDATA: http_user_agent} \ | % {NOTSPACE: http_x_forwarded_for} \ | % {NOTSPACE: http_x_forwarded_path} \”| % {NOTSPACE: upstream_cache_status}}
  }
  
  geoip {
  源=比;“http_x_forwarded_for”#通过geoip库查询IP归属地
  }
  }
  }
  
  输出{
  如果在[标记]“nginx_access”{
  elasticsearch {
  主机=比;[" 172.16.100.252 "]
  指数=比;“nginx_access - % {+ YYYY.MM.dd}”
  }
  }
  } 
  

效果

  

然后在<代码> Kibana> 页发现面就会看多自定义的<代码>字段

  

这样在更利于后期的数据分析,并且在<代码> 页发现面可以更直观的过滤或者查看数据。
 ELK7.4-Lostash神交格式化Nginx日志

ELK7.4-Lostash神交格式化Nginx日志