2

我一直在尝试使用 logstash、elastic search 和 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 }

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

4

1 回答 1

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 匹配占位符中。

于 2015-10-21T21:33:13.457 回答