Filter 日志存储和Windows 2008 DNS调试日志

Filter 日志存储和Windows 2008 DNS调试日志,filter,logstash,grok,logstash-grok,Filter,Logstash,Grok,Logstash Grok,我正在通过json将Windows DNS调试日志发送到Elasticsearch,我需要解析它们。 与微软一样,没有什么是容易的。DNS调试日志不是CSV。该文件中唯一有用的东西是它有固定长度的列 以下是DNS日志的示例: 11/21/2014 5:59:13 PM 0458数据包000000000 39ED750 UDP Rcv 192.168.1.98 600c Q[0001 D NOERROR]A(9)grokdebug(9)herokuapp(3)com(0) 2014年11月21日下

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

以下是DNS日志的示例:
11/21/2014 5:59:13 PM 0458数据包000000000 39ED750 UDP Rcv 192.168.1.98 600c Q[0001 D NOERROR]A(9)grokdebug(9)herokuapp(3)com(0)
2014年11月21日下午5:59:13 0458数据包000000000 39EF460 UDP Snd 192.168.1.1 e044 Q[0001 D NOERROR]A(9)grokdebug(9)herokuapp(3)com(0)
2014年11月21日下午5:59:13 0458数据包000000000 39F85B0 UDP Rcv 192.168.1.1 e044 R Q[8081 DR NOERROR]A(9)grokdebug(9)herokuapp(3)com(0)
2014年11月21日下午5:59:13 0458数据包000000000 39F85B0 UDP Snd 192.168.1.98 600c R Q[8081 NOERROR博士]A(9)grokdebug(9)herokuapp(3)com(0)

我看到了这个答案: 试图设置一个grok过滤器来解析列,但对我来说不起作用。 我知道我有一个语法问题,但我似乎找不到一个好的例子来指导我正确的方向

这是我的grok过滤器:
grok{
match=>[“message”,(?{21})(?{5})(?{8})(?{19})(?{4})(?{4})(?{16})(?{4})(?{5})(?{7})(?{3})(?{9})(?{2})(?{5})(?{255}]
}


有人能帮忙吗?

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

(?<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}
(?%{DATE\u US}%{TIME}(?:AM | PM))\s+%{NUMBER}\s+%{WORD:dns\u type}\s+
%{BASE16NUM}\s+%{WORD:dns_protocol}\s+%{WORD:dns_direction}\s+%{IP:dns_IP}\s+
%{BASE16NUM}\s+%{WORD:dns\u query\u type}\s+\[%{BASE16NUM}\s+%{WORD}\s+
%{WORD:dns\u result}\]\s+%{WORD:dns\u record}\s+%{greedyddata:dns\u domain}

也就是说,因为我不知道日志文件中的每一列意味着什么,所以这里使用的一些模式可能太草率或太严格。我插入了换行符以使答案更具可读性,但请确保在将其插入配置文件时正确地连接起来。

感谢您的回答-这确实对我有所帮助。这是为我工作的正确的过滤器,这是为我工作的正确的过滤器。这是为我工作的正确的过滤器。我正在为我工作的对我工作的对我工作的对我工作的对我工作的对我工作的对我工作的正确的过滤器:匹配=>>>>[消息::::::::::::::::::{日期{日期{{美国美国日日约约约约约约约美国:::::::::::::{日日日日日日日日日日日美国纽约纽约纽约纽约纽约州州州州州州州州))))美国:::::::::::::::::::::::{{{{{时间::::::::::::::::::::::::::::::::::{下午下午下午下午下午下午下午下午下午下午下午下午下午下午)下午下午Q))%{SPACE}[%{NUMBER:dns_flags_hex}%{SPACE}%{WORD:dns_flags_chars}%{SPACE}%{WORD:dns_response_code}]%{SPACE}%{WORD:dns_question_type}%{SPACE}%{greeddata:dns_question_name}]也供您参考-下面您可以从调试文件中找到DNS字段的简要说明:字段信息值--------------------1日期2时间3线程ID 4上下文5内部数据包标识符6 UDP/TCP指示符7发送/接收指示符8远程IP 9 Xid(十六进制)10查询/响应R=响应空白=查询11操作码Q=标准查询N=通知U=更新?=未知12[标志(十六进制)13标志(字符代码)A=权威答案T=截断响应D=递归所需R=递归可用14响应码]15问题类型16问题名称感谢这篇文章--我正在处理相同的问题。你在Windows上使用什么作为日志存储转发器?我只知道如何使用Linux日志存储转发器。你如何将DNS日志转发到日志存储?我使用nxlog。()非常好。对端点资源的影响很小。您甚至可以在端点上设置筛选器,使其不将所有内容发送到中央服务器。