Bonjour à tous !
Étant novice sous ELK, merci d'être gentil avec moi
Je souhaite parser un fichier JSON sous Logstash pour l'indéxer dans ElasticSearch.
Ce fichier est sous la forme suivante:
https://itunes.apple.com/FR/rss/customerreviews/id=525006323/sortBy=mostRecent/json
Voici mon input et filter:
#######################################
############ INPUT SECTION ############
#######################################
input {
file {
type => "MappyGPS"
path => "/opt/scraping-IOS/Mappy.json"
codec => "json"
start_position => "beginning"
codec => multiline {
pattern => "^{"
negate => "true"
what => "previous"
}
sincedb_path => "/dev/null"
}
}
#######################################
########### FILTER SECTION ############
#######################################
filter
{
mutate
{
replace => [ "message", "%{message}" ]
gsub => [ 'message','\n','']
}
if [message] =~ /^{.*}$/
{
json { source => message }
}
}
mais j'ai le message suivant:
{
"message" => "{\"attributes\":{\"rel\":\"previous\", \"href\":\"https://itunes.apple.com/fr/rss/customerreviews/page=1/id=525006323/sortby=mostrecent/xml?urlDesc=/customerreviews/id=525006323/sortBy=mostRecent/json\"}}, ",
"tags" => [
[0] "_jsonparsefailure"
],
Merci d'avance pour votre aide
dadoonet
(David Pilato)
January 22, 2016, 8:36am
2
Je suis surpris que LS accepte deux codecs.
A mon avis l'un doit écraser l'autre.
En fait, je pense qu'il faut seulement utiliser le codec json
.
Il y a le code json_lines
aussi mais il est fait pour le cas où tu as un JSON sur une seule ligne, si je comprends bien.
Bonjour David et merci de ta réponse.
En fait, j'ai d'autres fichiers JSON qui sont eux, sur une même ligne.
Du coup, j'utilise ceci:
#######################################
############ INPUT SECTION ############
#######################################
input {
file {
type => "CandyCrushSodaSaga"
path => "/opt/scraping-GPS/apps_info_json/CandyCrushSaga.json"
codec => "json"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
#######################################
########### FILTER SECTION ############
#######################################
filter
{
mutate
{
replace => [ "message", "%{message}" ]
gsub => [ 'message','\n','']
}
if [message] =~ /^{.*}$/
{
json { source => message }
}
}
Je ne sais pas si le code est propre mais ça marche
dadoonet
(David Pilato)
January 22, 2016, 9:16am
4
Donc du coup ? Ca marche pour ton premier cas ?
Brendao
February 17, 2017, 8:29am
5
Bonjour,
J'ai actuellement le même problème, or quand je met
codec => "json"
J'ai un message d'erreur qui s'affiche lorsque je lance logstash, et dès que je change "codec => "json"" le problème n'est plus là mais j'ai toujours le "_jsonparsefailure"
Comment puis-je faire ?
dadoonet
(David Pilato)
February 17, 2017, 8:49am
6
Ouvre une nouvelle question et poste toutes les informations comme un exemple de fichier en entrée, la configuration...
"Ca marche pas" n'est pas vraiment suffisant pour t'aider.