Analysez et visualisez les journaux csv avec Excel Elastic Stack (docker-compose) - (1ère ligne: date, 2ème ligne et lignes suivantes: données csv) la date est ajoutée à chaque ligne après la 2ème ligne en tant que champ d'horodatage.

introduction

Merci! Un ingénieur en charge du processus d'inspection des produits au sein du département d'ingénierie de production. Ceci est une continuation de Analyse et visualisation des journaux csv avec Excel Elastic Stack (docker-compose) --Qu'est-ce qu'Elastic Stack.

Public cible

Cet article est destiné à ceux qui découvrent Elastic Stack et qui envisagent de l'essayer.

Contenu de cet article

Cette section décrit comment traiter la première date de ces données csv comme l'horodatage de chaque ligne.

Date,2020/10/28,20:19:18
10,Test1,130.1,OK
20,Test2,1321,OK
30,Test3,50.2,OK
End
Date,2020/10/29,10:30:50
10,Test1,140.4,OK
20,Test2,1300,OK
30,Test3,50.0,OK
End
Date,2020/10/29,11:40:50
10,Test1,141.1,OK
20,Test2,1310,OK
30,Test3,55.8,NG
End

J'ai mis un ensemble de fichiers de paramètres dans GitLab, veuillez donc vous y référer. Cliquez ici pour le dépôt-> élastique-stack

politique

Je l'ai examiné de deux manières.

Politique 1: lire ligne par ligne avec logstash

En conclusion, cette méthode n'a pas fonctionné. aggregate Parce que les filtres vous permettent de partager des informations entre plusieurs événements. , Dans certains cas, c'est possible.

Dans l'exemple officiel, les nombres du début à la fin sont ajoutés et le résultat de l'ajout au champ d'événement de TASK_END est défini.

 INFO - 12345 - TASK_START - start
 INFO - 12345 - SQL - sqlQuery1 - 12
 INFO - 12345 - SQL - sqlQuery2 - 34
 INFO - 12345 - TASK_END - end

Cependant, vous pouvez partager des données entre les événements en définissant le task_id du filtre d'agrégation sur "12345". Dans ce cas, l'équivalent task_id n'existait pas dans les données et ne pouvait pas être utilisé.

Stratégie 2: combiner plusieurs lignes avec filebeat

C'est une méthode réussie. En utilisant la [multiligne] de filebeat (https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.html), plusieurs lignes de texte peuvent être combinées en un \ n délimiteur. Cela peut être un événement. Ci-dessous, il peut être résumé par les règles de trois lignes.

  multiline.pattern: (End)
  multiline.negate: true
  multiline.match: before

L'article de @ datake913 Résumé des paramètres multilignes qui gère plusieurs lignes avec Filebeat est un tableau et il était facile à comprendre, je vais donc l'appeler "modèle: Les lignes consécutives qui ne correspondent pas (FIN) sont ajoutées avant la ligne correspondante suivante. " Il peut être combiné en une seule ligne comme indiqué ci-dessous.

Date,2020/10/28,20:19:18\n10,Test1,130.1,OK\n20,Test2,1321,OK\n30,Test3,50.2,OK\nEnd

Poursuite de la politique 2: décomposer multiligne avec logstash

Pour analyser l'horodatage, utilisez De-Excel Elastic Stack (docker-compose) pour analyser et visualiser les journaux csv --- analyser "année / mois / jour, heure: minute: seconde" en multiligne avec filtre grok, heure japonaise Traiter comme.

Si vous appliquez le filtre csv à la multiligne tel quel, vous ne pouvez analyser Date, 2020/10 / 28,20: 19: 18 que jusqu'au premier \ n. split En utilisant un filtre, vous pouvez à nouveau décomposer la multiligne et la diviser en plusieurs événements. ..

Enfin, les lignes commençant par un non-nombre sont supprimées avec le filtre drop et mutate La conversion de type est effectuée à partir du type String avec un filtre.

logstash.conf


filter {
  grok {
    patterns_dir => ["/opt/logstash/extra_patterns"]
    match => { "message" => "%{TIMESTAMP_JP:read_timestamp}" }
  }

  date {
    match => ["read_timestamp", "yyyy/MM/dd,HH:mm:ss"]
    timezone => "Asia/Tokyo"
    target => "@timestamp"
  }

  split{}

  csv {
    columns => ["Step","TestName","Value1","Judge"]
    separator => ","
  }

  if [Step] !~ /\d+/ {
    drop{}
  }

  mutate {
    convert => {
      "Step" => "integer"
      "Value1" => "float"
    }
  }
}

finalement

Vous pouvez maintenant attribuer le même horodatage à plusieurs lignes en utilisant la multiligne et la division. Dans les prochains articles, j'aimerais présenter des contre-mesures pour les erreurs de tas suivantes.

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid1.hprof ...
Heap dump file created [3178685347 bytes in 34.188 secs]
warning: thread "[main]>worker11" terminated with exception (report_on_exception is true):
warning: thread "[main]>worker4" terminated with exception (report_on_exception is true):
java.lang.OutOfMemoryError: Java heap space

Recommended Posts

Analysez et visualisez les journaux csv avec Excel Elastic Stack (docker-compose) - (1ère ligne: date, 2ème ligne et lignes suivantes: données csv) la date est ajoutée à chaque ligne après la 2ème ligne en tant que champ d'horodatage.
Analysez et visualisez les journaux CSV avec Excel Elastic Stack (docker-compose) - Configurez avec docker-compose
Analyse et visualisation des journaux CSV avec Excel Elastic Stack (docker-compose) - Qu'est-ce qu'Elastic Stack?
Analysez et visualisez les journaux CSV avec Excel Elastic Stack (docker-compose) - Recevez des entrées de plusieurs battements avec Pipeline-to-Pipeline de Logstash
Analysez et visualisez les journaux csv avec Excel Elastic Stack (docker-compose) --Parse "année / mois / jour, heure: minute: seconde" en multiligne avec filtre grok et traitez-le comme du temps japonais
Analysez et visualisez les journaux csv avec Excel Elastic Stack (docker-compose) - Deux façons de gérer Logstash OutOfMemoryError
Analysez et visualisez les journaux csv avec Excel Elastic Stack (docker-compose) - Divisez PipelineFilter en 3 fichiers [entrée / filtre / sortie] pour améliorer la maintenabilité et la réutilisation