我一直在尝试使用logstash,弹性搜索和Kibana来监控我的django服务器。 我已将conf文件设置为下面的
input {
tcp { port => 5000 codec => json }
udp { port => 5000 type => syslog }
}
output {
elasticsearch_http {
host => "127.0.0.1"
port => 9200
}
stdout { codec => rubydebug }
} 但是记录的消息太长,无法找到解析它的方法。 任何帮助表示赞赏
答案 0 :(得分:2)
据我所知,没有直接解析Django异常的模式或内置函数。
您需要告诉转发代理程序定位您正在生成的Django日志文件,并将其标记为"type": "django"
。
然后,在Logstash服务器上,您可以使用以下内容:
图案:
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}
过滤器:
filter {
if [type] == "django" {
grok {
match => ["message", "%{DJANGO_LOG}" ]
}
date {
match => [ "timestamp", "ISO8601", "YYYY-MM-dd HH:mm:ss,SSS"]
target => "@timestamp"
}
}
}
如果您不想添加模式文件,可以将DJANGO_LOGLEVEL
模式展开到%{DJANGO_LOGLEVEL:log_level}
字段,并将DJANGO_LOG
后面的定位规则放入grok匹配占位符