Docker Compose
所有 ClickStack 开源组件都以单独的 Docker 镜像形式发布:
- ClickHouse
- HyperDX
- OpenTelemetry (OTel) collector
- MongoDB
可以通过 Docker Compose 将这些镜像组合并在本地部署。
基于默认的 otel-collector 配置,Docker Compose 会暴露额外的端口,用于可观测性和数据摄取:
13133:health_check扩展的健康检查端点24225:用于日志摄取的 Fluentd 接收器4317:OTLP gRPC 接收器(用于跟踪、日志和指标的标准端口)4318:OTLP HTTP 接收器(gRPC 的替代方案)8888:用于监控 collector 本身的 Prometheus 指标端点
这些端口支持与多种遥测源集成,使 OpenTelemetry collector 在生产环境中能够满足多样化的数据摄取需求。
适用场景
- 本地测试
- 概念验证
- 不需要容错能力且单台服务器足以承载全部 ClickHouse 数据的生产部署
- 部署 ClickStack,但将 ClickHouse 独立托管(例如使用 ClickHouse Cloud)时
部署步骤
访问 HyperDX UI
访问 http://localhost:8080 打开 HyperDX UI。
创建一个用户,并提供满足要求的用户名和密码。
点击 Create 后,将为通过 Docker Compose 部署的 ClickHouse 实例创建数据源。
可以覆盖与集成 ClickHouse 实例的默认连接配置。详情请参阅 "Using ClickHouse Cloud"。

有关使用其他 ClickHouse 实例的示例,请参阅 "Using ClickHouse Cloud"。
完成连接配置
要连接到已部署的 ClickHouse 实例,只需单击 Create 并接受默认设置即可。
如果希望连接到自己的外部 ClickHouse 集群(例如 ClickHouse Cloud),可以手动输入连接凭证。
如果系统提示创建数据源,请保留所有默认值,并将 Table 字段填写为 otel_logs。其他所有设置应会自动检测,此时可以点击 Save New Source。

修改 compose 设置
你可以通过环境变量文件来修改该栈的配置,例如所使用的版本:
配置 OpenTelemetry collector
如有需要,可以修改 OTel collector 的配置——参见“修改配置”。
使用 ClickHouse Cloud
此发行版可以与 ClickHouse Cloud 一起使用,但它与托管 ClickStack不同。在此部署场景下,你自行管理 ClickStack UI,而 ClickHouse Cloud 仅用于计算和存储。除非你有特定原因需要独立运行 UI,否则我们推荐使用托管 ClickStack,它集成了身份认证和其他企业级功能,并且无需你自行管理 ClickStack UI。
你需要:
-
从
docker-compose.yml文件中移除 ClickHouse 服务。如果只是测试,这是可选的,因为已部署的 ClickHouse 实例虽然会被忽略,但会浪费本地资源。如果移除该服务,请确保同时删除所有对该服务的引用,例如depends_on。 -
修改 OTel collector 以使用 ClickHouse Cloud 实例,在 compose 文件中设置环境变量
CLICKHOUSE_ENDPOINT、CLICKHOUSE_USER和CLICKHOUSE_PASSWORD。具体来说,将这些环境变量添加到 OTel collector 服务中:CLICKHOUSE_ENDPOINT应为 ClickHouse Cloud 的 HTTPS endpoint,并包含端口8443,例如:https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443 -
在连接到 HyperDX UI 并创建到 ClickHouse 的连接时,使用你的 Cloud 凭证。
schema 选择:Map 与 JSON
默认情况下,ClickStack 将属性存储为 Map(LowCardinality(String), String) 列。这是可观测性工作负载的推荐 schema。结合分桶化 Map 序列化以及 Map 键和值上的文本索引,它可以实现有选择的查找,而无需承担动态 JSON 子列为每个键带来的额外摄取开销。
JSON 类型的 schema 提供 Beta 版本,可用于评估属性键集合较小且稳定的工作负载。不建议将其作为默认选项。有关完整对比以及启用 JSON 支持所需的环境变量,请参见 Map 与 JSON 类型。