我需要帮助从我的siem获取日志事件,并将它们处理成csv文件,该文件可以接收到hadoop中进行进一步处理。以下是siem的样本和预期结果。我在用python工作,但我没有我需要的经验。
Apr 22 11:52:28 siem <159>Apr 22 11:55:26 10.1.1.10 LEEF:1.0|Websense|Security|7.7.3|transaction:permitted|sev=1 cat=9 usrName=LDAP://10.10.10.10 OU=Standard Users,OU=Users,OU=Frostbyte Falls,OU=Frostbyte - QSD,OU=CDG,OU=North America,DC=Global,DC=bullwinke,DC=com/Mr. Moose src=10.1.10.10 srcPort=62133 srcBytes=233 dstBytes=39469 dst=165.254.42.233 dstPort=80 proxyStatus-code=200 serverStatus-code=304 duration=0 method=GET disposition=1048 contentType=application/zip reason=- policy=role-8**US Frostbyte role=8 userAgent=IPM url=http://acroipm.adobe.com/10/rdr/ENU/win/nooem/none/message.zip
配置单元列定义:日期时间日志源用户srcip srcport dstip dstport方法负载
csv格式:
Apr 22, 11:55:26, 10.1.1.10, Mr. Moose, 10.1.10.10, 62133, 165.254.42.233, 80, GET, url=http://acroipm.adobe.com/10/rdr/ENU/win/nooem/none/message.zip
思想?
当做
2条答案
按热度按时间inn6fuwd1#
首先:您应该选择一个更好的序列化输出,因为在这种情况下,字符串处理非常危险,也没有您希望的那么有效。
不过,我为您的问题做了一些regex捕获,这些都是列表,但是我猜,从这里,您可以决定如何访问,以及您希望访问什么样的字符串数据,并且您可以一直这样做
','.join(<list here>)
在列表末尾用逗号连接项目。。但正如我上面提到的,我不建议您使用此解决方案,您应该以不同于源代码的方式捕获此数据。。
htzpubme2#
我同意peter varo的观点,如果可能的话,你可能想使用更好的格式。但是如果你必须分析其他东西产生的数据… 好吧,你必须解析它。
如果您想用regex来完成,我强烈建议您要么匹配整行,要么逐行解析,而不是收集所有日期,然后收集所有时间,等等。例如:
但是,您的日志格式似乎是一种定义良好的格式,一种格式塞进另一种格式,另一种格式塞进另一种格式。换句话说,您有一个典型的syslog格式
TIMESTAMP SOURCE <PID>MESSAGE
,然后MESSAGE
中间有一个ldap url,以此类推。其中至少有一些是众所周知的正则表达式(或其他解析器),那么为什么要从头开始编写它们呢?