- LogHouse est passé en un an de 19 PiB à plus de 100 PB de données de logs traitées, atteignant près de 500 mille milliards de lignes
- En raison des limites de traitement et des inefficacités d’OpenTelemetry (OTel), la plateforme a basculé vers un pipeline sur mesure (SysEx) adapté à ses systèmes centraux
- Cette transition a permis de multiplier par 20 le débit d’événements tout en maintenant l’utilisation CPU sous les 10 %
- L’adoption de HyperDX et ClickStack de ClickHouse a permis d’unifier l’UI et les données, d’assouplir la gestion des schémas et de construire un environnement puissant d’exploration des données
- Avec l’adoption d’un modèle wide events et à haute cardinalité, il est devenu possible de stocker et d’analyser tous les événements sans pré-agrégation
Contexte et évolution
- LogHouse, la plateforme interne de journalisation de ClickHouse Cloud, est devenue en un an un système de grande ampleur, passant de 19 PiB à plus de 100 PB de données, et de 37 mille milliards à près de 500 mille milliards de lignes
- Au départ, toute la télémétrie était collectée via OpenTelemetry (OTel), mais dans un environnement à très grand volume, les problèmes de performances, de limites de ressources, ainsi que de gaspillage CPU et de perte de données lors des transformations sont devenus évidents
Limites d’OTel et raisons de l’adoption d’un pipeline sur mesure
- Dans le pipeline OTel, les logs étaient convertis en JSON puis remappés au format OTel, avec plusieurs cycles de transformation et de marshalling, ce qui rendait l’ensemble extrêmement inefficace
- En pratique, traiter 20 millions de lignes par seconde avec une architecture basée sur OTel nécessitait environ 8 000 cœurs CPU
- Lors des pics de trafic, le Collector se retrouvait surchargé et provoquait des pertes de logs, laissant une partie des données non collectée
Adoption de SysEx et architecture
- SysEx (System Tables Exporter) transfère directement vers LogHouse les données issues des system tables de ClickHouse, dans leur type d’origine et sans transformation
- La collecte distribuée via une structure en anneau de hachage, ainsi qu’un buffer à délai temporel et une fenêtre glissante, permettent d’éviter les pertes de données et de respecter les SLA internes
- Grâce à Go et à des fonctionnalités personnalisées du client ClickHouse, un transfert byte-to-byte est possible sans marshalling des données
- Pour gérer la variabilité des schémas, la plateforme utilise un hash de schéma et une gestion dynamique des schémas, puis agrège plusieurs versions de schéma dans une seule vue logique via le Merge table engine
- La collecte de tables mémoire basée sur des snapshots permet aussi de prendre en charge des diagnostics et analyses avancés
Améliorations de performance et d’efficacité
- Avec SysEx, là où OTel Collector traite 2 millions de logs par seconde avec 800 CPU, SysEx peut traiter 37 millions de logs avec 70 CPU
- Ce gain d’efficacité réduit fortement la consommation de ressources, évite les pertes d’événements et permet un fonctionnement en temps réel
Le rôle toujours actif d’OTel
- OTel reste essentiel comme standard et plateforme neutre vis-à-vis des fournisseurs, notamment en cas de panne de service ou d’état anormal
- Il permet toujours de capturer les logs dans les situations de crash ou d’anomalie que SysEx ne peut pas traiter
- Actuellement, seuls les logs au-dessus du niveau trace sont supprimés, et seuls ceux au niveau info et au-dessus sont collectés afin d’optimiser les ressources
Intégration UI avec HyperDX et ClickStack
- L’ancienne UI personnalisée sur Grafana est progressivement remplacée par une UI native ClickHouse basée sur HyperDX
- HyperDX est indépendant du schéma, prend en charge les requêtes Lucene ainsi que SQL, et offre une compatibilité complète avec la grande variété de types de données de ClickHouse
- Des structures de tables variées ainsi que des données issues d’exporters personnalisés peuvent être intégrées sans modification de l’UI
- Grafana continue de prendre en charge les métriques basées sur Prometheus et les tableaux de bord fixes, les deux solutions étant utilisées de manière complémentaire
Adoption du modèle wide events et haute cardinalité
- Les wide events incluent dans chaque ligne divers éléments de contexte comme l’ID de requête, le nom du Pod ou les informations de version, ce qui permet de stocker toutes les données sans agrégation
- Contrairement à Prometheus et à d’autres approches, ce modèle permet des analyses approfondies et des requêtes flexibles sans pré-agrégation, sans limites sur les labels et sans crainte d’explosion de cardinalité
- En effectuant les agrégations au moment de l’analyse, il devient possible de préserver à la fois les performances et les coûts même à grande échelle
Visualisation des données et flexibilité des requêtes
- ClickHouse s’intègre très bien avec Plotly, Jupyter notebook et d’autres outils de visualisation, ce qui permet d’exploiter librement plusieurs interfaces
- Au-delà de l’exploration rapide offerte par HyperDX sur base Lucene, des analyses causales avancées via des requêtes complexes et relationnelles (SQL, JOIN, etc.) peuvent être réalisées directement dans ClickHouse
Multiplication des sources de données basées sur les wide events
- kubenetmon : outil open source de supervision réseau Kubernetes, pour l’analyse du trafic L3/L4, des connexions et des coûts
- Kubernetes Event Exporter : utilisation d’un fork avec ajout d’un sink ClickHouse, pour suivre les changements d’état dans de grands clusters, avec expérimentation en cours sur des snapshots complets d’objets
- Control Plane Data, RUM (Real User Monitoring), Istio Access Log et d’autres couches de données renforcent fortement le périmètre d’interprétation et les capacités de corrélation
Considérations d’exploitation et orientations futures
- SysEx peut apparaître dans les logs et métriques pendant les requêtes, mais son architecture est conçue pour minimiser l’impact grâce à des limites mémoire et à une isolation des erreurs
- Zero-impact scraping : des recherches sont en cours sur une architecture totalement découplée, par exemple via un plain rewritable disk basé sur S3, afin d’éliminer à la racine tout impact sur le cluster
- OTel reste important pour récupérer les logs au démarrage des services et dans les états anormaux, mais sa dépendance devrait encore diminuer si l’approche zero-impact se stabilise
Évolution et usage du type JSON de ClickHouse
- Le type JSON est désormais disponible en GA, avec génération dynamique de colonnes par champ, prise en charge de plusieurs types et bonne souplesse face à l’explosion des schémas
- Les performances ne sont pas encore parfaitement optimisées pour les requêtes JSON comportant un grand nombre de colonnes ; la plateforme affine donc son approche avec du stockage parallèle selon les formes de données et une réévaluation de l’utilité pratique du type Map
- L’intégration avec HyperDX permet l’extraction et l’analyse automatiques des champs Map et JSON, avec un recours plus large au JSON prévu à l’avenir
Conclusion et changement culturel
- LogHouse s’est désormais imposé comme la plateforme centrale d’observabilité des opérations de ClickHouse Cloud, de l’analyse de performance au débogage en temps réel
- La réduction des coûts a été le point de départ, mais avec des outils sur mesure comme SysEx, une articulation avec OTel, et l’extension d’une UI flexible fondée sur HyperDX, l’entreprise vit une transition à la fois technique et culturelle
- Ce modèle de données basé sur des wide events à grande échelle et haute précision apporte de nouvelles sources de valeur et d’efficacité à l’ingénierie, au support et à l’analyse de données
- À l’avenir, l’objectif est de continuer à faire progresser l’observabilité en s’appuyant sur l’expérience acquise à l’échelle de 100 PB et de 500 mille milliards de lignes
1 commentaires
Commentaires Hacker News
grepdans 100 PB de fichiers json est irréaliste. Une base de logs peut monter en charge horizontalement en ajoutant simplement des nœuds et du stockage