<pre name="code" class="html">下面是日志的样子 55.3.244.1 GET /index.html 15824 0.043 正则的例子 %{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration} 配置文件里是怎么写得? input { file { path => “/var/log/http.log” } } filter { grok { match => [ "message", "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" ] } } 解析后,是个什么样子? client: 55.3.244.1 method: GET request: /index.html bytes: 15824 duration: 0.043 /*********1 zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat log01.conf input { file { path => "/var/log/http.log" } } output { stdout { codec=>rubydebug{} } } 此时的输出 Pipeline main started { "message" => "55.3.244.1 GET /index.html 15824 0.043", "@version" => "1", "@timestamp" => "2016-08-27T15:03:23.554Z", "path" => "/var/log/http.log", "host" => "0.0.0.0" } /***换成json呢? zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f log01.conf Settings: Default pipeline workers: 1 Pipeline main started {"message":"55.3.244.1 GET /index.html 15824 0.043","@version":"1","@timestamp":"2016-08-27T15:05:07.945Z","path":"/var/log/http.log","host":"0.0.0.0"} /***分别发送到elasticsearch看下: zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat log01.conf input { file { path => "/var/log/http.log" } } output { elasticsearch { hosts => "192.168.32.80:9200" index => "logstash-zjzc-test" } stdout { codec => rubydebug } } 输出: Settings: Default pipeline workers: 1 Pipeline main started { "message" => "55.3.244.1 GET /index.html 15824 0.043", "@version" => "1", "@timestamp" => "2016-08-27T15:08:00.336Z", "path" => "/var/log/http.log", "host" => "0.0.0.0" } elasticsearch: { "_index": "logstash-zjzc-test", "_type": "logs", "_id": "AVbMiuMLEY-onx06xWo-", "_version": 1, "_score": 1, "_source": { "message": "55.3.244.1 GET /index.html 15824 0.043", "@version": "1", "@timestamp": "2016-08-27T15:08:00.336Z", "path": "/var/log/http.log", "host": "0.0.0.0" } } /*******使用grok 正则解析日志 zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat log01.conf input { file { path => "/var/log/http.log" } } filter { grok { match => [ "message", "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" ] } } output { elasticsearch { hosts => "192.168.32.80:9200" index => "logstash-zjzc-test" } stdout { codec => rubydebug } } 输出: zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f log01.conf Settings: Default pipeline workers: 1 Pipeline main started { "message" => "55.3.244.1 GET /index.html 15824 0.043", "@version" => "1", "@timestamp" => "2016-08-27T15:09:59.173Z", "path" => "/var/log/http.log", "host" => "0.0.0.0", "client" => "55.3.244.1", "method" => "GET", "request" => "/index.html", "bytes" => "15824", "duration" => "0.043" } elasticsearch: { "_index": "logstash-zjzc-test", "_type": "logs", "_id": "AVbMjLJeEY-onx06xWpC", "_version": 1, "_score": 1, "_source": { "message": "55.3.244.1 GET /index.html 15824 0.043", "@version": "1", "@timestamp": "2016-08-27T15:09:59.173Z", "path": "/var/log/http.log", "host": "0.0.0.0", "client": "55.3.244.1", "method": "GET", "request": "/index.html", "bytes": "15824", "duration": "0.043" } }