Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Docker Compose

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’extension health_check
  • 24225 : récepteur Fluentd pour l’ingestion des logs
  • 4317 : 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 up

Renseigner 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.

Créer une source de logs

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=default

Configurer 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, comme depends_on.

  • Modifier l'OTel collector pour utiliser une instance ClickHouse Cloud en définissant les variables d'environnement CLICKHOUSE_ENDPOINT, CLICKHOUSE_USER et CLICKHOUSE_PASSWORD dans 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:
          - internal

    CLICKHOUSE_ENDPOINT doit être l'endpoint HTTPS de ClickHouse Cloud, y compris le port 8443, par exemple https://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.

Navigation