2016-03-04 51 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

相關問題