- ClickHouse
- HyperDX
- OpenTelemetry (OTel) collector
- MongoDB
otel-collector セットアップに基づいて、オブザーバビリティとインジェスト用の追加ポートが公開されます。
13133:health_check拡張機能用のヘルスチェックエンドポイント24225: ログのインジェスト用 Fluentd receiver4317: OTLP gRPC receiver (トレース、ログ、メトリクスの標準)4318: OTLP HTTP receiver (gRPC の代替)8888: collector 自体を監視するための Prometheus メトリクスエンドポイント
適した用途
- ローカルテスト
- PoC (概念実証)
- 耐障害性が不要で、単一のサーバーですべてのClickHouseデータをホストできる本番デプロイメント
- ClickStackをデプロイし、ClickHouseは別途ホストする場合 (例: ClickHouse Cloud を使用する場合) 。
デプロイ手順
リポジトリをクローンする
Docker Compose でデプロイするには、ClickStack リポジトリをクローンし、そのディレクトリに移動してdocker-compose up を実行します。HyperDX UI を開く
HyperDX UI にアクセスするには、http://localhost:8080 を開きます。要件を満たすユーザー名とパスワードを入力して、ユーザーを作成します。Create をクリックすると、Docker Compose でデプロイした ClickHouse インスタンス用のデータソースが作成されます。デフォルト接続の上書き統合された ClickHouse インスタンスへのデフォルト接続は上書きできます。詳細は、“Using ClickHouse Cloud” を参照してください。
接続情報を入力する
デプロイした ClickHouse インスタンスに接続するには、Create をクリックしてデフォルト設定をそのまま使用します。独自の外部 ClickHouse クラスター (例: ClickHouse Cloud) に接続する場合は、接続認証情報を手動で入力できます。ログソースの作成を求められた場合は、すべてのデフォルト値をそのまま使用し、Table フィールドに otel_logs を入力してください。その他の設定は自動検出されるため、Save New Source をクリックできます。compose の設定変更
OpenTelemetry collector の設定
Using ClickHouse Cloud
-
docker-compose.ymlファイルから ClickHouse service を削除します。テスト目的であれば、これは任意です。デプロイされた ClickHouse インスタンスは単に無視されるだけだからです。ただし、ローカルリソースを無駄に消費します。service を削除する場合は、depends_onなど、その service への参照も必ず削除してください。 -
compose ファイルで環境変数
CLICKHOUSE_ENDPOINT、CLICKHOUSE_USER、CLICKHOUSE_PASSWORDを設定し、OTel collector が ClickHouse Cloud インスタンスを使用するように変更します。具体的には、OTel collector service に次の環境変数を追加します。CLICKHOUSE_ENDPOINTには、ポート8443を含む ClickHouse Cloud の HTTPS endpoint を指定する必要があります。例:https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443 - HyperDX UI に接続して ClickHouse への connection を作成する際は、Cloud の credentials を使用します。
スキーマの選択: Map と JSON
Map(LowCardinality(String), String) カラムとして保存します。これは、オブザーバビリティのワークロードに推奨されるスキーマです。bucketed map serialization と、Map のキーおよび値に対するテキスト索引を組み合わせることで、動的な JSON サブカラムのようにキーごとの取り込みオーバーヘッドを発生させることなく、必要なルックアップだけを効率的に実行できます。
JSON 型のスキーマは、属性キーの集合が小さく安定しているワークロードで評価するためのベータ機能として利用できます。これはデフォルトとしては推奨されません。詳しい比較と、JSON サポートを有効にするために必要な環境変数については、Map と JSON 型の比較 を参照してください。