Grok过滤器字符串模式

问题描述 投票:0回答:1

我是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过滤我的消息..

非常感谢

logstash-grok graylog2
1个回答
0
投票

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

SERVER_TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%
{MINUTE}(?::?%{SECOND})?[T ]%{INT}[T ]%{ISO8601_TIMEZONE}?
SERVER_HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
SERVER_Unknown  %{SERVER_HOSTNAME}[/]%{SERVER_HOSTNAME}
SERVER_Loglevel ([Aa]lert|ALERT|[Tt]race|TRACE|[Dd]ebug|DEBUG|[Nn]otice|NOTICE|[Ii]nfo|INFO|[Ww]arn?(?:ing)?|WARN?(?:ING)?|[Ee]rr?(?:or)?|ERR?(?:OR)?|[Cc]rit?(?:ical)?|CRIT?(?:ICAL)?|[Ff]atal|FATAL|[Ss]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)

SYSLOGBASE_SERVER %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:[T ]%{SERVER_TIMESTAMP_ISO8601: timestamp_match}[T ]-[T ]%{SERVER_HOSTNAME:SERVER_host_node}[T ]-[T ]%{SERVER_Unknown:SERVER_Unknown}[T ]-[T ]%{SERVER_Unknown:service_component}[T ]-[T ]%{SERVER_HOSTNAME:process_code_id}[T ]-[T ]%{SERVER_Loglevel}[T ]-[T ]%{GREEDYDATA:syslog_message}

来自GROK的所有其余或正则表达式。

非常感谢

© www.soinside.com 2019 - 2024. All rights reserved.