2016-03-04 52 views
0

最近我一直面临与多行事件有关的问题,并且我需要一点帮助。我的系统日志服务器正在发送多行事件。一个事件收集多行,并且证明特定事件行的指示符是多行事件的一部分,它是一个定义用户连接会话的随机数。这里是一个自定义生成的日志文件:如何根据随机字段管理多行事件Logstash

Feb 16 17:29:04 slot1/APM-LTM notice apd[5515]: 01490010:5: 1ec2b273:Username 'cjones' 

Feb 16 17:29:04 slot1/APM-LTM warning apd[5515]: 01490106:4: 1ec2b273: AD module: authentication with 'cjones' failed: Preauthentication failed, principal name: [email protected] Invalid user credentials. (-1765328360) 

Feb 16 17:10:04 slot1/APM-LTM notice apd[5515]: 01490010:5: d8b5a591: Username 'gbridget' 

Feb 16 17:10:04 slot1/APM-LTM err apd[5515]: 01490107:3: d8b5a591: AD module: authentication with 'gbridget' failed: Clients credentials have been revoked, principal name: [email protected] User account is locked (-1765328366) 

Feb 16 17:29:04 slot1/APM-LTM notice apd[5515]: 01490005:5: 1ec2b273: Following rule 'fallback' from item 'AD Auth' to ending 'Deny' 

Feb 16 17:29:04 slot1/APM-LTM notice apd[5515]: 01490102:5: 1ec2b273: Access policy result: Logon_Deny 

以上是有关由以下用户会话定义两个不同的连接线:d8b5a591(用户gbridget)和1ec2b273(用户cjones)。用户会话是将这些线路连接到两个不同事件的唯一指标。更不用说线上事件是交织在一起的。

问题是,我不知道如何解释上述与多行插件grok过滤器,知道后者提供的选项太少。事实上,例如“上一行”和“下一行”这一概念不适用于此,因此不能使用grok选项“模式”和“什么”,因为事件不一定是连续的。

我真的很感激,如果有人能够对此作出一些解释并告诉我,至少它是否可行。

+0

也许你可以使用这个:https://www.elastic.co/guide/en/logstash/current/plugins-filters-aggregate.html – jogaco

+0

这实际上是我很久以前使用的:)而且它工作得很好。无论如何感谢您的回答。 – jpry

回答

0

我没有看到那些多线事件,而是相关事件。我会将它们加载到elasticsearch中作为6个不同的文档,然后根据需要进行查询。如果您针对此数据尝试执行特定查询,则可能会询问有关如何针对多个文档执行这些查询的问题。

另一种方法是使用session_id作为文档ID,然后在新信息进入时更新初始文档。他们不建议使用自己的文档ID(出于性能原因IIRC)以及更新一份文件涉及到删除旧文件并插入新文件,这对性能也不利。

+0

实际上,我想将与特定连接相关的行集中到一个单一事件中,因此只有一个文档,以便我可以查询单个文档以获取有关相关事件的所有需要​​。 – jpry

+0

上述事件作为6个不同的文件加载到当前配置中。但是,愿意做什么似乎是不可能查询的。实际上,我想获取与单个事件相关的信息;用户名,客户端IP等......为此,必须查询几个文档,但到目前为止,我无法使用会话ID来关联这些文档,因为它是一个无法预先知道的随机字段,并且没有关联它们,elasticsearch无法取得正确的领域。类似于连接的事情也已经完成,ES似乎无法执行。 – jpry

+0

这将是这样的:https://logstash.jira.com/browse/LOGSTASH-1785,而不是处理连续的多行事件,将处理彼此之间的事件。 – jpry

相关问题