糖果实验室杂货铺

Candy Lab

用Logstash解析OpenResty的Resty.Logger推送的Syslog数据

1 year ago 0

作者:糖果

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

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

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

【正文】

1
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,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
  "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上的问题:


糖果实验室

Openresty中文编程网
IKBC经典机械键盘
机械键盘领券优惠购买

Write a Comment