Les retards à la SNCF
Analyse des données de l'Open Data de la SNCF
La première partie de ce TP portera sur l'analyse des données open data de la sncf portant sur les retards des lignes TGV en France à l'aide de logstash
Question
Rendez-vous dans le dossier logstash/conf/conf.d
cd logstash/conf/conf.d
Modifier le fichier 01-input.conf
Ce fichier contiendra la configuration permettant de lire le fichier regularite-mensuelle-tgv-short.csv placé dans le dossier /etc/logstash/files
Le plugin à utiliser est de la forme suivante :
input {
file {
path => ["un/fichier"]
}
}
Il faut aussi ajouter les options suivantes pour s'assurer que logstash lise bien tout le fichier
start_position => 'beginning'
sincedb_path => "/dev/null"
# /home/api04XX/logstash/conf/conf.d/01-input.conf
input {
file{
path => [ "/etc/logstash/files/regularite-mensuelle-tgv-short.csv" ]
start_position => 'beginning'
sincedb_path => "/dev/null"
}
}
Question
Modifier le fichier 02-filter.conf
Ce fichier contiendra la configuration permettant d'analyser un fichier csv avec les colonnes suivantes :
"date","axe","depart","arrivee","trains_programmes","trains_circules","trains_annules","trains_retards","regularite"
filter {
csv {
columns => ["columns"]
separator => ";"
}
}
# /home/api04XX/logstash/conf/conf.d/02-filter.conf
filter {
csv {
columns => ["date","axe","depart","arrivee","trains_programmes","trains_circules","trains_annules","trains_retards","regularite"]
separator => ";"
}
}
Question
Question
Lancer logstash et analyser le résultat
start logstash
[api04XX@tpapi04 ~]$ start logstash
Starting api04XX_api04XX-logstash_1
Attaching to api04XX_api04XX-logstash_1
api04XX-logstash_1 | {
api04XX-logstash_1 | "message" => [
api04XX-logstash_1 | [0] "2011-09;Atlantique;ANGOULEME;PARIS MONTPARNASSE;358;358;0;23;93.6\r"
api04XX-logstash_1 | ],
api04XX-logstash_1 | "@version" => "1",
api04XX-logstash_1 | "@timestamp" => "2016-01-17T13:26:57.562Z",
api04XX-logstash_1 | "host" => "api04XX-logstash",
api04XX-logstash_1 | "path" => "/etc/logstash/files/regularite-mensuelle-tgv-short.csv",
api04XX-logstash_1 | "date" => "2011-09",
api04XX-logstash_1 | "axe" => "Atlantique",
api04XX-logstash_1 | "depart" => "ANGOULEME",
api04XX-logstash_1 | "arrivee" => "PARIS MONTPARNASSE",
api04XX-logstash_1 | "trains_programmes" => "358",
api04XX-logstash_1 | "trains_circules" => "358",
api04XX-logstash_1 | "trains_annules" => "0",
api04XX-logstash_1 | "trains_retards" => "23",
api04XX-logstash_1 | "regularite" => "93.6"
api04XX-logstash_1 | }
Problématique : On se rend compte que le fichier de la SNCF comporte une date qui n'est pas complète ce qui empêche logstash de l'analyser.
Question
Rajouter un filtre qui permettrait de compléter le champ date avec le premier jour du mois et de le convertir en timestamp afin de pouvoir par la suite l'analyser.
Le plugin mutate permet de modifier la valeur d'un champ.
On peut récupérer la valeur du champ avec %{champ}
mutate {
replace => { "champ" => "valeur" }
}
La conversion en timestamp s'effectue à l'aide du plugin date.
date {
match => [ "champ", "YYYY-MM-dd" ] #On sélectionnne le pattern du champ afin d'éviter les erreurs de cast
timezone => "UTC"
}
# /home/api04XX/logstash/conf/conf.d/02-filter.conf
filter {
csv {
columns => ["date","axe","depart","arrivee","trains_programmes","trains_circules","trains_annules","trains_retards","regularite"]
separator => ";"
}
#Modification du champ date qui est de la forme yyyy-mm vers yyyy-mm-dd
mutate {
replace => { "date" => "%{date}-01" }
}
#cast du champ date que l'on vient de modifier vers un timestamp reconnu par elasticsearch.
date {
match => [ "date", "YYYY-MM-dd" ]
timezone => "UTC"
#Si la conversion a réussi, on supprime le champ date. Par défaut le résultat de la fonction date est envoyé au champ @timestamp
remove_field => ["date"]
}
}
[api04XX@tpapi04 conf.d]$ start logstash
Starting api04XX_api04XX-logstash_1
Attaching to api04XX_api04XX-logstash_1
api04XX-logstash_1 | {
api04XX-logstash_1 | "message" => [
api04XX-logstash_1 | [0] "2011-09;Atlantique;ANGOULEME;PARIS MONTPARNASSE;358;358;0;23;93.6\r"
api04XX-logstash_1 | ],
api04XX-logstash_1 | "@version" => "1",
api04XX-logstash_1 | "@timestamp" => "2011-09-01T00:00:00.000Z",
api04XX-logstash_1 | "host" => "api04XX-logstash",
api04XX-logstash_1 | "path" => "/etc/logstash/files/regularite-mensuelle-tgv-short.csv",
api04XX-logstash_1 | "axe" => "Atlantique",
api04XX-logstash_1 | "depart" => "ANGOULEME",
api04XX-logstash_1 | "arrivee" => "PARIS MONTPARNASSE",
api04XX-logstash_1 | "trains_programmes" => "358",
api04XX-logstash_1 | "trains_circules" => "358",
api04XX-logstash_1 | "trains_annules" => "0",
api04XX-logstash_1 | "trains_retards" => "23",
api04XX-logstash_1 | "regularite" => "93.6"
api04XX-logstash_1 | }
Pour continuer
Livraison des fichiers de configuration pour poursuivre le TP