Я регистрирую и анализирую свои журналы с помощью стека ELK в приложении symfony3. Из приложения symfony я хочу, чтобы jsons мог зарегистрировать объект, который может быть немного глубоким. Есть ли какой-нибудь способ, которым Кибана интерпретирует моего json как json, а не строку?Symfony - ELK - интерпретировать json в Monolog
Вот пример того, как я журналирования,
$this->logger->notice('My log message', array(
'foo' => 'bar,
'myDeepJson1' => $deepJson1,
'myDeepJson2' => $deepJson2
));
И там, мой logstash.conf. Я использовал шаблон в Symfony, что я нашел здесь: https://github.com/eko/docker-symfony
input {
redis {
type => "symfony"
db => 1
key => monolog
data_type => ['list']
host => "redis"
port => 6379
}
}
filter {
if [type] == "symfony" {
grok {
patterns_dir => "./patterns"
match => [ "message", "%{SYMFONY}" ]
}
date {
match => [ "date", "YYYY-MM-dd HH:mm:ss" ]
}
if [log_type] == "app" {
json {
source => "log_context"
}
}
}
}
output {
if [type] == "symfony" {
elasticsearch {
hosts => ["172.17.0.1:9201"]
index => "azureva-logstash"
}
}
}
На самом деле, enverything я вход в переменной log_context, но Монолог преобразует массив в JSON, поэтому мои $ переменных deepJson являются двойным кодированным, но нет возможности регистрировать многомерный массив в контексте ...
любая помощь будет оценена по достоинству. Благодаря !
Для справки: [JSON кодек] (https://www.elastic.co/guide/en/logstash/2.2/plugins-codecs-json.html) – baudsp
Привет и спасибо за ваш ответ, но это не решает мою проблему ... json string не интерпретируется ... я хотел бы иметь возможность перемещаться в json, как в таблице ... Kibana все еще показывает мне поле как raw json – nikophil
Можете ли вы добавить несколько примеров журналов и то, что вы хотите иметь в ES, пожалуйста? Это может помочь мне понять вашу проблему. – baudsp