Elastic Data Ingesting

Einführung

Mit Ingesting-Pipelines können ankommende oder bereits am Server vorliegende Ereignisse einfach und transparent modifiziert und erweitert werden. Sie sind vergleichbar mit Logstash-Pipelines, weisen aber nicht die gleiche Funktionsfülle auf. Durch die Ausführung im Elasticsearch-Prozess sind Ingest-Pipelines aber deutlich einfacher einsetzbar.

Im Kontext von service.monitor gibt es derzeit folgende Pipelines:

  • Berechnung von erweiterten Zeit- und Datumsangaben

  • Detail-Untersuchung von Esri ArcGIS Log-Daten

Die Pipeline-Dateien befinden sich in der Auslieferung im Verzeichnis elasticsearch/ingest

Use Cases

Temporal Adjustments

Die Pipeline ct-monitor-temporal erlaubt die Berechnung von folgenden zusätzlichen Zeitwerten:

  • Tag der Woche

  • Name des Tages der Woche

  • Stunde des Tages

  • Tag des Jahres

  • Monatswert

Damit können Diagramme erstellt werden, die z.B. Messwerte im Tages- oder Wochengang visualisieren oder aggregieren.

Durch das Berechnen dieser Werte wird eine definierte Zeitzone verwendet (hier: Europe/Paris). Dies muss gegebenenfalls angepasst werden.

Vertiefte ArcGIS-Analyse

Die Pipeline ct-monitor-arcgis-parse-servicename erlaubt das nachträgliche Extrahieren von Dienst-Informationen aus Nachrichten von ArcGIS Server. Zumeist ist der betroffene Dienst in einem separaten Attribut der ArcGIS-Nachricht gespeichert, bei einigen Fällen liegt dieser jedoch nur im Nachrichten-Text der Logzeile vor. Die Pipeline ist in der Lage über Grok-Patterns, Dienstnamen zu erkennen und in das Standardfeld des Events zu überführen.

Diese Pipeline hilft z.B. beim Finden von Service Timeouts ("Error performing query operation Error handling service request :Processing request took longer than the usage timeout for service").

Anwendung

Ausführen von Pipelines für Bestandsdaten

Anwenden einer Pipeline während einer Reindexierung
POST _reindex
{
  "source": {
    "index": "source_index"
  },
  "dest": {
    "index": "target_index",
    "pipeline": "pipeline-name"
  }
}

Für die Aktualisierung von Altdaten kann auch das Feature _update_by_query genutzt werden. Im Beispiel unten wird zusätzlich eine Query benutzt, um die Pipeline nur für bestimmte Events anzuwenden.

Anwenden einer Pipeline "in place"
POST <index>/_update_by_query?pipeline=pipeline-name
{
  "query": {
    "match": {
      "_id": "9_BGMnoBoGFrpZgJVWVE"
    }
  }
}

Ausführen von Pipelines für alle ankommenden Events

Durch das Setzen von Pipeline-Settings, kann eine Pipeline als die Standard-Pipeline gesetzt werden. Pipeline für Index konfigurieren

Setzen Sie den gleichen Wert auf dem zugehörigen Index-Template, um die Pipeline auch auf allen Folge-Indizes zu ermöglichen.