作者:糖果

【前记】
用Resty.Logger给SyslogNG推送了几个测试的数据字段,如下:

192.168.0.1 68.180.228.95 GET /feed Jun 28 16:12:19

中间用空格区分,下面是grok的测试,经测式这些模式的测试数据都能正常解析。

【正文】

ruby grokdebug.rb -m '192.168.0.1 68.180.228.95 GET /feed Jun 28 16:12:19' -p '%{IP:server_ip} %{IP:client_ip} %{WORD:http_verb} %{PATH:baseurl} %{MONTH:month} %{MONTHDAY:day} %{TIME:time}'

被正常分析出来的JSON,如下:

{
  "server_ip": [
    "139.129.93.234"
  ],
  "IPV6": [
    null,
    null
  ],
  "IPV4": [
    "139.129.93.234",
    "68.180.228.95"
  ],
  "client_ip": [
    "68.180.228.95"
  ],
  "http_verb": [
    "GET"
  ],
  "baseurl": [
    "/feed"
  ],
  "UNIXPATH": [
    "/feed"
  ],
  "WINPATH": [
    null
  ],
  "month": [
    "Jun"
  ],
  "day": [
    "28"
  ],
  "time": [
    "16:12:19"
  ],
  "HOUR": [
    "16"
  ],
  "MINUTE": [
    "12"
  ],
  "SECOND": [
    "19"
  ]
}

【后记】
放到ES里,就可以直接用Django REST创建接口了,给外部使用。原理和使用的过程都是一样的,接口怎么实现,看具体业务复杂情况。

搭建grok的debugger环境,参考这篇:

更多的问题,直接参考StackOverflow上的问题: