使用grok解析activedirectory日志的速度很慢(代码片段)

author author     2023-05-12     321

关键词:

我是grok的新手。我试图使用grok解析器解析Microsoft active directory logs。我正在使用java grok库。

日志看起来像

<13> 10.200.3.7  10.20.211.15 07/04/2017 15:34:00 PM SERVER01 07/04/2017 15:34:00 PM  LogName=Security  SourceName=Microsoft Windows security auditing.  EventCode=4624  EventType=0  Type=Information  ComputerName=SERVER01.network.local  TaskCategory=Logon  OpCode=Info  RecordNumber=1809490942  Keywords=Audit Success  Message=An account was successfully logged on.      Subject:     Security ID:        S-1-0-0     Account Name:       User-330    Account Domain:     -       Logon ID:       0x0      Logon Type:            3      New Logon:       Security ID:        S-1-5-18    Account Name:       SERVER01$       Account Domain:     DOMAIN      Logon ID:       0x12393ab39     Logon GUID:     C893D0A2-6498-BBE3-560D-0A1088FA4D9E      Process Information:      Process ID:     0x0     Process Name:       -      Network Information:     Workstation Name:       Source Network Address: 1.68.4.213      Source Port:        57261      Detailed Authentication Information:     Logon Process:      Kerberos    Authentication Package: Kerberos    Transited Services: -       Package Name (NTLM only):   -       Key Length:     0      This event is generated when a logon session is created. It is generated on the computer that was accessed.      The subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.      The logon type field indicates the kind of logon that occurred. The most common types are 2 (interactive) and 3 (network).      The New Logon fields indicate the account for whom the new logon was created, i.e. the account that was logged on.      The network fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.      The authentication information fields provide detailed information about this specific logon request.      - Logon GUID is a unique identifier that can be used to correlate this event with a KDC event.      - Transited services indicate which intermediate services have participated in this logon request.      - Package name
<13> 10.200.3.7  10.20.211.15 07/04/2017 15:34:00 PM SERVER01 07/04/2017 15:34:00 PM  LogName=Security  SourceName=Microsoft Windows security auditing.  EventCode=4624  EventType=0  Type=Information  ComputerName=SERVER01.network.local  TaskCategory=Logon  OpCode=Info  RecordNumber=1809490942  Keywords=Audit Success  Message=An account was successfully logged on.      Subject:     Security ID:        S-1-0-0     Account Name:       User-331    Account Domain:     -       Logon ID:       0x0      Logon Type:            3      New Logon:       Security ID:        S-1-5-18    Account Name:       SERVER01$       Account Domain:     DOMAIN      Logon ID:       0x12393ab39     Logon GUID:     C893D0A2-6498-BBE3-560D-0A1088FA4D9E      Process Information:      Process ID:     0x0     Process Name:       -      Network Information:     Workstation Name:       Source Network Address: 1.68.4.214      Source Port:        57261      Detailed Authentication Information:     Logon Process:      Kerberos    Authentication Package: Kerberos    Transited Services: -       Package Name (NTLM only):   -       Key Length:     0      This event is generated when a logon session is created. It is generated on the computer that was accessed.      The subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.      The logon type field indicates the kind of logon that occurred. The most common types are 2 (interactive) and 3 (network).      The New Logon fields indicate the account for whom the new logon was created, i.e. the account that was logged on.      The network fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.      The authentication information fields provide detailed information about this specific logon request.      - Logon GUID is a unique identifier that can be used to correlate this event with a KDC event.      - Transited services indicate which intermediate services have participated in this logon request.      - Package name

我的格鲁克模式是

<%USER:hField1> %IPV4:hIp1  %IPV4:hIp2 %DATESTAMP_12HOUR:hTime1;date;dd/MM/yyyy hh:mm:ss a %USER:hField2 %DATESTAMP_12HOUR:hTime2;date;dd/MM/yyyy hh:mm:ss a  LogName=%USER:logname%SPACESourceName=%GREEDYDATA:sourceName%SPACEEventCode=%GREEDYDATA:eventCode%SPACEEventType=%GREEDYDATA:eventType%SPACEType=%GREEDYDATA:typeField%SPACE ComputerName=%GREEDYDATA:computerName%SPACETaskCategory=%GREEDYDATA:taskCategory%SPACEOpCode=%GREEDYDATA:opCode%SPACERecordNumber=%GREEDYDATA:recordNumber%SPACEKeywords=%GREEDYDATA:keywords%SPACEMessage=%NON_DOT_DELIMITER:message.%SPACE%GREEDYDATA:jsonData

问题是,与我的自定义java解析器相比,它非常慢。我的自定义java解析器需要2.5秒来解析50K记录,而使用grok模式解析对于相同的数据需要60秒。

我的解析器有问题吗?

答案

与任何正则表达式一样,当你的正则表达式解释器不得不猜测时,你将获得加速。因此,当您在grok模式周围使用锚点^(行首)和$(行尾)时,您可能会获得很好的收益。

另一答案

您的自定义Java解析器是否使用Java正则表达式?请查看您的grok库github项目中打开here的问题。似乎正在发生一些变化。

logstash:日志解析的grok模式示例(代码片段)

...清晰的字段和值。最流行的日志解析语言是Grok。你可以使用Grok插件在各种日志管理和分析工具中解析日志数据。在这里查看我的Grok教程“Logstash:Grokfilter入门”。但是用Grok解析日志可能会很棘手。本博客将研究一些Grok模... 查看详情

logstash:日志解析的grok模式示例(代码片段)

...清晰的字段和值。最流行的日志解析语言是Grok。你可以使用Grok插件在各种日志管理和分析工具比如ElasticStack中解析日志数据。 在这里查看我之前的的G 查看详情

使用 Grok for Logstash 解析 Apache2 错误日志

】使用GrokforLogstash解析Apache2错误日志【英文标题】:ParseApache2ErrorlogswithGrokforLogstash【发布时间】:2013-06-2406:32:12【问题描述】:我正在尝试解析我的apache2错误日志,但遇到了一些麻烦。它似乎与过滤器不匹配。我很确定时间戳... 查看详情

logstash grok,用 json 过滤器解析一行

...filter【发布时间】:2018-04-2002:54:52【问题描述】:我正在使用ELK(弹性搜索、kibana、logstash、filebeat)来收集日志。我有一个包含以下几行的日志文件,每一行都有一个json,我的目标是使用LogstashGrok取出json中的键/值对并将其转... 查看详情

Logstash 应该只记录 grok 解析的消息

】Logstash应该只记录grok解析的消息【英文标题】:Logstashshouldlogonlygrokparsedmessages【发布时间】:2017-01-1609:54:07【问题描述】:目前我有一个ELK堆栈,其中的日志由filebeat传送,在logstash中的一些过滤器之后,它被转发到ES。由于有... 查看详情

grok 解析多行,例如异常堆栈跟踪

】grok解析多行,例如异常堆栈跟踪【英文标题】:grokparsemultiplelines,forexampleexceptionstacktrace【发布时间】:2018-05-2406:25:06【问题描述】:我的日志文件中有多种(三种)类型的日志。其中一种类型有一些自己的打印+异常堆栈跟踪... 查看详情

logstash笔记-----grok插件的正则表达式来解析日志

(一)简介:   丰富的过滤器插件的存在是logstash威力如此强大的重要因素。名为过滤器,其实提供的不单单是过滤的功能,它们扩展了进入过滤器的原始数据,进行复杂的逻辑处理,甚至可以无中生有的添加新的logs... 查看详情

grok 解析数据的重复字段值

】grok解析数据的重复字段值【英文标题】:Duplicatefieldvaluesforgrok-parseddata【发布时间】:2018-11-0210:50:49【问题描述】:我有一个从docker中运行的uwsgi应用程序捕获日志的filebeat。数据被发送到logstash,它解析它并转发到elasticsearch... 查看详情

需要使用 grok 从日志中排除几个词

】需要使用grok从日志中排除几个词【英文标题】:Needtoexcludefewwordsfromlogsusinggrok【发布时间】:2022-01-0420:39:55【问题描述】:考虑下面的字符串date00:001.1.1.1POSTtest.comhello-world如何使用grok仅打印日期总时间和URL(test.com)?【问题讨... 查看详情

Logstash Grok 解析器

】LogstashGrok解析器【英文标题】:LogstashGrokparser【发布时间】:2015-12-0217:10:00【问题描述】:我是log-stash和grok的新手,我需要解析非常自定义的日志文件。我在任何地方都找不到一个很好的教程来完成这项工作。尝试了syslog示... 查看详情

logstash:grok模式示例(代码片段)

...据,例如纯文本日志。在这些情况下,我们需要使用LogstashGrok或其他第三方服务解析数据以使其成为结构化数据。本教程将通过使用LogstashGrok进行解析,帮助你利用Elasticsearch的分析和查询功能。因此,让我们深入... 查看详情

logstash:grok模式示例(代码片段)

...据,例如纯文本日志。在这些情况下,我们需要使用LogstashGrok或其他第三方服务解析数据以使其成为结构化数据。本教程将通过使用LogstashGrok进行解析, 查看详情

logstash / grok 模式文件

...rnfile【发布时间】:2015-09-2902:24:38【问题描述】:我正在解析IIS日志,当所有模式都在配置文件中时,我一切正常。我想取出所有模式并将它们放在一个模式文件中,但似乎无法让它工作。我有什么:日志示例:2015-09-0816:02:23获... 查看详情

使用 java grok 模式从 syslog 消息中提取详细信息

】使用javagrok模式从syslog消息中提取详细信息【英文标题】:Extractdetailsfromsyslogmessagewithjavagrokpatterns【发布时间】:2015-09-2118:46:43【问题描述】:我正在开发一个Java项目来解析我使用JavaGrok库进行模式识别的日志。我给出的模式... 查看详情

Logstash - grok 使用消息以外的字段

】Logstash-grok使用消息以外的字段【英文标题】:Logstash-grokuseafieldotherthanmessage【发布时间】:2014-09-1505:55:01【问题描述】:我正在使用Logstash转发器从远程服务器接收Log4j生成的日志文件。日志事件的字段包括一个名为“文件”... 查看详情

使用logstashfiltergrok过滤日志文件(代码片段)

...插件查看这里。下面我们主要讲grok切分。Grok基本介绍Grok使用文本片段切分的方式来切分日志事件,语法如下:%SYNTAX:SEMAN 查看详情

elasticsearch-logstash-kibana(三)配置优化

...Bytes,然后UpdateField验证在生产环境中,nginx日志格式往往使用的是自定义的格式,我们需要把logstash中的message结构化后再存储,方便kibana的搜索和统计,因此需要对message进行解析。本文采用grok过滤器,使用match正则表达式解析... 查看详情

Grok 用于日志文件 Logstash

】Grok用于日志文件Logstash【英文标题】:GrokforlogfilesLogstash【发布时间】:2020-04-2212:03:00【问题描述】:我需要编写一个grok模式来检索“****”中的内容-----Startofscriptforserversitboap1at**FriApr1714:24:19**HKT2020---------**user11**8775110Apr16?00:00... 查看详情