- LogHouse verarbeitete innerhalb eines Jahres statt 19 PiB inzwischen mehr als 100 PB an Log-Daten und skalierte auf rund 500 Billionen Zeilen
- Wegen der Grenzen und Ineffizienzen der Datenverarbeitung mit OpenTelemetry (OTel) wurde auf eine maßgeschneiderte Pipeline (SysEx) umgestellt, die auf die Kernsysteme zugeschnitten ist
- Durch diesen Wechsel konnte die Ereignisverarbeitung um das 20-Fache gesteigert werden, während die CPU-Auslastung unter 10 % blieb
- Mit der Einführung von HyperDX und ClickStack in ClickHouse wurden UI und Daten integriert sowie Schema-Flexibilität und eine leistungsfähige Umgebung zur Datenexploration geschaffen
- Durch die Einführung von Wide Events und einem High-Cardinality-Modell können nun alle Ereignisse ohne Vorab-Aggregation gespeichert und analysiert werden
Hintergrund und Wandel
- LogHouse, die interne Logging-Plattform für ClickHouse Cloud, ist innerhalb eines Jahres von einem System mit 19 PiB und 37 Billionen Zeilen zu einer Großplattform mit mehr als 100 PB Daten und fast 500 Billionen Zeilen gewachsen
- Anfangs wurde die gesamte Telemetrie über OpenTelemetry (OTel) erfasst, doch in einer Umgebung mit sehr großen Datenmengen traten die Grenzen bei Performance und Ressourcen sowie Probleme durch CPU-Verschwendung und Datenverlust bei der Datentransformation deutlich hervor
Grenzen von OTel und Gründe für die Einführung einer maßgeschneiderten Pipeline
- Die OTel-Pipeline war extrem ineffizient, weil Logs in JSON umgewandelt, anschließend erneut auf das OTel-Format gemappt und dabei mehrfach konvertiert und marshalled wurden
- Tatsächlich wären für die Verarbeitung von 20 Millionen Zeilen pro Sekunde auf OTel-Basis rund 8.000 CPU-Kerne nötig gewesen
- Bei plötzlichen Lastspitzen wurden die Collector überlastet, wodurch Logs verworfen wurden und nicht erfasste Daten entstanden
Einführung und Architektur von SysEx
- SysEx (System Tables Exporter) überträgt Daten aus den system tables von ClickHouse direkt und ohne Konvertierung in ihren ursprünglichen Typen nach LogHouse
- Verteiltes Scraping über eine Hash-Ring-Struktur, ein zeitverzögerter Puffer sowie ein Sliding-Window-Verfahren verhindern Datenverluste und erfüllen interne SLAs
- Mit Go und angepassten Funktionen des ClickHouse-Clients ist eine byte-to-byte-Übertragung ohne Data Marshaling möglich
- Um mit variablen Schemas umzugehen, werden Schema-Hashes und dynamisches Schema-Management eingesetzt; mit der Merge table engine werden mehrere Schemaversionen in einer logischen Sicht zusammengeführt
- Erfassung speicherbasierter Tabellen auf Snapshot-Basis sowie Unterstützung für fortgeschrittene Diagnose- und Analyseaufgaben
Verbesserungen bei Leistung und Effizienz
- Mit SysEx kann der OTel Collector zwar 2 Millionen Logs pro Sekunde mit 800 CPUs verarbeiten, SysEx jedoch 37 Millionen Logs mit nur 70 CPUs
- Diese Effizienzsteigerung senkt den Ressourcenverbrauch drastisch, verhindert Event-Verluste und ermöglicht eine Echtzeit-Supportumgebung
Die fortbestehende Rolle von OTel
- OTel bietet weiterhin einen standardisierten, vendor-neutralen Plattformansatz und bleibt bei Serviceausfällen oder abnormalen Zuständen unverzichtbar
- Auch in Crash- oder Fehlerfällen, die SysEx nicht verarbeiten kann, lassen sich weiterhin Logs erfassen
- Aktuell werden nur noch Logs unterhalb des Trace-Levels entfernt; ab dem Info-Level wird gesammelt, um Ressourcen zu optimieren
UI-Integration mit HyperDX und ClickStack
- Von einer bisherigen maßgeschneiderten Grafana-Oberfläche wird schrittweise auf eine ClickHouse-native UI auf Basis von HyperDX umgestellt
- HyperDX ist schemaunabhängig, unterstützt Lucene-Abfragen und SQL und bietet vollständige Kompatibilität mit den vielfältigen Datentypen von ClickHouse
- Auch Daten aus unterschiedlichen Tabellenstrukturen und aus maßgeschneiderten Exporter-Quellen lassen sich ohne Änderungen an der UI integrieren
- Grafana übernimmt weiterhin Prometheus-basierte Metriken und feste Dashboards, sodass beide Lösungen komplementär eingesetzt werden
Einführung von Wide Events und High-Cardinality-Modellen
- Wide Events sind ein grundlegender neuer Ansatz, bei dem jede Zeile vielfältigen Kontext wie Query-ID, Pod-Namen oder Versionsinformationen enthält, sodass alle Daten ohne Aggregation gespeichert werden
- Anders als bei Prometheus und ähnlichen Systemen sind dadurch tiefgehende Analysen und flexible Abfragen ohne Vorab-Aggregation, Label-Beschränkungen oder Sorgen vor Cardinality-Explosion möglich
- Indem benötigte Aggregationen erst zum Zeitpunkt der Analyse durchgeführt werden, lassen sich in Umgebungen mit großen Datenmengen Performance und Kosten zugleich optimieren
Datenvisualisierung und Flexibilität bei Abfragen
- ClickHouse lässt sich hervorragend mit Plotly, Jupyter notebook und anderen Tools integrieren, sodass sich verschiedenste Visualisierungswerkzeuge frei nutzen lassen
- Neben der schnellen Exploration mit HyperDX auf Lucene-Basis sind in ClickHouse selbst auch hochgradige Ursachenanalysen über komplexe relationale und bedingte Abfragen (SQL,
JOIN usw.) möglich
Zunahme verschiedener Datenquellen auf Basis von Wide Events
- kubenetmon: Open-Source-Tool zur Überwachung von Kubernetes-Netzwerken für L3/L4-Traffic, Verbindungen und Kostenanalysen
- Kubernetes Event Exporter: Nutzung eines Forks mit zusätzlichem ClickHouse-Sink zur Verfolgung von Zustandsänderungen in großen Clustern; Experimente mit vollständigen Objekt-Snapshots laufen
- Control Plane Data, RUM (Real User Monitoring), Istio Access Log und weitere Daten aus verschiedenen Schichten erweitern Interpretationsspielraum und Korrelationsanalysen deutlich
Betriebliche Überlegungen und künftige Ausrichtung
- SysEx kann während Abfragen in Logs und Metriken sichtbar werden, ist jedoch so entworfen, dass Speichergrenzen eingehalten und Auswirkungen bei Fehlern minimiert werden
- Zero-impact scraping: Es wird an einem vollständig entkoppelten Ansatz geforscht, der etwa eine S3-basierte plain rewritable disk nutzt und selbst die Auswirkungen auf den Cluster grundsätzlich eliminiert
- OTel bleibt für frühe Servicephasen und abnormale Zustände wichtig, etwa zur Sicherung von Logs; wenn sich der Zero-Impact-Ansatz stabilisiert, dürfte die Abhängigkeit davon jedoch weiter sinken
Weiterentwicklung und Nutzung des JSON-Typs in ClickHouse
- Der JSON-Typ ist nun offiziell als GA verfügbar und erlaubt dynamische Spaltenerzeugung pro Feld, Unterstützung mehrerer Typen und einen flexiblen Umgang selbst bei Schema-Explosion
- Da die Optimierung von JSON-Abfragen mit sehr vielen Spalten noch nicht vollständig ausgereift ist, werden parallele Speicherformen je nach Struktur eingesetzt und die Praxistauglichkeit des Map-Typs erneut bestätigt
- In Verbindung mit HyperDX lassen sich Map- und JSON-Felder automatisch extrahieren und analysieren; eine breitere Nutzung von JSON ist geplant
Fazit und kultureller Wandel
- LogHouse hat sich inzwischen von der Leistungsanalyse bis zum Echtzeit-Debugging als zentrale Observability-Plattform für den Betrieb von ClickHouse Cloud etabliert
- Kostensenkung war der Ausgangspunkt, doch mit maßgeschneiderten Werkzeugen wie SysEx, dem Zusammenspiel mit OTel und dem Ausbau einer flexiblen UI auf Basis von HyperDX findet ein technischer und kultureller Wandel statt
- Ein hochpräzises, großskaliges Datenmodell auf Basis von Wide Events schafft neuen Wert und höhere Effizienz für Engineering, Support und Datenanalyse gleichermaßen
- Auf Basis der Erfahrungen mit 100 PB und 500 Billionen Zeilen soll die Zukunft der Observability auch weiterhin aktiv mitgestaltet werden
1 Kommentare
Hacker-News-Kommentare
grepzu durchsuchen, ist praktisch unmöglich. Eine Log-Datenbank lässt sich horizontal skalieren, indem man einfach mehr Storage-Nodes und Speicherplatz hinzufügt