检索Kibana

时间:2017-06-26 16:39:09

标签: python django logstash kibana

我从我的Django应用程序登录到Logstash处理程序,如下所示:

logging.log(logging.INFO, 'Account balance', {'account': a.name, 'platform': a.platform, 'currency': currency, 'amount': balance['result']['currency']})

我想汇总并使用Kibana的这些数据。我有很多其他日志格式,并希望能够显示和可视化这些数据,而无需为每种可能性明确编写过滤器。

是否有一种多功能的方式来获得这些“领域”的价值并将其带入Kibana?

1 个答案:

答案 0 :(得分:1)

您可以使用此处提供的Django模式Django logging format for Logstash并添加一些其他信息,查看由您的命令生成的字符串格式的日志。

如果您有三种可能的日志格式,那么grok过滤器将从第一个匹配模式中提取字段。如果任何模式匹配,您可以定义不同的行为,但为此我建议您检查文档。

filter {
 if [type] == "django" {
    grok {
         match => {
           "message" => [
             "%{DJANGO_LOG}",
             "%{DJANGO_LOG} %{GREEDYDATA:extra_1} %{IP:extra_2}",
             "%{DJANGO_LOG} %{GREEDYDATA:extra_1} %{IP:extra_2} abc %{GREEDYDATA:extra_3}",
           ]
         }
         patterns_dir => ["/opt/logstash/patterns", "/opt/logstash/extra_patterns"]
    }
    date {
        match => [ "timestamp", "ISO8601", "YYYY-MM-dd HH:mm:ss,SSS"]
        target => "@timestamp"
    }
 }

}

您的文件/opt/logstash/patterns/opt/logstash/extra_patterns中的位置必须放置自定义模式,请参阅上一个链接:

DJANGO_LOGLEVEL (DEBUG|INFO|ERROR|WARNING|CRITICAL)
DJANGO_LOG %{DJANGO_LOGLEVEL:log_level}\s+%{TIMESTAMP_ISO8601:log_timestamp}\s+%{TZ:log_tz}\s+%{NOTSPACE:logger}\s+%{WORD:module}\s+%{POSINT:proc_id}\s+%{GREEDYDATA:content}

如果你要解析你的特定字符串(请放一个示例字符串,没有函数!),我可以帮助你,只需在评论中发布。

专业提示:如果您需要使用grok构建自定义正则表达式的帮助,请检查this link