Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql日志的Logstash Grok模式_Logstash_Logstash Grok - Fatal编程技术网

mysql日志的Logstash Grok模式

mysql日志的Logstash Grok模式,logstash,logstash-grok,Logstash,Logstash Grok,这是我正在分析的示例日志模式。我正在使用grok,但它和我预期的不完全一样 180528 8:46:26 2 Query SELECT 1 要解析此日志,我的grok模式是 %{NUMBER:date} %{NOTSPACE:time}%{INT:pid}%{GREEDYDATA:message} 此in-grok调试器的输出为 > { "date": [ > [ > "180528" > ] ], "time": [ >

这是我正在分析的示例日志模式。我正在使用grok,但它和我预期的不完全一样

180528 8:46:26 2 Query  SELECT 1
要解析此日志,我的grok模式是

%{NUMBER:date} %{NOTSPACE:time}%{INT:pid}%{GREEDYDATA:message}
此in-grok调试器的输出为

> {   "date": [
>     [
>       "180528"
>     ]   ],   "time": [
>     [
>       "8:46:2"
>     ]   ],   "pid": [
>     [
>       "6"
>     ]   ],   "message": [
>     [
>       " 2 Query\tSELECT 1"
>     ]   ] }

如果您在输出中观察,pid将从时间中提取,而实际pid为2将合并到消息中。不确定这里出了什么问题。

为什么你不能用
时间
模式来匹配你的时间呢?将其与等于
\S+
NOTSPACE
匹配,并与任何非空白字符(等于
[^\r\n\t\f\v]
)匹配是没有意义的

您可以对时间值使用
TIME
模式,对
pid
使用
INT
模式,如下所示:

%{NUMBER:date}\s%{TIME:time}\s%{INT:pid}\s%{GREEDYDATA:message}
这会给你

{
  "date": [
    [
      "180528"
    ]
  ],
  "BASE10NUM": [
    [
      "180528"
    ]
  ],
  "time": [
    [
      "8:46:26"
    ]
  ],
  "HOUR": [
    [
      "8"
    ]
  ],
  "MINUTE": [
    [
      "46"
    ]
  ],
  "SECOND": [
    [
      "26"
    ]
  ],
  "pid": [
    [
      "2"
    ]
  ],
  "message": [
    [
      "Query  SELECT 1"
    ]
  ]
}

成功了。非常感谢。我以前也用过时间,但错过了/s。