首页 > 解决方案 > 我可以有一个只有内部 id 和主机名的 grok 表达式吗?

问题描述

您能否为以下要求编写一个 grok 表达式:

我们有 3 种类型的事件,如下所示:

08D7119FBFEC19B7;250 2.6.0 <DM6PR09MB3369DAB34BC8812C1CF1E16181C00@DM6PR09MB3369.namprd09.prod.outlook.com> [InternalId=669077,Hostname=Abcd] Queued mail for delivery
08D7119FBFEC19B7;250 2.6.0 <DM6PR09MB3369DAB34BC8812C1CF1E16181C00@DM6PR09MB3369.namprd09.prod.outlook.com> [InternalId=669077] Queued mail for delivery
08D7119FBFEC19B7;250 2.6.0 <DM6PR09MB3369DAB34BC8812C1CF1E16181C00@DM6PR09MB3369.namprd09.prod.outlook.com> [Hostname=Abcd] Queued mail for delivery

对于上述事件,编写一个满足以下情况的 grok 表达式:

  1. 如果两者都存在, Grok 应该获取InternalId和值Hostname

  2. 如果仅存在,Grok 应该获取该InternalIdInternalId

  3. 如果仅存在,Grok 应该获取该HostnameHostname

标签: logstash-grokgrok

解决方案


((.*[InternalId=%{NUMBER:InternalId}.*Hostname=%{USERNAME:Hostname}])|(.[InternalId=%{NUMBER:InternalId}.)|(.[Hostname=%{USERNAME:Hostname }.))

这是给出准确输出的 grok 表达式。


推荐阅读