Logstash parse JSON ARRAY

(Guillaume Dufrenne) #1

Bonjour ,
Avec le logstash je suis en train de parser des données issues d'un fichier JSON .
Jusque la rien de transcendant , cependant il y a quelque chose qui m'échappe .
Je m'explique :
J'ai un fichier JSON qui ressemble à ça

[
    {
        "reference": "2-4",
        "title": "transition écologique",
        "createdAt": "2019-01-22 09:37:49",
        "publishedAt": "2019-01-22 09:37:49",
        "updatedAt": null,
        "trashed": false,
        "trashedStatus": null,
        "authorId": "VXNlcjoxMTQwMTc0YS0xZTFmLTExZTktOTRkMi1mYTE2M2VlYjExZTE=",
        "authorType": "henri stratowen",
        "authorZipCode": "97231"
    },
    {
        "reference": "2-4",
        "title": "qsdefrqsdfqsd",
        "createdAt": "2019-01-22 09:37:49",
        "publishedAt": "2019-01-22 09:37:49",
        "updatedAt": null,
        "trashed": false,
        "trashedStatus": null,
        "authorId": "VXNlcjoxMTQwMTc0YS0xZTFmLTExZTktOTRkMi1mYTE2M2VlYjExZTE=",
        "authorType": "arnold schwarzeneger ",
        "authorZipCode": "97231"
    }
]

C'est a dire que c'est un tableau JSON qui comprend des objets json non identifié
Grossièrement =>

> [{},{},{}]

En phase préliminaire j'ecrit la conf logstash suivante :slight_smile:

input {

file {

path => ["C:\ELK\Logstash\logstash-6.6.2\conf\lefichier.json"]

sincedb_path =>"nul"

start_position => "beginning"

}

}

filter {

}

output {

stdout {

codec => rubydebug

}

}

Lorsque je lance cette conf de la manière suivante :

C:\ELK\Logstash\logstash-6.6.2\bin\logstash.bat -f C:\ELK\Logstash\logstash-6.6.2\conf\indexlocal.conf
Sending Logstash logs to C:/ELK/Logstash/logstash-6.6.2/logs which is now configured via log4j2.properties
[2019-03-16T18:58:05,929][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2019-03-16T18:58:05,949][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"6.6.2"}
[2019-03-16T18:58:17,602][INFO ][logstash.pipeline        ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50}
[2019-03-16T18:58:18,461][INFO ][logstash.pipeline        ] Pipeline started successfully {:pipeline_id=>"main", :thread=>"#<Thread:0x1df6669 sleep>"}
[2019-03-16T18:58:18,533][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2019-03-16T18:58:18,533][INFO ][filewatch.observingtail  ] START, creating Discoverer, Watch with file and sincedb collections
[2019-03-16T18:58:19,178][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

Il ne se passe rien apres Successfully started Logstash API endpoint {:port=>9600}
J'ai verifié que la conf etait correct avec l'option -t
Est-ce normal , j'ai l'impression que quelque chose m'échappe .
Par defaut , cette configuration logstash ne devrait-elle pas me répondre mon fichier JSON en sortie ?
J'utilise logstash 6.6.2 sur windows(je sais , c'est très précaire ....) .

Merci de votre aide

(Guillaume Dufrenne) #2

Bon finalement , problème résolu ,
il fallait changer le path comme ceci
`

path => ["C:/ELK/Logstash/logstash-6.6.2/conf/LA_TRANSITION_ECOLOGIQUE_SMALL.json"]

en inversant les \ en

/

Et

sincedb_path => "NUL"

au lieu de

sincedb_path => "nul"

Autant pour moi

1 Like
(system) closed #3

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.