用Logstash解析OpenResty的Resty.Logger推送的Syslog数据
作者:糖果
【前记】
用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创建接口了,给外部使用。原理和使用的过程都是一样的,接口怎么实现,看具体业务复杂情况。