ELK 堆栈中 Django 的正确 Grok 解析器?
The correct Grok Parser for Django in ELK stack?
我正在尝试将 ELK 堆栈用于我的应用程序日志记录。一切运行良好,除了 logstash 中的日志过滤器。我似乎无法让 grok 成功解析。
我的当前设置:
if [type] == "djangolog" {
multiline {
pattern => "^[^\[]"
what => "previous"
}
grok {
match => { "message" => "\[%{LOGLEVEL:level}\] \[%{TIMESTAMP_ISO8601:timestamp}\] \[%{WORD:module}\] \[%{POSINT:process}\] - %{GREEDYDATA:logmessage}" }
}
date {
match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
}
}
我正在尝试编制索引的示例 Django 日志:
[DEBUG] [2018-07-11 10:16:07,035] [9763] [func.get_func:366] - get func time 0.14696598053
任何指向我做错了什么的指针和参考资料都会很棒
您的示例消息中的第三个字段是一个 INT,但是您的 grok 模式等待一个 WORD,这会给您一个 grokparsefailure
错误。
正在使用 Kibana 中的 grok 调试器测试您的示例消息,以下模式将匹配它。
我已将 %{WORD:module}
更改为 %{INT:module}
,但您也可以使用 %{DATA:module}
,它基本上可以匹配任何字符串,就像我对 process
所做的那样模式中的字段。
\[%{LOGLEVEL:level}\] \[%{TIMESTAMP_ISO8601:timestamp}\] \[%{INT:module}\] \[%{DATA:process}\] - %{GREEDYDATA:logmessage}
我正在尝试将 ELK 堆栈用于我的应用程序日志记录。一切运行良好,除了 logstash 中的日志过滤器。我似乎无法让 grok 成功解析。
我的当前设置:
if [type] == "djangolog" {
multiline {
pattern => "^[^\[]"
what => "previous"
}
grok {
match => { "message" => "\[%{LOGLEVEL:level}\] \[%{TIMESTAMP_ISO8601:timestamp}\] \[%{WORD:module}\] \[%{POSINT:process}\] - %{GREEDYDATA:logmessage}" }
}
date {
match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
}
}
我正在尝试编制索引的示例 Django 日志:
[DEBUG] [2018-07-11 10:16:07,035] [9763] [func.get_func:366] - get func time 0.14696598053
任何指向我做错了什么的指针和参考资料都会很棒
您的示例消息中的第三个字段是一个 INT,但是您的 grok 模式等待一个 WORD,这会给您一个 grokparsefailure
错误。
正在使用 Kibana 中的 grok 调试器测试您的示例消息,以下模式将匹配它。
我已将 %{WORD:module}
更改为 %{INT:module}
,但您也可以使用 %{DATA:module}
,它基本上可以匹配任何字符串,就像我对 process
所做的那样模式中的字段。
\[%{LOGLEVEL:level}\] \[%{TIMESTAMP_ISO8601:timestamp}\] \[%{INT:module}\] \[%{DATA:process}\] - %{GREEDYDATA:logmessage}