ClickStack のオープンソースコンポーネントは、すべて個別の Dockerイメージとしてそれぞれ配布されています。
- ClickHouse
- HyperDX
- OpenTelemetry (OTel) collector
- MongoDB
これらのイメージは、Docker Compose を使ってローカル環境で組み合わせてデプロイできます。
Docker Compose では、デフォルトの otel-collector セットアップに基づいて、オブザーバビリティとインジェスト用の追加ポートが公開されます。
13133:health_check拡張機能用のヘルスチェックエンドポイント24225: ログのインジェスト用 Fluentd receiver4317: OTLP gRPC receiver (トレース、ログ、メトリクスの標準)4318: OTLP HTTP receiver (gRPC の代替)8888: collector 自体を監視するための Prometheus メトリクスエンドポイント
これらのポートにより、さまざまなテレメトリーソースとのインテグレーションが可能になり、多様なインジェスト要件に対応できる本番運用向けの OpenTelemetry collector を利用できます。
適した用途
- ローカルテスト
- PoC (概念実証)
- 耐障害性が不要で、単一のサーバーですべてのClickHouseデータをホストできる本番デプロイメント
- ClickStackをデプロイし、ClickHouseは別途ホストする場合 (例: ClickHouse Cloud を使用する場合) 。
デプロイ手順
リポジトリをクローンする
Docker Compose でデプロイするには、ClickStack リポジトリをクローンし、そのディレクトリに移動して docker-compose up を実行します。
git clone https://github.com/ClickHouse/ClickStack.git
docker compose up接続情報を入力する
デプロイした ClickHouse インスタンスに接続するには、Create をクリックしてデフォルト設定をそのまま使用します。
独自の外部 ClickHouse クラスター (例: ClickHouse Cloud) に接続する場合は、接続認証情報を手動で入力できます。
ログソースの作成を求められた場合は、すべてのデフォルト値をそのまま使用し、Table フィールドに otel_logs を入力してください。その他の設定は自動検出されるため、Save New Source をクリックできます。

compose の設定変更
使用するバージョンなど、スタックの設定は環境変数ファイルで変更できます。
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=defaultOpenTelemetry collector の設定
必要に応じて、OTel collector の設定を変更できます。詳しくは、"設定の変更"を参照してください。
Using ClickHouse Cloud
このディストリビューションは ClickHouse Cloud と組み合わせて使用できますが、Managed ClickStack とは異なります。この構成では、コンピュートとストレージには ClickHouse Cloud のみを使用し、ClickStack UI は自分で管理します。UI を個別に運用する明確な理由がない限り、認証が統合され、追加のエンタープライズ機能も利用でき、ClickStack UI を自分で管理する必要がなくなる Managed ClickStack の利用を推奨します。
次の対応を行ってください。
-
docker-compose.ymlファイルから ClickHouse service を削除します。テスト目的であれば、これは任意です。デプロイされた ClickHouse インスタンスは単に無視されるだけだからです。ただし、ローカルリソースを無駄に消費します。service を削除する場合は、depends_onなど、その service への参照も必ず削除してください。 -
compose ファイルで環境変数
CLICKHOUSE_ENDPOINT、CLICKHOUSE_USER、CLICKHOUSE_PASSWORDを設定し、OTel collector が ClickHouse Cloud インスタンスを使用するように変更します。具体的には、OTel collector service に次の環境変数を追加します。otel-collector: image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} environment: CLICKHOUSE_ENDPOINT: '<CLICKHOUSE_ENDPOINT>' # ここに HTTPS endpoint 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' # health_check 拡張機能 - '24225:24225' # fluentd receiver - '4317:4317' # OTLP gRPC receiver - '4318:4318' # OTLP http receiver - '8888:8888' # metrics 拡張機能 restart: always networks: - internalCLICKHOUSE_ENDPOINTには、ポート8443を含む ClickHouse Cloud の HTTPS endpoint を指定する必要があります。例:https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443 -
HyperDX UI に接続して ClickHouse への connection を作成する際は、Cloud の credentials を使用します。
スキーマの選択: Map と JSON
ClickStack は、デフォルトで属性を Map(LowCardinality(String), String) カラムとして保存します。これは、オブザーバビリティのワークロードに推奨されるスキーマです。bucketed map serialization と、Map のキーおよび値に対するテキスト索引を組み合わせることで、動的な JSON サブカラムのようにキーごとの取り込みオーバーヘッドを発生させることなく、必要なルックアップだけを効率的に実行できます。
JSON 型のスキーマは、属性キーの集合が小さく安定しているワークロードで評価するためのベータ機能として利用できます。これはデフォルトとしては推奨されません。詳しい比較と、JSON サポートを有効にするために必要な環境変数については、Map と JSON 型の比較 を参照してください。
