Ingestion de deux fichiers CSV dans elastic

Bonjour,

J'utilise Logstash et filebeat pour l'ingestion de deux fichiers csv dans elastic
j'ai créer deux config logstash et une config file beat pour la lecture de mes deux fichiers
j'ai remarquer quand mes data dans elastic est mélanger existe il des bonne pratiques pour
ça???

Merci d'avance :slight_smile:

Salut @Youssef_SBAI

Tu n'est pas obligé a utiliser Filebeat et Logstash.
C'est bien possible d'effectuer l'ingestion de fichiers csv en utilisant Filebeat avec une ingest pipeline Elasticsearch ou seulement avec Logstash.

En théorie chaque ligne a un champ qui représente le nom du fichier.
Le nombre des lignes peut être préservé ou pas selon la pipeline et méthodes utilisé.

avec logstash faut il créer deux fihiers de config une conf pour chaque fichiers ?

Non tu n'est pas oblige.

Si tu as plusieurs fichiers CSV et ils ont la même structure tu peux créer un seul file input avec path qui pointe vers le dossier ou ils sont stockés (documentation).
E.g. path => "/dossier.../*.csv"

Il faut faire attention pour la gestion des en-tête des fichier CSV.
Si les 2 fichiers ont le meme en-tete:

input {
  file {
    path => "/somewhere/*.csv"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}
filter {
  csv {
      separator => ","
      columns => ["Col1", "Col2", "Col3"]
  }
}

Si tu as des doutes, n'hesite pas a partager les premieres 2 lignes des fichiers CSV.


Pour info, c'est possible d'importer des fichiers csv meme depuis Kibana si tu as une license basic.

mes deux fichiers non pas le même en-tete

voici les 2 premiers lignes de mes fichiers

fichier 1

fichier 2
image

pour le 1 fichier j'ai réaliser l'ingestion avec filebeat et Logstash
je voulais ingérer le 2 fichiers en utilisant filebeat et Logstash dans le même index que
le premier fichier

j'ai utiliser file beat et logsth pour traiter mes deux fichiers

ma config file beat est

- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
   - C:\Users\h83710\Desktop\elastic\logstash-7.5.2\test\FICHIER.csv
   
  paths:
   - C:\Users\h83710\Desktop\elastic\logstash-7.5.2\test\poca.csv

et ma config logstash est :

input {
    beats {
    port => "5044"
    }
}    
              
filter {

# added condition for first file
if [path] == "C:\Users\h83710\Desktop\elastic\logstash-7.5.2\test\FICHIER.csv"{
csv{
separator => ";"
columns => ["chaine", "job", "date_plan", "statut", "date_debut", "date_fin", "serveur", "numero_passage", "application", "sous_application"]
}
date {
match => [ "date_plan" , "dd/MM/YYYY" ]
}

date {
match => [ "date_debut" , "dd/MM/YYYY HH:mm" ]
}

date {
match => [ "date_fin" , "dd/MM/YYYY HH:mm" ] 
}
mutate {
convert => { "numero_passage" => "integer" }
}

}
# added condition for second file
else if [path] == "C:\Users\h83710\Desktop\elastic\logstash-7.5.2\test\poca.csv"{
csv{
separator => ";"
columns => ["date_fraicheur"]
}
# ommitted mutations for second file
mutate {
convert => { "date_fraicheur" => "integer" }
}

}

}

output{
    # added condition for first file
    if [path] == "C:\Users\h83710\Desktop\elastic\logstash-7.5.2\test\FICHIER.csv"{ 
        elasticsearch{
            hosts => "http://localhost:9200"
            index => "hello"
        }
    }
    # added condition for second file
    else if [path] == "C:\Users\h83710\Desktop\elastic\logstash-7.5.2\test\poca.csv"{
        elasticsearch{
            hosts => "http://localhost:9200"
            index => "hello"
        }
    }
    stdout {codec => rubydebug}
}

j'ai pas eu d'erreur en lançant logstash mais j'ai pas d'ingestion dans Elastic ?

Salut,

Filebeat lit bien tes fichiers ? Tu as purgé la registry de filebeat ? Dans l'exemple de configuration complet qui est fourni avec filebeat, on peut lire ce qui suit...si cela peut t'aider à retrouver ce fichier et à purger ta registry...

    # Registry data path. If a relative path is used, it is considered relative to the
    # data path.
    #filebeat.registry.path: ${path.data}/registry

Cordialement,

Charles.w