我从我的Django应用程序登录到Logstash处理程序,如下所示:
logging.log(logging.INFO, 'Account balance', {'account': a.name, 'platform': a.platform, 'currency': currency, 'amount': balance['result']['currency']})
我想汇总并使用Kibana的这些数据。我有很多其他日志格式,并希望能够显示和可视化这些数据,而无需为每种可能性明确编写过滤器。
是否有一种多功能的方式来获得这些“领域”的价值并将其带入Kibana?
答案 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