Logstash收集nginx日志之使用grok过滤插件解析日志

grok作为一个logstash的过滤插件,支持根据模式解析文本日志行,拆成字段。

  • nginx日志的配置:
log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"‘;
  • logstash中grok的正则(添加在logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-xxx/patterns/grok-patterns文件中)为:
WZ ([^ ]*)
NGINXACCESS %{IP:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{WZ:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} %{QS:referer} %{QS:agent} %{QS:xforward}

logstash的配置为:

input {
    file {
        path     => ["/var/log/nginx/access.log"]
        type    => "nginxlog"
        start_position => "beginning"
    }
}

filter {
    grok {
      match => { "message" => "%{NGINXACCESS}" }
    }
}
output {
    stdout {
        codec    => rubydebug
    }
}

logstash的输出:

{
        "message" => "192.168.154.2 - - [30/Mar/2017:01:27:09 -0700] \"GET /index.html HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36\" \"-\"",
       "@version" => "1",
     "@timestamp" => "2017-03-30T08:27:09.539Z",
           "path" => "/var/log/nginx/access.log",
           "host" => "spark4",
           "type" => "nginxlog",
      "remote_ip" => "192.168.154.2",
      "timestamp" => "30/Mar/2017:01:27:09 -0700",
         "method" => "GET",
        "request" => "/index.html",
    "httpversion" => "1.1",
         "status" => "304",
          "bytes" => "0",
        "referer" => "\"-\"",
          "agent" => "\"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36\"",
       "xforward" => "\"-\""
}
时间: 2024-08-26 06:08:28

Logstash收集nginx日志之使用grok过滤插件解析日志的相关文章

Logstash收集nginx日志

1.首先是要在nginx里面配置日志格式化输出 log_format main "$http_x_forwarded_for | $time_local | $request | $status | $body_bytes_sent | $request_body | $content_length | $http_referer | $http_user_agent |" "$http_cookie | $remote_addr | $hostname | $upstrea

使用Logstash收集Nginx日志

Nginx

使用logstash收集java、nginx、系统等常见日志

目录 1.使用codec的multiline插件收集java日志... 1 2.收集nginx日志... 2 3.收集系统syslog日志... 3 4.使用fliter的grok模块收集mysql日志... 4 1.使用codec的multiline插件收集java日志 对于采用ELK作为应用日志来说,多行消息的友好展示是必不可少的,否则ELK的价值就大大打折了.要正确的处理多行消息,需使用multiline插件 比如,对于java日志而言,可以使用: multiline.pattern: '

使用Logstash filter grok过滤日志文件

Logstash提供了一系列filter过滤plugin来处理收集到的log event,根据log event的特征去切分所需要的字段,方便kibana做visualize和dashboard的data analysis.所有logstash支持的event切分插件查看这里.下面我们主要讲grok切分. Grok基本介绍 Grok 使用文本片段切分的方式来切分日志事件,语法如下: %{SYNTAX:SEMANTIC} * `SYNTAX`代表匹配值的类型,例如,`0.11`可以`NUMBER`

Logstash动态模板映射收集Nginx的Json格式的日志

Logstash传输给ES的数据会自动映射为5索引,5备份,字段都为text的的索引.这样基本上无法进行数据分析.所以必须将Logstash的数据按照既定的格式存储在ES中,这时候就要使用到ES模板技术了.在ES中可以定义自定义模板和动态模板,之后es会自动将相关索引映射为模板规定的格式 编译动态映射模板文件bigdata.template: 在Json日志文件中的KEY的位置不固定.或字段数不明确时使用动态映射模板 { "template": "bigdata-templa

elk系统搭建并收集nginx日志-主要步骤

一)简介 elk系统是一套目前较为流行的日志收集分析系统,主要由elasticserch,logstash,kibana三部分组成,其中elasticsearch负责数据的存储,logstash负责日志的收集过滤,kibana负责日志的可视化部分.整个工作流程为logstash收集日志,过滤后输出并保存到elasticsearch中,最后用户通过kibana从elasticsearch中读取数据并处理.本文中日志收集引入filebeat收集日志,logstash监听在5000端口并接受fileb

ELK+kafka收集 Nginx与tomcat日志

ELK日志收集 ELK原理与介绍为什么用到ELK:一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索太慢怎么办.如何多维度查询.需要集中化的日志管理,所有服务器上的日志收集汇总.常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问.一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定

rsyslog收集nginx日志配置

rsyslog日志收集配置 rsyslog服务器收集各服务器的日志,并汇总,再由logstash处理 请查看上一篇文章 http://bbotte.blog.51cto.com/6205307/1613571 客户端/发送端  web服务器 # yum install rsyslog -y # vim /etc/rsyslog.conf *.* @192.168.10.1:514 # vim /etc/bashrc                              #收集其他服务器的操作

ELK收集nginx日志并用高德地图展示出IP

(一)测试的环境 agentd:192.168.180.22 ES:192.168.180.23 kibana:192.168.180.23 采用的拓扑:logstash -->ES-->kibana (二)实施步骤: (1)logstsh具体配置: 1,配置nginx日志格式,采用log_format格式: log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '