Todos los componentes de ClickStack Open Source se distribuyen por separado como imágenes de Docker individuales:
- ClickHouse
- HyperDX
- OpenTelemetry collector (OTel)
- MongoDB
Estas imágenes pueden combinarse y desplegarse localmente con Docker Compose.
Docker Compose expone puertos adicionales para observabilidad e ingestión según la configuración predeterminada de otel-collector:
13133: endpoint de comprobación de estado para la extensiónhealth_check24225: receptor de Fluentd para la ingestión de logs4317: receptor OTLP gRPC (estándar para trazas, logs y métricas)4318: receptor OTLP HTTP (alternativa a gRPC)8888: endpoint de métricas de Prometheus para supervisar el propio OpenTelemetry collector
Estos puertos permiten integraciones con diversas fuentes de telemetría y hacen que el OpenTelemetry collector esté listo para producción para distintas necesidades de ingestión.
Adecuado para
- Pruebas locales
- Pruebas de concepto
- Implementaciones en producción en las que no se requiere tolerancia a fallos y un solo servidor basta para alojar todos los datos de ClickHouse
- Al implementar ClickStack, pero alojando ClickHouse por separado; por ejemplo, con ClickHouse Cloud.
Pasos de despliegue
Clona el repositorio
Para desplegar con Docker Compose, clona el repositorio de ClickStack, sitúate en el directorio y ejecuta docker-compose up:
git clone https://github.com/ClickHouse/ClickStack.git
docker compose upCompleta los detalles de conexión
Para conectarte a la instancia de ClickHouse desplegada, solo tienes que hacer clic en Create y aceptar la configuración predeterminada.
Si prefieres conectarte a tu propio clúster externo de ClickHouse, por ejemplo, ClickHouse Cloud, puedes introducir manualmente tus credenciales de conexión.
Si se te solicita crear una fuente, conserva todos los valores predeterminados y completa el campo Table con el valor otel_logs. El resto de la configuración debería detectarse automáticamente, por lo que podrás hacer clic en Save New Source.

Modificar la configuración de compose
Puede modificar la configuración de la pila, como la versión utilizada, mediante el archivo de variables de entorno:
user@example-host clickstack % cat .env
# Used by docker-compose.yml
IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one
LOCAL_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-local
ALL_IN_ONE_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one
OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-otel-collector
CODE_VERSION=2.8.0
IMAGE_VERSION_SUB_TAG=.8.0
IMAGE_VERSION=2
IMAGE_NIGHTLY_TAG=2-nightly
IMAGE_LATEST_TAG=latest
# Set up domain URLs
HYPERDX_API_PORT=8000 #optional (should not be taken by other services)
HYPERDX_APP_PORT=8080
HYPERDX_APP_URL=http://localhost
HYPERDX_LOG_LEVEL=debug
HYPERDX_OPAMP_PORT=4320
# Otel/ClickHouse config
HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=defaultConfiguración del OpenTelemetry collector
La configuración del OTel collector puede modificarse si es necesario; consulta "Modificar la configuración".
Uso de ClickHouse Cloud
Esta distribución puede utilizarse con ClickHouse Cloud, pero es diferente de Managed ClickStack. En esta configuración, administras tú mismo la UI de ClickStack mientras usas ClickHouse Cloud solo para compute y Storage. Salvo que tengas un motivo concreto para operar la UI de forma independiente, te recomendamos usar Managed ClickStack, que incluye authentication integrada y funciones Enterprise adicionales, y evita que tengas que administrar tú mismo la UI de ClickStack.
Debes:
-
Eliminar el servicio de ClickHouse del archivo
docker-compose.yml. Esto es opcional si estás haciendo pruebas, ya que la instancia de ClickHouse implementada simplemente se ignorará, aunque consumirá recursos locales innecesariamente. Si eliminas el servicio, asegúrate de quitar también cualquier referencia a él, comodepends_on. -
Modificar el OTel collector para que use una instancia de ClickHouse Cloud configurando las variables de entorno
CLICKHOUSE_ENDPOINT,CLICKHOUSE_USERyCLICKHOUSE_PASSWORDen el archivo compose. En concreto, añade las variables de entorno al servicio OTel collector:otel-collector: image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} environment: CLICKHOUSE_ENDPOINT: '<CLICKHOUSE_ENDPOINT>' # endpoint HTTPS aquí CLICKHOUSE_USER: '<CLICKHOUSE_USER>' CLICKHOUSE_PASSWORD: '<CLICKHOUSE_PASSWORD>' HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE: ${HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE} HYPERDX_LOG_LEVEL: ${HYPERDX_LOG_LEVEL} OPAMP_SERVER_URL: 'http://app:${HYPERDX_OPAMP_PORT}' ports: - '13133:13133' # extensión health_check - '24225:24225' # receptor Fluentd - '4317:4317' # receptor OTLP gRPC - '4318:4318' # receptor OTLP HTTP - '8888:8888' # extensión de métricas restart: always networks: - internalCLICKHOUSE_ENDPOINTdebe ser el endpoint HTTPS de ClickHouse Cloud, incluido el puerto8443; por ejemplo,https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443 -
Al conectarte a la UI de HyperDX y crear una connection a ClickHouse, usa tus credentials de Cloud.
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.
