elasticsearch ELK堆栈中Django的正确Grok解析器?,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack" /> elasticsearch ELK堆栈中Django的正确Grok解析器?,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack" />

elasticsearch ELK堆栈中Django的正确Grok解析器?

elasticsearch ELK堆栈中Django的正确Grok解析器?,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack,我正在尝试使用ELK堆栈记录我的应用程序。除了logstash中的日志过滤器外,一切都运行良好。我似乎无法让grok成功解析 我的当前设置: if [type] == "djangolog" { multiline { pattern => "^[^\[]" what => "previous" } grok { match => { "message" => "\[%{LOGLEVEL:level

我正在尝试使用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模式等待一个单词,这将给您一个
grokparsefailure
错误

使用Kibana中的grok调试器测试示例消息,以下模式将与之匹配

我已经将
%{WORD:module}
更改为
%{INT:module}
,但是您也可以使用
%{DATA:module}
,它将基本上匹配任何字符串,就像我对模式中的
进程
字段所做的那样

\[%{LOGLEVEL:level}\] \[%{TIMESTAMP_ISO8601:timestamp}\] \[%{INT:module}\] \[%{DATA:process}\] - %{GREEDYDATA:logmessage}

这是Kibana中的grok调试器,如果您使用X-pack,甚至是您拥有的免费基本许可证,但如果您没有Kibana和X-pack,您可以使用此网站:,它是相同的实现。