Esta imagen de Docker integral incluye todos los componentes open source de ClickStack:
- ClickHouse
- HyperDX
- colector de OpenTelemetry (OTel) (expone OTLP en los puertos
4317y4318) - MongoDB (para el estado persistente de la aplicación)
Esta opción incluye autenticación, lo que permite conservar dashboards, alertas y búsquedas guardadas entre sesiones y usuarios.
Ideal para
- Demos
- Pruebas locales de toda la pila
Pasos de despliegue
Desplegar con Docker
Esto iniciará un OpenTelemetry collector (en los puertos 4317 y 4318) y la UI de HyperDX (en el puerto 8080).
docker run -p 8080:8080 -p 4317:4317 -p 4318:4318 clickhouse/clickstack-all-in-one:latestIngestar datos
Para ingestar datos, consulte "Ingestar datos".
Persistencia de datos y configuración
Para conservar los datos y la configuración entre reinicios del contenedor, puede modificar el comando de Docker anterior para montar las rutas /data/db, /var/lib/clickhouse y /var/log/clickhouse-server. Por ejemplo:
# asegurarse de que los directorios existen
mkdir -p .volumes/db .volumes/ch_data .volumes/ch_logs
# modificar el comando para montar las rutas
docker run \
-p 8080:8080 \
-p 4317:4317 \
-p 4318:4318 \
-v "$(pwd)/.volumes/db:/data/db" \
-v "$(pwd)/.volumes/ch_data:/var/lib/clickhouse" \
-v "$(pwd)/.volumes/ch_logs:/var/log/clickhouse-server" \
clickhouse/clickstack-all-in-one:latestDespliegue en producción
Esta opción no debería desplegarse en producción por las siguientes razones:
- Almacenamiento no persistente: Todos los datos se almacenan mediante el sistema de archivos
overlaynativo de Docker. Esta configuración no ofrece un buen rendimiento a escala, y los datos se perderán si el contenedor se elimina o se reinicia, a menos que los usuarios monten las rutas de archivo necesarias. - Falta de aislamiento entre componentes: Todos los componentes se ejecutan dentro de un único contenedor de Docker. Esto impide el escalado y la monitorización independientes, y aplica cualquier límite de
cgroupde forma global a todos los procesos. Como resultado, los componentes pueden competir por la CPU y la memoria.
Personalizar puertos
Si necesitas personalizar los puertos de la aplicación (8080) o de la API (8000) en los que se ejecuta HyperDX Local, tendrás que modificar el comando docker run para redirigir los puertos correspondientes y configurar algunas variables de entorno.
Los puertos de OpenTelemetry se pueden personalizar simplemente modificando las opciones de redirección de puertos. Por ejemplo, sustituyendo -p 4318:4318 por -p 4999:4318 para cambiar el puerto HTTP de OpenTelemetry a 4999.
docker run -p 8080:8080 -p 4317:4317 -p 4999:4318 clickhouse/clickstack-all-in-one:latestUso con ClickHouse Cloud
Esta distribución puede utilizarse con ClickHouse Cloud. Aunque la instancia local de ClickHouse se seguirá desplegando (y se ignorará), el OTel collector puede configurarse para usar una instancia de ClickHouse Cloud estableciendo las variables de entorno CLICKHOUSE_ENDPOINT, CLICKHOUSE_USER y CLICKHOUSE_PASSWORD.
Por ejemplo:
export CLICKHOUSE_ENDPOINT=<HTTPS ENDPOINT>
export CLICKHOUSE_USER=<CLICKHOUSE_USER>
export CLICKHOUSE_PASSWORD=<CLICKHOUSE_PASSWORD>
docker run -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} -e CLICKHOUSE_USER=default -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} -p 8080:8080 -p 4317:4317 -p 4318:4318 clickhouse/clickstack-all-in-one:latestEl CLICKHOUSE_ENDPOINT debe ser el endpoint HTTPS de ClickHouse Cloud, incluido el puerto 8443, por ejemplo, https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443
Una vez conectado a la UI de HyperDX, vaya a Configuración del equipo y cree una conexión a su servicio de ClickHouse Cloud; después, cree las sources necesarias.
Configuración del OpenTelemetry collector
La configuración del OTel collector puede modificarse si es necesario; consulta "Modificación de la configuración".
Elección del esquema: Map vs JSON
ClickStack almacena los atributos como columnas Map(LowCardinality(String), String) de forma predeterminada. Este es el esquema recomendado para las cargas de trabajo de observabilidad. En combinación con la serialización de mapas por buckets y los índices de texto sobre las claves y los valores del mapa, ofrece lookups selectivos sin la sobrecarga de ingesta por clave de las subcolumnas JSON dinámicas.
También hay disponible, en fase beta, un esquema de tipo JSON para evaluarlo en cargas de trabajo con un conjunto pequeño y estable de claves de atributos. No se recomienda como opción predeterminada. Consulta Map vs tipo JSON para ver la comparación completa y las variables de entorno necesarias para habilitar la compatibilidad con JSON.
