首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于格式化Rsyslog日志以使用Arcsight模板的RegEx

用于格式化Rsyslog日志以使用Arcsight模板的RegEx
EN

Stack Overflow用户
提问于 2019-05-09 10:10:44
回答 2查看 951关注 0票数 0

我一直在尝试删除要由arcsight连接器读取的空格或字符。我曾尝试将模板与regex表达式一起使用,但没有成功-问题是arcsight会解析一个字段中的所有内容,因为它不能识别CEF格式

我已经使用了两个模块omfwd和omfile,在这两个模块上都没有工作

OMFWD原始日志示例

代码语言:javascript
复制
 CEF:0|Symantec|Messaging Gateway||ASA|CEF: 0\|CISCO\|ASA\|\|305011\|Built dynamic TCP translation\|Low\| eventId=41069435 proto=TCP

OMFILE原始日志示例

代码语言:javascript
复制
2019-05-08T20:55:04.913701+00:00  CEF: 0|CISCO|ASA||302013|Built outbound TCP connection|Low| eventId=17363056 externalId=116395008 proto=TCP 

我想这样设置消息的格式

CEF:0|思科|ASA||302013|已建立出站TCP连接|Low| eventId=17363056 externalId=116395008 proto=TCP

没有空格或其他任何东西

下面是我们尝试使用的模板:

代码语言:javascript
复制
$template outfmt,"%msg:R,ERE,1:(.*) CEF: --end% CEF: %msg:R,ERE,1: CEF: (.*)--end%\n"


$template outfmt,"%msg:R,ERE,1,\?(.*)\sCEF\:\s\?(.*)--end% CEF: %msg:R,ERE,1,\?(.*)CEF\:\?(.*)--end%\n"

在rsyslog网站上,任何可以帮助解决这个问题的人的文档都是很差的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-09 11:40:38

如果您希望设计一个表达式来删除不需要的空格,this expression可能会给您一个想法。

代码语言:javascript
复制
^(.+)([A-Z]{3}:)(\s+)([A-Z0-9|=]+)(.*\S\s*?)

如果你愿意,你可以简化它或者给它添加更多的边界。

我假设你的输入字符串中有一些额外的不需要的空格。我只看到了两个不需要的空格实例,一个在$3组中,另一些在末尾,我使用groups ()捕获了它们,您可以像这样简单地删除这些空格。如果可能有更多的空间,您可以在任何可能存在额外空间的地方添加这些捕获组。

我的边界是宽松的,比如([A-Z0-9|=]+),它只是简单地滑动一些字母和数字,而没有逻辑。我这样做是因为我不知道您的实例可能是什么样子的。如果您愿意,您可以简单地限制它们。

图表

此图显示了表达式的工作方式,您可以在此link中可视化其他表达式:

性能测试

这个JavaScript片段使用一个简单的100万次for循环显示了该表达式的性能。

代码语言:javascript
复制
const repeat = 1000000;
const start = Date.now();

for (var i = repeat; i >= 0; i--) {
	var string = '2019-05-08T20:55:04.913701+00:00   CEF:    0|CISCO|ASA||302013|Built outbound TCP connection|Low| eventId=17363056 externalId=116395008 proto=TCP               ';
	var regex = /^(.+)([A-Z]{3}:)(\s+)([A-Z0-9|=]+)(.*\S\s*?)(.*)/gm;
	var match = string.replace(regex, "$2$4$5");
}

const end = Date.now() - start;
console.log("YAAAY! \"" + match + "\" is a match ??? ");
console.log(end / 1000 + " is the runtime of " + repeat + " times benchmark test. ? ");

票数 0
EN

Stack Overflow用户

发布于 2020-06-29 20:55:17

你不能只使用CEF SYSLOG连接器来裁剪syslog头和进程吗?也许可以将其设置为forwarder。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56051254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档