Tous les composants de ClickStack Open Source sont distribués séparément sous forme d’images Docker distinctes :
- ClickHouse
- HyperDX
- collecteur OpenTelemetry (OTel)
- MongoDB
Ces images peuvent être combinées et déployées localement avec Docker Compose.
Docker Compose expose des ports supplémentaires pour l’observabilité et l’ingestion, selon la configuration par défaut de otel-collector :
13133: endpoint de contrôle d’état pour l’extensionhealth_check24225: récepteur Fluentd pour l’ingestion des logs4317: récepteur OTLP gRPC (standard pour les traces, les logs et les métriques)4318: récepteur OTLP HTTP (alternative à gRPC)8888: endpoint de métriques Prometheus pour superviser le collecteur lui-même
Ces ports permettent des intégrations avec diverses sources de télémétrie et rendent le collecteur OpenTelemetry prêt pour la production afin de répondre à des besoins d’ingestion variés.
Adapté aux cas suivants
- Tests en local
- Preuves de concept
- Déploiements en production où la tolérance aux pannes n'est pas requise et où un seul serveur suffit pour héberger l'ensemble des données ClickHouse
- Déploiement de ClickStack avec un hébergement séparé de ClickHouse, par exemple via ClickHouse Cloud.
Étapes de déploiement
Cloner le dépôt
Pour déployer avec Docker Compose, clonez le dépôt ClickStack, placez-vous dans le répertoire et exécutez docker-compose up :
git clone https://github.com/ClickHouse/ClickStack.git
docker compose upRenseigner les détails de connexion
Pour vous connecter à l’instance ClickHouse déployée, cliquez simplement sur Create et acceptez les paramètres par défaut.
Si vous préférez vous connecter à votre propre cluster ClickHouse externe, par exemple ClickHouse Cloud, vous pouvez saisir manuellement vos identifiants de connexion.
Si vous êtes invité à créer une source, conservez toutes les valeurs par défaut et renseignez le champ Table avec la valeur otel_logs. Tous les autres paramètres devraient être détectés automatiquement, ce qui vous permettra de cliquer sur Save New Source.

Modification des paramètres de Compose
Vous pouvez modifier les paramètres de la pile, comme la version utilisée, dans le fichier de variables d'environnement :
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=defaultConfigurer l'OpenTelemetry collector
La configuration de l'OTel collector peut être modifiée si nécessaire. Voir "Modification de la configuration".
Utilisation de ClickHouse Cloud
Cette distribution peut être utilisée avec ClickHouse Cloud, mais elle diffère de Managed ClickStack. Dans cette configuration, vous gérez vous-même l'UI de ClickStack tout en utilisant ClickHouse Cloud uniquement pour le calcul et le stockage. Sauf si vous avez une raison particulière d'exploiter l'UI séparément, nous vous recommandons d'utiliser Managed ClickStack, qui inclut une authentification intégrée et des fonctionnalités Enterprise supplémentaires, et vous évite d'avoir à gérer vous-même l'UI de ClickStack.
Vous devez :
-
Supprimer le service ClickHouse du fichier
docker-compose.yml. Cette étape est facultative à des fins de test, car l'instance ClickHouse déployée sera simplement ignorée, même si elle gaspillera des ressources locales. Si vous supprimez le service, assurez-vous également de supprimer toute référence à celui-ci, commedepends_on. -
Modifier l'OTel collector pour utiliser une instance ClickHouse Cloud en définissant les variables d'environnement
CLICKHOUSE_ENDPOINT,CLICKHOUSE_USERetCLICKHOUSE_PASSWORDdans le fichier compose. Plus précisément, ajoutez ces variables d'environnement au service OTel collector :otel-collector: image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} environment: CLICKHOUSE_ENDPOINT: '<CLICKHOUSE_ENDPOINT>' # endpoint HTTPS ici 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' # extension health_check - '24225:24225' # récepteur Fluentd - '4317:4317' # récepteur OTLP gRPC - '4318:4318' # récepteur OTLP HTTP - '8888:8888' # extension de métriques restart: always networks: - internalCLICKHOUSE_ENDPOINTdoit être l'endpoint HTTPS de ClickHouse Cloud, y compris le port8443, par exemplehttps://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443 -
Lorsque vous vous connectez à l'UI de HyperDX et créez une connexion à ClickHouse, utilisez vos identifiants Cloud.
Choix du schéma : Map vs JSON
Par défaut, ClickStack stocke les attributs dans des colonnes Map(LowCardinality(String), String). Il s’agit du schéma recommandé pour les charges de travail d’observabilité. Associé à la sérialisation de map compartimentée et à des index textuels sur les clés et les valeurs de la map, il permet des recherches sélectives sans la surcharge d’ingestion par clé propre aux sous-colonnes JSON dynamiques.
Un schéma de type JSON est disponible en bêta pour évaluation sur des charges de travail avec un ensemble réduit et stable de clés d’attributs. Il n’est pas recommandé par défaut. Consultez Map vs JSON type pour la comparaison complète et les variables d’environnement requises pour activer la prise en charge de JSON.
