Regex在多条线上提取多个片段

  • 本文关键字:提取 片段 Regex regex zabbix
  • 更新时间 :
  • 英文 :


我正在为Wazuh制作基本的Zabbix项目。这不是为了取代Wazuh,但我们的技术人员住在Zabbix,这在Zabbix提供了警报,这样技术人员就可以知道一些事情,并可以去Wazuh查看。

问题是Wazuh警报是多线警报,我们需要2条信息。从下面的例子中,我们希望得到:

  • (服务器(
  • (10级(->'短时间内大量POST请求(可能是机器人程序(

我使用以下正则表达式:

([rn].*?)(?:=?r|n)(.*?(?:(level 10.*)).*)

这将在级别10上匹配,然后我可以使用组1来获取主机名(服务器(。但是我无法得到第二部分。我可以为每个级别的规则创建一个项目(例如1-10(,并可以获得主机名。但我无法获得警报本身。我读到我需要为每个虔诚创建单独的物品,但我发现Zabbix并不总是从警报中获取正确的物品。可能警报10是捕获的一个项目,但主机名来自另一个日志条目。

有没有一种方法可以在Zabbix中使用regex在一个项目中捕获所有这些?

谢谢。我感谢你的帮助。

** Alert 1646336311.8104996: - web,appsec,attack,pci_dss_6.5,pci_dss_11.4,gdpr_IV_35.7.d,nist_800_53_SA.11,nist_800_53_SI.4,tsc_CC6.6,tsc_CC7.1,tsc_CC8.1,tsc_CC6.1,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,
2022 Mar 03 19:38:31 (server) any->/var/log/nginx/access.log
Rule: 31533 (level 10) -> 'High amount of POST requests in a small period of time (likely bot).'

如果我理解正确,你可以在预处理中使用Javascript:

value1 = value.replace(/.*1.*/g,'Mobile"')
value2 = value.replace(/.*2.*/g,'Mobile"')
finishvalue = value1.concat(value2);
return(finishvalue)

最新更新