Introduction
Pas seulement OpenTelemetryBien que nous recommandions d’utiliser le projet OpenTelemetry (OTel) pour la collecte de données, il est possible de mettre en place des architectures similaires avec d’autres frameworks et outils, par exemple Vector et Fluentd (voir un exemple avec Fluent Bit). D’autres outils de visualisation existent également, notamment Superset et Metabase.
Pourquoi utiliser ClickHouse ?
- Compression - Les données d’observabilité contiennent généralement des champs dont les valeurs appartiennent à un ensemble distinct, par exemple des codes HTTP ou des noms de service. Le stockage orienté colonnes de ClickHouse, dans lequel les valeurs sont stockées de façon triée, permet de compresser ces données de manière extrêmement efficace, surtout lorsqu’il est associé à une gamme de codecs spécialisés pour les données de séries temporelles. Contrairement à d’autres magasins de données, qui nécessitent un volume de stockage équivalent à la taille d’origine des données, généralement au format JSON, ClickHouse compresse en moyenne les logs et les traces jusqu’à 14x. Au-delà des économies de stockage significatives pour les grandes installations d’observabilité, cette compression contribue aussi à accélérer les requêtes, car moins de données doivent être lues sur le disque.
- Agrégations rapides - Les solutions d’observabilité reposent généralement largement sur la visualisation des données au moyen de graphiques, par exemple des courbes montrant les taux d’erreur ou des diagrammes en barres montrant les sources de trafic. Les agrégations, ou GROUP BY, sont essentielles au fonctionnement de ces graphiques, qui doivent également rester rapides et réactifs lors de l’application de filtres dans les workflows de diagnostic des incidents. Le format orienté colonnes de ClickHouse, associé à un moteur d’exécution vectorisée des requêtes, est idéal pour des agrégations rapides, tandis que l’indexation clairsemée permet de filtrer rapidement les données en réponse aux actions des utilisateurs.
- Scans linéaires rapides - Alors que les technologies alternatives s’appuient sur des index inversés pour interroger rapidement les logs, cela entraîne invariablement une forte utilisation du disque et des ressources. Bien que ClickHouse propose des index inversés comme type d’index optionnel supplémentaire, les scans linéaires sont fortement parallélisés et utilisent tous les cœurs disponibles sur une machine (sauf configuration contraire). Cela permet potentiellement de parcourir des dizaines de Go/s (compressés) pour rechercher des correspondances à l’aide d’opérateurs de correspondance de texte hautement optimisés.
- Familiarité avec SQL - SQL est le langage universel que tous les ingénieurs connaissent. Avec plus de 50 ans de développement, il s’est imposé comme le langage de facto pour l’analytique des données et reste le 3e langage de programmation le plus populaire. L’observabilité n’est qu’un autre problème de données pour lequel SQL est idéal.
- Fonctions analytiques - ClickHouse étend ANSI SQL avec des fonctions analytiques conçues pour rendre les requêtes SQL plus simples et plus faciles à écrire. Elles sont essentielles si vous effectuez une analyse des causes profondes, où les données doivent être examinées sous tous les angles.
- Index secondaires - ClickHouse prend en charge les index secondaires, tels que les filtres de Bloom, afin d’accélérer certains profils de requête. Ils peuvent être activés de manière optionnelle au niveau des colonnes, ce qui donne à l’utilisateur un contrôle précis et lui permet d’évaluer le compromis entre coût et performances.
- Open-source & standards ouverts - En tant que base de données open-source, ClickHouse s’appuie sur des standards ouverts tels qu’OpenTelemetry. La possibilité de contribuer et de participer activement aux projets est attrayante, tout en évitant les contraintes liées à l’enfermement propriétaire.
Quand faut-il utiliser ClickHouse pour l’observabilité ?
- Vous ou les membres de votre équipe maîtrisez SQL (ou souhaitez l’apprendre)
- Vous préférez vous appuyer sur des standards ouverts comme OpenTelemetry pour éviter l’enfermement propriétaire et gagner en extensibilité.
- Vous êtes prêt à faire fonctionner un écosystème porté par l’innovation open-source, de la collecte au stockage et à la visualisation.
- Vous prévoyez une montée en charge vers des volumes moyens à importants de données d’observabilité sous gestion (voire très importants)
- Vous voulez garder le contrôle du TCO (coût total de possession) et éviter que les coûts d’observabilité ne s’envolent.
- Vous ne pouvez pas, ou ne voulez pas, vous retrouver avec de faibles durées de rétention pour vos données d’observabilité simplement pour maîtriser les coûts.
- Apprendre SQL (ou en générer !) ne vous attire pas, vous ou les membres de votre équipe.
- Vous recherchez une solution d’observabilité packagée, de bout en bout.
- Le volume de vos données d’observabilité est trop faible pour faire une différence significative (par ex. <150 GiB) et ne devrait pas augmenter.
- Votre cas d’usage est fortement axé sur les métriques et nécessite PromQL. Dans ce cas, vous pouvez toujours utiliser ClickHouse pour les logs et le tracing aux côtés de Prometheus pour les métriques, en unifiant le tout dans la couche de présentation avec Grafana.
- Vous préférez attendre que l’écosystème gagne encore en maturité et que l’observabilité basée sur SQL devienne plus clé en main.
Logs et traces
- Logs - Les logs sont des enregistrements horodatés d’événements survenant au sein d’un système, qui capturent des informations détaillées sur différents aspects du fonctionnement des logiciels. Les données contenues dans les logs sont généralement non structurées ou semi-structurées et peuvent inclure des messages d’erreur, des journaux d’activité des utilisateurs, des modifications du système et d’autres événements. Les logs sont essentiels pour le dépannage, la détection d’anomalies et la compréhension des événements précis ayant conduit à des problèmes au sein du système.
- Traces - Les traces capturent le parcours des requêtes à travers les différents services d’un système distribué, en détaillant leur cheminement et leurs performances. Les données de traces sont très structurées et se composent de spans et de traces qui retracent chaque étape d’une requête, y compris les informations de timing. Les traces fournissent des informations précieuses sur les performances du système, en aidant à identifier les goulots d’étranglement, les problèmes de latence et à optimiser l’efficacité des microservices.
MétriquesBien que ClickHouse puisse être utilisé pour stocker des données de métriques, ce pilier est moins mature dans ClickHouse, la prise en charge de fonctionnalités telles que le format de données Prometheus et PromQL étant encore en attente.