【问题标题】:The correct Grok Parser for Django in ELK stack?ELK 堆栈中 Django 的正确 Grok 解析器?
【发布时间】:2018-07-12 03:40:07
【问题描述】:

我正在尝试将 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

任何指向我做错了什么的指针和参考都会很棒

【问题讨论】:

    标签: elasticsearch logstash kibana elastic-stack


    【解决方案1】:

    您的示例消息中的第三个字段是一个 INT,但您的 grok 模式等待一个 WORD,这会给您一个 grokparsefailure 错误。

    在 Kibana 中使用 grok 调试器测试您的示例消息,以下模式将匹配它。

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

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

    【讨论】:

    • 这是Kibana中的grok调试器,如果你使用X-pack,即使是免费的基本许可证你也有,但如果你没有Kibana with X-pack,你可以使用这个网站:@ 987654322@,是同一个实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    相关资源
    最近更新 更多