Introducción
No solo OpenTelemetryAunque recomendamos usar el proyecto OpenTelemetry (OTel) para la recopilación de datos, también pueden crearse arquitecturas similares con otros frameworks y herramientas, como Vector y Fluentd (consulta un ejemplo con Fluent Bit). También existen herramientas de visualización alternativas, como Superset y Metabase.
¿Por qué usar ClickHouse?
- Compresión - Los datos de observabilidad suelen contener campos cuyos valores proceden de un conjunto limitado, por ejemplo, códigos HTTP o nombres de servicios. El almacenamiento orientado a columnas de ClickHouse, donde los valores se guardan ordenados, hace que estos datos se compriman extraordinariamente bien, especialmente cuando se combina con una gama de códecs especializados para datos de series temporales. A diferencia de otros almacenes de datos, que requieren tanto almacenamiento como el tamaño original de los datos, normalmente en formato JSON, ClickHouse comprime logs y trazas, de media, hasta 14 veces. Además de proporcionar un ahorro significativo de almacenamiento en instalaciones de observabilidad de gran tamaño, esta compresión también ayuda a acelerar las consultas, ya que es necesario leer menos datos del disco.
- Agregaciones rápidas - Las soluciones de observabilidad suelen basarse en gran medida en la visualización de datos mediante gráficos, por ejemplo, líneas que muestran tasas de error o gráficos de barras que muestran fuentes de tráfico. Las agregaciones, o GROUP BY, son fundamentales para generar estos gráficos, que además deben ser rápidos y responder con agilidad al aplicar filtros en flujos de trabajo de diagnóstico de incidencias. El formato orientado a columnas de ClickHouse, combinado con un motor de ejecución vectorizada de consultas, resulta ideal para agregaciones rápidas, y la indexación dispersa permite filtrar datos con rapidez en respuesta a las acciones del usuario.
- Escaneos lineales rápidos - Aunque las tecnologías alternativas dependen de índices invertidos para consultar logs rápidamente, esto se traduce invariablemente en un elevado consumo de disco y de recursos. Aunque ClickHouse ofrece índices invertidos como un tipo de índice opcional adicional, los escaneos lineales están altamente paralelizados y aprovechan todos los núcleos disponibles de una máquina (a menos que se configure lo contrario). Esto permite potencialmente escanear decenas de GB/s (comprimidos) en busca de coincidencias con operadores de coincidencia de texto altamente optimizados.
- Familiaridad de SQL - SQL es el lenguaje ubicuo que todos los ingenieros conocen. Con más de 50 años de desarrollo, ha demostrado ser el lenguaje de facto para el análisis de datos y sigue siendo el tercer lenguaje de programación más popular. La observabilidad no es más que otro problema de datos para el que SQL resulta ideal.
- Funciones analíticas - ClickHouse amplía ANSI SQL con funciones analíticas diseñadas para que las consultas SQL sean más simples y fáciles de escribir. Estas son esenciales si se realiza un análisis de causa raíz en el que los datos deben examinarse desde múltiples ángulos.
- Índices secundarios - ClickHouse admite índices secundarios, como los bloom filters, para acelerar perfiles de consulta específicos. Estos pueden habilitarse opcionalmente a nivel de columna, lo que proporciona al usuario un control granular y le permite evaluar la relación entre coste y rendimiento.
- Código abierto y estándares abiertos - Como base de datos de código abierto, ClickHouse adopta estándares abiertos como OpenTelemetry. La posibilidad de contribuir y participar activamente en los proyectos resulta atractiva, al tiempo que evita los desafíos del vendor lock-in.
Cuándo deberías usar ClickHouse para observabilidad
- Tú o los miembros de tu equipo están familiarizados con SQL (o quieren aprenderlo)
- Prefieres ajustarte a estándares abiertos como OpenTelemetry para evitar la dependencia de un proveedor y lograr extensibilidad.
- Estás dispuesto a operar un ecosistema impulsado por la innovación de código abierto, desde la recopilación hasta el almacenamiento y la visualización.
- Prevés cierto crecimiento hacia volúmenes medianos o grandes de datos de observabilidad gestionados (o incluso volúmenes muy grandes)
- Quieres mantener el control del TCO (coste total de propiedad) y evitar que los costes de observabilidad se disparen.
- No puedes o no quieres verte limitado a periodos cortos de retención de datos de observabilidad solo para controlar los costes.
- Aprender SQL (¡o generarlo!) no te resulta atractivo a ti o a los miembros de tu equipo.
- Buscas una solución de observabilidad integral y lista para usar.
- Tus volúmenes de datos de observabilidad son demasiado pequeños como para marcar una diferencia significativa (p. ej., <150 GiB) y no se prevé que crezcan.
- Tu caso de uso está muy centrado en métricas y necesita PromQL. En ese caso, aún puedes usar ClickHouse para logs y trazado junto con Prometheus para métricas, y unificarlo en la capa de presentación con Grafana.
- Prefieres esperar a que el ecosistema madure más y a que la observabilidad basada en SQL sea más lista para usar.
Logs y trazas
- Logs - Los logs son registros de eventos con marca de tiempo que se producen dentro de un sistema y capturan información detallada sobre distintos aspectos del funcionamiento del software. Los datos de los logs suelen ser no estructurados o semiestructurados, y pueden incluir mensajes de error, logs de actividad de usuarios, cambios en el sistema y otros eventos. Los logs son fundamentales para la resolución de problemas, la detección de anomalías y la comprensión de los eventos concretos que preceden a los problemas dentro del sistema.
- Trazas - Las trazas capturan el recorrido de las solicitudes a medida que atraviesan distintos servicios en un sistema distribuido, y detallan la ruta y el rendimiento de dichas solicitudes. Los datos de las trazas están muy estructurados y constan de spans y trazas que describen cada paso que sigue una solicitud, incluida la información temporal. Las trazas aportan información valiosa sobre el rendimiento del sistema, ayudan a identificar cuellos de botella y problemas de latencia, y permiten optimizar la eficiencia de los microservicios.
MétricasAunque ClickHouse puede usarse para almacenar datos de métricas, este pilar está menos desarrollado en ClickHouse, ya que todavía está pendiente la compatibilidad con funciones como el formato de datos de Prometheus y PromQL.