0
我已成功配置ELK Laravel應用程序,但我們正面臨與Laravel日誌的問題。我用下面的代碼配置了logstash模板。但是我在Kibana收到了Break line。根據以下細節,我嘗試了兩種不同的配置代碼。Laravel解析日誌與麋鹿(elasticsearch,logstash,kibana)
20 laravel.conf
input {
stdin{
codec => multiline {
pattern => "^\["
what => "previous"
negate => true
}
}
}
filter {
grok {
match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] %{DATA:env}\.%{DATA:severity}: %{DATA:message}" }
}
}
output {
elasticsearch {
document_type => "logs"
hosts => ["127.0.0.1"]
index => "laravel_logs"
}
}
filter {
# Laravel log files
if [type] == "laravel" {
grok {
match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] %{DATA:env}\.%{DATA:severity}: %{DATA:message} \[" }
}
}
}
laraval示例日誌是:
[2017-09-13 16:19:28] production.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Parse error: syntax error, unexpected identifier (T_STRING), expecting ',' or ')' in /var/www/app/Http/Controllers/BrandsController.php:57
Stack trace:
#0 /var/www/vendor/composer/ClassLoader.php(322):
Composer\Autoload\includeFile('/var/www/vendor...')
#1 [internal function]: Composer\Autoload\ClassLoader-
>loadClass('App\\Http\\Contro...')
#2 [internal function]: spl_autoload_call('App\\Http\\Contro...')
所以我的主要問題是我們正在單線收回這個日誌kibana。例如,上面的日誌代碼是分爲不同的行消息,我們不知道哪條消息來自哪個錯誤?
下圖中顯示單個laravel日誌的Kibana日誌輸出。 kibana log-output
我已經找到了解決改變神交圖案按如下: 濾波器{ 神交{ 匹配=> { 「消息」=>「\ [%{TIMESTAMP_ISO8601:時間戳} \]%{DATA:ENV} \。%{DATA:severity}:%{DATA:message} in%{DATA:file}:%{NUMBER:line}(。| \ r | \ n)堆棧跟蹤:(。| \ r | \ n) (?(。| \ r | \ n)*)「} } } –
Roger