首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logstash和Windows 2008 DNS调试日志

Logstash和Windows 2008 DNS调试日志
EN

Stack Overflow用户
提问于 2014-11-21 17:22:30
回答 1查看 2.2K关注 0票数 2

我正在通过json将Windows调试日志发送到Elasticsearch,我需要解析它们。和微软一样,没有什么是容易的。DNS调试日志不是CSV。该文件中唯一有用的事情是它有固定的列长度。

下面是DNS日志的示例:11/21/2014 5:59:13 PM 0458 PACKET 00000000039ED750 UDP Rcv 192.168.1.98 600c Q [0001 D NOERROR] A (9)grokdebug(9)herokuapp(3)com(0) 11/21/2014 5:59:13 PM 0458 PACKET 00000000039EF460 UDP Snd 192.168.1.1 e044 Q [0001 D NOERROR] A (9)grokdebug(9)herokuapp(3)com(0) 11/21/2014 5:59:13 PM 0458 PACKET 00000000039F85B0 UDP Rcv 192.168.1.1 e044 R Q [8081 DR NOERROR] A (9)grokdebug(9)herokuapp(3)com(0) 11/21/2014 5:59:13 PM 0458 PACKET 00000000039F85B0 UDP Snd 192.168.1.98 600c R Q [8081 DR NOERROR] A (9)grokdebug(9)herokuapp(3)com(0)

我看了这个堆栈溢出的答案:Logstash grok filter help - fixed position file,并试图设置一个grok过滤器来解析这些列,但它对我不起作用。我知道我有一个语法问题,但我似乎找不到一个很好的例子来引导我朝着正确的方向前进。

这是我的grok过滤器:grok { match => [ "message", "(?<dns_date_n_time>.{21}) (?<dns_field_1>.{5}) (?dns_type>.{8}) (?<dns_field_2>.{19}) (?<dns_protocol>.{4}) (?<dns_direction>.{4}) (?<dns_ip>.{16}) (?<dns_field_3>.{4}) (?<dns_query_type>.{5}) (?<dns_field_5>.{7}) (?<dns_field_6>.{3}) (?<dns_flag>.{9}) (?<dns_field_7>.{2}) (?<dns_record>.{5}) (?<dns_domain>.{255})" ] }

有人能帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-22 19:43:05

不要因为日志文件碰巧有固定宽度的格式而挂起电话。从那以后就没什么用了。使用相关的grok模式解析文件,就像解析任何旧日志文件一样。这适用于您提供的输入:

代码语言:javascript
复制
(?<timestamp>%{DATE_US} %{TIME} (?:AM|PM))\s+%{NUMBER}\s+%{WORD:dns_type}\s+
%{BASE16NUM}\s+%{WORD:dns_protocol}\s+%{WORD:dns_direction}\s+%{IP:dns_ip}\s+
%{BASE16NUM}\s+%{WORD:dns_query_type}\s+\[%{BASE16NUM}\s+%{WORD}\s+
%{WORD:dns_result}\]\s+%{WORD:dns_record}\s+%{GREEDYDATA:dns_domain}

尽管如此,由于我不知道日志文件中的每一列意味着什么,所以这里使用的某些模式可能过于草率或过于严格。我插入了换行符,以提高答案的可读性,但当您将其插入配置文件时,请确保连接正确。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27066925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档