Grok过滤器字符串模式

时间:2018-01-03 12:00:08

标签: logstash-grok graylog2

我对Grok很陌生,我需要过滤一行,如下所示:

Dec 20 18:46:00 server-04 script_program.sh[14086]: 2017-12-20 18:46:00 068611 +0100 - server-04.location-2 - 14086/0x00007f093b7fe700 - processname/SIMServer - 00000000173d9b6b - info - work: You have 2 connections running

到目前为止,我只是设法得到以下内容:

SYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:

所以我得到了所有的日期/时间戳详情+程序+过程,这是好的。

但是这留下了以下剩下的字符串:

2017-12-20 18:46:00 068611 +0100 - server-04.location-2 - 14086/0x00007f093b7fe700 - processname/SIMServer - 00000000173d9b6b - info - work: You have 2 connections running

在这里,我正在努力将一切都分解成块。

我尝试过根据连字符( - )拆分的很多组合,但到目前为止我还没有这么做..

到目前为止,我几乎一直在使用以下指南:

https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns

有关此问题的任何帮助/建议/提示吗? 我正在使用graylog2,如上所示,尝试使用GROK过滤我的消息..

非常感谢

1 个答案:

答案 0 :(得分:0)

我设法让我的过滤器完全完成并正常工作。所以解决方案如下:

SELECT 
SUM(
  CASE WHEN z0>0 THEN 1 ELSE 0 END 
  CASE WHEN z1>0 THEN 1 ELSE 0 END 
  CASE WHEN z2>0 THEN 1 ELSE 0 END 
  CASE WHEN z3>0 THEN 1 ELSE 0 END 
  CASE WHEN z4>0 THEN 1 ELSE 0 END 
  CASE WHEN z5>0 THEN 1 ELSE 0 END 
) AS visit1
FROM timetable ;

GROK的所有其余或定期表达。

非常感谢