Logging - Einsatz einer Timeseries-Datenbank

Logging

Einsatz einer Timeseries-Datenbank

Rocco Gagliardi
von Rocco Gagliardi
Lesezeit: 9 Minuten

Keypoints

So protokollieren Sie in einer Timeseries-Datenbank

  • Systeme mit hoher Index-Nutzung stehen dank der explosionsartigen Zunahme von Microservices zunehmend unter Druck
  • Die IT-Abteilung muss auf die Protokolle zugreifen, ohne die Daten notwendigerweise zu aggregieren oder im Detail zu filtern
  • Loki ist eine ausgezeichnete Ergänzung zu Prometheus, indem es Metriken mit den Protokollen synchronisiert
  • Wenn spezifische Datenaggregationen, Zählungen oder Detailfilter benötigt werden, ist Loki jedoch nicht die richtige Lösung

In den letzten Jahren wurde das Problem der Protokollierung mit Hilfe von Systemen angegangen, die die schnelle Extraktion bestimmter Daten oder Beziehungen aus einer riesigen Informationsmenge ermöglichen. Wir drängten daher auf eine umfangreiche Indizierung der Daten, wobei Teile extrahiert, modifiziert oder andere hinzugefügt wurden (z.B. Geo-Tagging). Alles mit dem Ziel, immer höhere Extraktionsgeschwindigkeiten zu erreichen. Oft übersteigt die Grösse der Indizes die der Daten selbst.

Darüber hinaus haben wir uns in den letzten Jahren von einem weitgehend statischen Netzwerk zu extrem dynamischen Netzwerken entwickelt, mit Mikrodiensten, die sich sowohl in ihrer Anzahl als auch in ihrer Position ständig verändern. Diese Veränderungen im Auge zu behalten, sei es für Debugging oder für Business Analysis und Intelligence (BA/BI), ist sehr komplex und teuer geworden, da die Lösung mit umfangreichem Index nicht leicht skalierbar ist sowie hohe Investitionen erfordert.

Das Problem, die Ereignisse in den Anwendungen in einer für Menschen lesbaren Form zu verfolgen, wird in naher Zukunft verschwinden. Zusätzlich zu der Tatsache, dass es oft nutzlos ist, wird die Menge der angelegten Daten unüberschaubar. Lösungen, bei denen Maschinen Probleme an Maschinen weitergeben, die die notwendigen Anpassungen vornehmen und dabei menschliche Eingriffe vollständig vermeiden, sind bereits im Einsatz – und ihre Zahl nimmt zu. In der Zwischenzeit existiert das Problem jedoch und erfordert neue Lösungen.

Ohne den derzeit im Einsatz befindlichen BA/BI-Lösungen etwas wegzunehmen, liegt der Schlüssel, insbesondere für den IT-Betrieb, im Konzept der Beobachtbarkeit: Bestimmung der Funktionsweise eines Systems durch Analyse seiner Ausgaben, im Wesentlichen Metriken, Protokolle und Traces.

In den letzten Jahren hat sich Grafana zum Defacto-Standard für diese Beobachtbarkeit etabliert, mit einigen spezialisierten Werkzeugen für jeden Aspekt:

Umfangreicher oder minimaler Index

Wie bereits erwähnt, produzieren Mikroservice-Systeme eine riesige Menge an Daten. Um sie zu verwalten, gehen wir zunehmend zu Systemen mit minimaler Indizierung über. Im Gegensatz zum Trend, der massiv auf Indizierung zurückgreifen.

Loki ist ein horizontal skalierbares, hochverfügbares, mandantenfähiges Log-Aggregationssystem nach dem Vorbild von Prometheus. Es ist so konzipiert, dass es sehr kostengünstig und einfach zu bedienen ist. Es indiziert nicht den Inhalt der Protokolle, sondern vielmehr einen Satz von Labels für jeden Protokollstrom.

Ist Loki ein Ersatz für ELK, Splunk oder Graylog? Nein. Es liegt an Ihnen, Loki, ELK oder eine Kombination aus beiden zu verwenden. Einige Unterschiede zwischen den jeweiligen Systemklassen sind in der Tabelle aufgeführt.

Fähigkeit Umfangreicher Index Minimaler Index
Schreibleistung niedrig hoch
Leseleistung hoch hoch
Typische Indexgrösse (im Vergleich zu den Daten) >50% <5%
Filterfähigkeiten hoch niedrig
Aggregationsfähigkeiten hoch niedrig
Skalierbarkeit niedrig Hoch
Kosten hoch niedrig

Nehmen Sie als Beispiel ein Apache httpd Log: ELK wird eine typische httpd-Logzeile in ca. 12 Stücke teilen und jedes davon indizieren. Loki wird nur 3 Elemente mit einem Index versehen: Timestamp, Method, HTTPStatus.

Wie Loki arbeitet

Das Holen von Protokollen mit Loki umfasst zwei einfache Komponenten: Den Loki-Server und den Promtail-Client. Beide sind in Go geschrieben und daher als eine einzige Datei extrem einfach zu verteilen. Wie Grafana basiert Loki auf der Cortex-Datenbank, die skalierbar und mandantenfähig ist.

Arbeitsmodell von Loki

Loki indiziert keine Daten, es indiziert und gruppiert Streams von Logs. Es teilt die Daten in Chunks (Blöcke), die von Streams gespeist werden, und speichert sie im Dateisystem (wir haben eine ähnliche Technik für unsere spezialisierte Suche herangezogen).

Streams sind durch Labels gekennzeichnet. Labels sind k->v Paare, die aus jedem Teil der Daten extrahiert werden können. Jede eindeutige Kombination von Labels und Werten definiert einen Stream. Die Protokolle für einen Stream werden zusammengefasst, komprimiert und als Chunks gespeichert. Jeder Chunk wird mit Hilfe eines konfigurierbaren Algorithmus (Standard gzip) komprimiert.

Die Chunks sind also der Index zu den Loki-Logdaten. Sie werden verwendet, um den komprimierten Protokollinhalt zu finden, der separat gespeichert wird. Sobald der richtige Chunk im Index identifiziert ist, wird er dekomprimiert und der Inhalt mit regexp bearbeitet. Das mag schwach klingen, aber da die zeitgleich geschehen kann, sind die Suchvorgänge sehr schnell.

Loki-Indizierungsmodell

Hinweis: Die Indexgrösse oder die Zugriffsgeschwindigkeit hängt von der Anzahl der Chunks ab. Die Anzahl der Chunks hängt von der Anzahl der Streams ab, die von der Anzahl der Kombinationen von Labels und Values abhängt. Es ist daher klar, dass es im Gegensatz zu ELK zwar möglich, aber nicht empfehlenswert ist, z.B. IP-Adressen zu indizieren (labeln), da jede neue IP einen neuen Stream erzeugen würde. Das bedeutet, dass z.B. Suchen nach einer bestimmten IP und über einen längeren Zeitraum in Loki nicht gut funktionieren.

Um ausgezeichnete Suchzeiten zu erhalten, ist es daher notwendig, die zu extrahierenden und zu verwendenden Labels sorgfältig auszuwählen.

Anwendungsfall Loki

Der Use-Case von Loki ist spezifisch: Unterstützung des Debugging-Prozesses durch schnelles Filtern wichtiger Nachrichten aus der Menge der Mitteilungen, die von den verschiedenen an einer Anwendung beteiligten Systemen erzeugt werden. Eine Containerumgebung ist eine ideale Spielwiese für Loki.

Die Leistungsfähigkeit von Loki zeigt sich, wenn es in Prometheus integriert ist; unter Verwendung der gleichen Labels ist es möglich, auf die gleichen Datensegmente zu verweisen und die Metriken mit den Nachrichten der verschiedenen Systeme zu vergleichen.

Die Erstellung von Dashboards, Trends, Zählungen usw. ist nicht die Stärke von Loki. Stellen Sie sich Loki als eine Art Power-Grep vor.

Fazit

Jedes System erstellt Protokolle: Switches, Router, Betriebssysteme, Webserver, Firewalls, Dienste auf Ihren Kubernetes-Clustern, öffentliche Cloud-Dienste und mehr. Besonders für Systembetreiber ist es entscheidend, diese Protokolle sammeln und analysieren zu können. Und die wachsende Beliebtheit von Mikrodiensten, IoT, Cybersicherheit und Cloud hat zu einer Explosion neuer Arten von Protokolldaten geführt.

Loki strebt einen anderen Ansatz an, als umfangreiche Indexsysteme wie ELK. Durch die Vermeidung weitreichender Indizierung und den Verzicht auf die Möglichkeit, die gesammelten Daten zu aggregieren und fein zu filtern, konzentriert es sich auf die extrem schnelle Aufnahme grosser Datenmassen und die ebenso schnelle Suche nach Teilen davon, wobei die Mandantenfähigkeit und Skalierung zu sehr niedrigen Kosten beibehalten wird.

Über den Autor

Rocco Gagliardi

Rocco Gagliardi ist seit den 1980er Jahren im Bereich der Informationstechnologie tätig. In den 1990er Jahren hat er sich ganz der Informationssicherheit verschrieben. Die Schwerpunkte seiner Arbeit liegen im Bereich Security Frameworks, Routing, Firewalling und Log Management.

Links

Sie wollen die Sicherheit Ihrer Firewall prüfen?

Unsere Spezialisten kontaktieren Sie gern!

×
Übergang zu OpenSearch

Übergang zu OpenSearch

Rocco Gagliardi

Graylog v5

Graylog v5

Rocco Gagliardi

auditd

auditd

Rocco Gagliardi

Security Frameworks

Security Frameworks

Rocco Gagliardi

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv