首页 > 解决方案 > Grok 自定义模式 - 如何匹配特定域格式

问题描述

我需要从下面的日志中匹配这部分*.server.domain.com*并分配给域变量。知道模式应该是什么样子,默认HOSTNAME模式对我不起作用。

Apr  4 10:46:25 10.42.203.245 ThreatInsightAnalytics[29407]: The CNAME record '*.server.domain.com' is successfully added into BlackList RPZ zone(s) with comment '[2018-04-04 10:46:22 UTC] [member: infoblox.localdomain] DNS Tunneling' and policy 'No Such Domain'.

标签: logstashlogstash-grok

解决方案


您可以使用 Oniguruma 语法在预定义的 grok 模式中添加 anasterisk和 a并创建自定义模式,如下所示,.HOSTNAME

(?<domain_name>\*\.)%{HOSTNAME}

或者

(?<domain_name>\*\.\b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b))

这将在您的日志中产生以下输出,

{
  "domain_name": [
    [
      "*.server.domain.com"
    ]
  ]
}

希望能帮助到你


推荐阅读