我可以使用grok表达式来仅包含内部ID和主机名吗?

时间:2019-08-07 11:14:01

标签: logstash-grok 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应该获取InternalIdHostname

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

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

1 个答案:

答案 0 :(得分:1)

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

这是grok表达式,可提供确切的输出。