用于解析django异常的Logstash conf文件

时间:2014-12-01 07:46:48

标签: django elasticsearch logstash kibana grok

我一直在尝试使用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 }

} 但是记录的消息太长,无法找到解析它的方法。 任何帮助表示赞赏

1 个答案:

答案 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匹配占位符