Como analisar json no logstash / grok a partir de uma linha de arquivo de texto?
Eu tenho um arquivo de log que se parece com isso (simplificado)
Exemplo de linha de log
MyLine data={"firstname":"bob","lastname":"the builder"}
Eu gostaria de extrair o json contido emdados e crie dois campos, um para o primeiro nome, um para o último. No entanto, a saída que recebo é esta:
{"message":"Line data={\"firstname\":\"bob\",\"lastname\":\"the builder\"}\r","@version":"1","@timestamp":"2015-11-26T11:38:56.700Z","host":"xxx","path":"C:/logstashold/bin/input.txt","MyWord":"Line","parsedJson":{"firstname":"bob","lastname":"the builder"}}
Como você pode ver
..."parsedJson":{"firstname":"bob","lastname":"the builder"}}
Não é disso que preciso, preciso criar campos para o nome e o sobrenome no kibana, mas o logstash não extrai os campos com o filtro json.
Configuração do LogStash
input {
file {
path => "C:/logstashold/bin/input.txt"
}
}
filter {
grok {
match => { "message" => "%{WORD:MyWord} data=%{GREEDYDATA:request}"}
}
json{
source => "request"
target => "parsedJson"
remove_field=>["request"]
}
}
output {
file{
path => "C:/logstashold/bin/output.txt"
}
}
Qualquer ajuda muito apreciada, tenho certeza que estou perdendo algo simples
obrigado