【问题标题】:Grok pattern for BIND9 logBIND9 日志的 Grok 模式
【发布时间】:2018-02-17 23:12:02
【问题描述】:

我需要为bind9 DNS 日志编写一个 grok 过滤器。示例日志如下所示:

17-Feb-2018 23:06:56.326 queries: info: client @0x563d72c3ea20 172.26.0.1#34564 (test.example.com): query: test.example.com IN A +E(0)K (172.26.0.3)

我在grokconstructor 上验证了以下模式,它成功匹配了上面的日志:

filter {
    grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:logdate} queries: info: client @0x.{16} %{IP:source_ip}#(?<source_port>[0-9]+) \(%{HOSTNAME:query}\): query: .*$" }
    }
    date {
        match => ["logdate", "dd-MMM-yyyy HH:mm:ss.SSS"]
    }
}

但是在 Kibana 上,我的日志被标记为 _grokparsefailure 并且未被解析。

【问题讨论】:

标签: logstash logstash-grok bind9


【解决方案1】:

正如@baudsp 所建议的,您需要为 BIND9 日志创建自定义模式。为此,您首先需要了解每个字段的实际含义,

查询日志条目首先在@0x 中报告一个客户端对象标识符 格式。接下来,它会报告客户端的 IP 地址和端口号,以及 查询名称、类和类型。接下来,它报告是否递归 如果查询已签名,则设置了所需的标志(+ 如果设置,- 如果未设置) (S),EDNS 与 EDNS 版本号 (E(#)) 一起使用,如果 使用 TCP (T),如果设置了 DO(DNSSEC Ok) (D),如果 CD(检查 Disabled) 已设置 (C),如果收到有效的 DNS 服务器 COOKIE (V), 或者如果存在没有有效服务器 COOKIE 的 DNS COOKIE 选项 (K)。在此之后,查询发送到的目标地址是 报道。注意:这反映了 BIND 9.11.0 的行为。

所以对于您的 BIND9 查询日志,

17-Feb-2018 23:06:56.326 queries: info: client @0x563d72c3ea20 172.26.0.1#34564 (test.example.com): query: test.example.com IN A +E(0)K (172.26.0.3)

模式是,

%{MONTHDAY:day}[-]%{MONTH}[-]%{YEAR}\s*%{TIME}\s*%{WORD:queries}[:]\s*%{WORD:info}[:]\s*%{WORD:client}\s*%{DATA:client_data}\s*%{IP:client_ip}[#]%{NUMBER:client_port}\s*\(%{HOSTNAME}\)[:]\s*query:\s*%{HOSTNAME:query_value}\s*%{WORD}\s*%{WORD:record_type}\s*%{NOTSPACE:misc}\s*\(%{IP:destination}\)

这将生成以下输出,

{
  "day": [
    [
      "27"
    ]
  ],
  "MONTH": [
    [
      "Feb"
    ]
  ],
  "YEAR": [
    [
      "2018"
    ]
  ],
  "TIME": [
    [
      "23:06:56.326"
    ]
  ],
  "HOUR": [
    [
      "23"
    ]
  ],
  "MINUTE": [
    [
      "06"
    ]
  ],
  "SECOND": [
    [
      "56.326"
    ]
  ],
  "queries": [
    [
      "queries"
    ]
  ],
  "info": [
    [
      "info"
    ]
  ],
  "client": [
    [
      "client"
    ]
  ],
  "client_data": [
    [
      "@0x563d72c3ea20"
    ]
  ],
  "client_ip": [
    [
      "172.26.0.1"
    ]
  ],
  "IPV6": [
    [
      null,
      null
    ]
  ],
  "IPV4": [
    [
      "172.26.0.1",
      "172.26.0.3"
    ]
  ],
  "client_port": [
    [
      "34564"
    ]
  ],
  "BASE10NUM": [
    [
      "34564"
    ]
  ],
  "HOSTNAME": [
    [
      "test.example.com"
    ]
  ],
  "query_value": [
    [
      "test.example.com"
    ]
  ],
  "WORD": [
    [
      "IN"
    ]
  ],
  "record_type": [
    [
      "A"
    ]
  ],
  "misc": [
    [
      "+E(0)K"
    ]
  ],
  "destination": [
    [
      "172.26.0.3"
    ]
  ]
}

【讨论】:

    猜你喜欢
    • 2019-01-21
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多